打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iTOP-3568开发板使用OpenCV处理图像-颜色转换
Python+opencv 图像处理(五)
常见的图像处理技术
OpenCV:图像的加载显示及简单变换
走进Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
OpenCV-Python 图像的几何变换 | 十四
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服