前言
要求opencv版本4.1.2.30(4.x >=版本),我的版本4.5.3
Opencv图像的读取和显示
1. 函数
cv.imread(filename,flags=?)
cv.namedWindow(filename,flags=?)
cv.imshow()
cv.destroyWindow()
cv.destroyAllWindows()
详细看下代码:
附
(图一)为cv.imread()参数2可选择标志:
(图二)为cv.namedWindow()参数2可选择标志:
1.2、代码
代码如下(示例):
import cv2 as cv
img = cv.imread('./chapter_2/flower.jpg',flags=cv.IMREAD_GRAYSCALE)#此处为单通道灰度图读取
cv.imshow('Result1',img)
#cv.imread(filename[,flags])第二个参数设置读取图像的形式,默认使用彩色图像格式读取
#设置多个flags时用|隔开
#读取失败返回None
cv.namedWindow('Result',flags=cv.WINDOW_NORMAL)#此处为用户可随意调节窗口大小
cv.imshow('Result',img)
#cv.namedWindow(name,flags)创建一个窗口
#默认为 cv.WINDOW_AUTOSIZE|cv.WINDOW_KEEPRATIO|cv.WINDOW_GUI_EXPANDED
#设置多个标志时用|隔开
#cv.imshow(name,img) name:窗口名称,如果没有创建同名窗口就会创建一个为cv.WINDOW_AUTOSIZE标志的窗口
#如果创建了,如cv.namedWindow()函数
cv.waitKey(0)#程序暂停,参数0表示等待用户按键结束暂停该函数
cv.destroyAllWindows()#关闭所有窗口
#cv.destroyWindow(name) 关闭指定窗口
1.3.结果
右边图片窗口可调整大小
2.视频的加载与摄像头的调用
cv.VideoCapture()函数构造一个能够读取与处理视频文件的视频对象,并将该对象返回。
通过 ret,img = video.read() 读取一帧存放于img,ret判断是否读取成功,成功返回True,失败返回False。
2.1.1代码
import cv2 as cv
if __name__ =='__main__':
video = cv.VideoCapture('./chapter_2/video.mp4')
#判断是否成功创建视频流
while video.isOpened():
ret,frame = video.read()
if ret is True:
cv.imshow('Video',frame)
#设置视频播放速度
cv.waitKey(int(1000/video.get(cv.CAP_PROP_FPS)))
#按下Q键退出
if cv.waitKey(1) & 0xFF ==ord('q'):
break
else:
break
#输出相关信息
print('视频中图像的宽度{}'.format(video.get(cv.CAP_PROP_FRAME_WIDTH)))
print('视频中图像的高度{}'.format(video.get(cv.CAP_PROP_FRAME_HEIGHT)))
print('视频帧率为{}'.format(video.get(cv.CAP_PROP_FPS)))
print('视频总帧数{}'.format(video.get(cv.CAP_PROP_FRAME_COUNT)))
#释放并关窗口
video.release()
cv.destroyAllWindows()