OpenCV-Python学习教程.2

如果你用Linux得设备,可能会用到这里来看有没有设备被安全挂载。因为没有一个图形化的页面来方便的查看。

子Linux不是太好使


# 获取视频帧的宽w = fcap.get(cv2.CAP_PROP_FRAME_WIDTH)# 获取视频帧的高h = fcap.get(cv2.CAP_PROP_FRAME_HEIGHT)# 获取视频帧的帧率fps = fcap.get(cv2.CAP_PROP_FPS)

对于一个视频来说,这三个量是必要的。其实有一些视频的设备是返回不来这些个值得

对于我们单帧得读取照片来说接口就是这个样子得

ret就是return得意思,其实这个返回值是可以自己写得

ret只不过是我们约定俗成得而已


该接口会返回两个参数,第一个参数是读取成功与否标志位,成功为True否则为False,第二个参数则为具体的帧数据,其是一个numpy.ndarray的数组。

对于视频流可能会失败得读取一帧,可以写这样得循环来保证读取成功

这里推荐一个路径补全的插件

很方便的自动补全

import cv2import numpy
img = cv2.imread('./img/111.jpg', 0)cv2.imshow('img', img)cv2.waitKey(1)

注意一定要有后面的waitkey参数,不然一闪而过

读取图片,第二个参数0是灰色,1是彩色

然后会返回一个负值

cv2.imread()的函数原型为Mat imread( const string& filename, int flags=1 ),其中Mat为Opencv最重要的数据结构,它在Opencv中被定义为一个类,它通过把图像视为一个矩阵来存储数据。

这个是Mat的类型,C++里面的mat类型


在cv2.imread()中,它有两个形参,首先是图像的文件名(索引地址),第二个参数flags用于指定以什么样的格式来读取图像,它的取值有以下几种情况:

  (1)flags=1,这也是默认情况,代表选择CV_LOAD_IMAGE_UNCHANGED方式,即采用保持原始格式的方式读取图像。比如待读取的图像原来是灰度图像,读取后还是灰度图像。

  (2)flags=2,这种情况代表选择CV_LOAD_IMAGE_GRAYSCALE方式,即以灰度图像格式读取图像。无论原始图像原来是什么格式,读取后都的结果都转变为灰度图像。

  (3)flags=3,这种情况代表选择CV_LOAD_IMAGE_COLOR方式,即以BGR格式读取图像。无论原始图像原来是什么格式,读取后都的结果都转变为BGR形式的三通道图像。

我建议是用属性名的写法,不要写这个数字。

对于imshow函数,opencv的官方注释指出:根据图像的深度,imshow函数会自动对其显示灰度值进行缩放,规则如下:

如果图像数据类型是8U(8位无符号),则直接显示。

如果图像数据类型是16U(16位无符号)或32S(32位有符号整数),则imshow函数内部会自动将每个像素值除以256并显示,即将原图像素值的范围由[0~255*256]映射到[0~255]

如果图像数据类型是32F(32位浮点数)或64F(64位浮点数),则imshow函数内部会自动将每个像素值乘以255并显示,即将原图像素值的范围由[0~1]映射到[0~255](注意:原图像素值必须要归一化)

我们尝试看看这个图像的矩阵形式

结果

继续来看看是什么样的数据结构

出现了

读取的图像如果通过numpy.asarray()转换为多维数组类型,即转换后的数组形状为[Height, Width, Channels]。


接下来的文章会继续深入学习cv2.

(0)

相关推荐

  • 常见的图像处理技术

    重磅干货,第一时间送达 本期文章中,让我们一起来学习以下内容. 通过PIL和OpenCV来使用一些常见的图像处理技术,例如将RGB图像转换为灰度图像.旋转图像.对图像进行消噪.检测图像中的边缘以及裁剪 ...

  • 【从零学习OpenCV 4】中值滤波

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开发详解>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • 【从零学习OpenCV 4】边缘检测原理

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开发详解>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • python+opencv图像处理(七)

    图像相减 图像可以做加法,当然也可以做减法,还可以做乘除法呢,这叫图像的四则运算. 本篇介绍两幅图像相减,以及使用加减法进行图像亮度增强. 图像相减的用处也比较多,比如视频中,要知道上一时刻和下一时刻 ...

  • 【从零学习OpenCV 4】直方图均衡化

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • 【从零学习OpenCV 4】双边滤波

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开发详解>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • Python+opencv 图像处理(五)

        灰度反转 "你说的黑是什么黑......"有一首歌的歌词是这样的. 在图像中,黑是什么? 很简单,就是0嘛. 因为在数字图像里,用0表示黑. 那么,"你说的白是什 ...

  • OpenCV基础知识入门

    本文旨在让你快速入门opencv. OpenCV OpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在python中使用.该库是一个跨平台的开源库,是免费使 ...

  • python+opencv图像处理(六)

    图像相加 两幅图像是可以加在一起的. 图像相加是通过对两幅大小相同的图像对应位置像素的相加运算,以产生一幅新的含有两幅图像信息的图像的方法.有时也称为图像合成. 1.(+)法 数学运算中的+可以用于图 ...

  • 【从零学习OpenCV 4】颜色模型与转换

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • Python进阶——OpenCV之Core Operations

    文章目录 图像基本操作 访问并修改像素值 访问图像的属性 设置图像区域 图像分割与合并 画图像边框 图像的数学操作 图像叠加 图像融合 图像位操作 Python OpenCV代码检测与速度优化 时隔一 ...

  • OpenCV探索之路(五):图片缩放和图像金字塔

    对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_AREA来插值:若要放大图像,推荐使用 ...

  • python+opencv图像处理(二)

    python+opencv图像处理(二) ----图像变换 自然界中有很多的颜色,红红的花,绿绿的草,蓝蓝的天,白白的云,多姿多彩的世界,美轮美奂的图像. 通过手机,照相机就可以定格每一个美的瞬间. ...