opencv读取图片、视频、摄像头
上一篇博客我们已经安装好了opencv,从这篇博客开始我们来记录我在学习opencv使用时的心得。
首先我们要明确视频是由一帧一帧的图片快速变换、连接而成的,于是对视频的处理要先从图像开始。
对于机器视觉的学习首先要将图片导入到我们的编程环境里来
import cv2
img = cv2.imread('图片的地址')#读取图片,括号中用字符串的形式来输入读取路径
这样一张我们指定的图片就被导入到我们的编程环境中来了,但是此时我们并不能在图形界面看到这幅名为‘img’的图片。
于是我们用下面这条语句使图片显示并且定格在图形界面。
cv2.imshow('togetheer',img)#显示图片,('图片的标题',图片文件的变量名)
cv2.waitKey(0)#设置显示图片的时间延时,0表示无限延时,数字以毫秒为单位,输入1000停留1秒
要注意的是imshow命令中图片标题必须要有,否则会报错,就是这么无情!!
此时我们看见了这张图片,接下来引入视频:
cap = cv2.VideoCapture('视频地址')#读取视频
while True:#每一帧读取图片,并利用循环播放
success,img = cap.read()#读取贞
cv2.imshow('video',img)
if cv2.waitKey(1) & 0xFF == ord('q'):#按q键退出播放
break
这里我们在读取视频文件之后通过while循环,在每1ms截取一张图片显示的形式来展示这个视频,也就是在文章开头提到的视频形成的原理。人眼的识别速率是最快每秒30帧也就是说,每帧停留时间在1/30秒以下在人的视觉内看见的都是一幅流畅的视频画面。
读取摄像头的原理与读取视频的原理相似,直接来代码:
cap = cv2.VideoCapture(0)#读取摄像头,如果只有一个,那么填0,使用默认填0,使用其他的填写摄像头id
cap.set(3,640)#宽度代号3
cap.set(4,480)#长度代号4
cap.set(10,1000)#亮度代号10
while True:#每一帧读取图片,并利用循环播放
success,img = cap.read()#读取贞
cv2.imshow('video',img)
if cv2.waitKey(1) & 0xFF == ord('q'):#按q键退出播放
break
这里的VideoCapture命令是调取一个摄像头的数据,如果是想调用非默认的摄像头那么可以通过OBS来查看ID,这个教程在网上很多,在这里就不多说了。
set命令可以调节视频的尺寸大小、亮度、对比度、色调等等这些参数,感兴趣的可以谷歌一下,在这里就不展开介绍了。
总体来说,这都是对图片的处理,之后通过while函数实现视频流的形成。