1、从视频文件获得图像
应用cap = cv2.VideoCapture(‘文件目录’)搭建视频文件的cap实例。cap.read()方式逐帧提取视频,每一帧为一幅图像,cap.read()方法返回的是一个二元组,下标0的原素数值True或False,假如为Flase表明读取文件进行。下标1的原素为图像目标,也是一个numpy二维数组种类的数据信息。cap.isOpened()用于查验cap实例是不是已开启。cap.release()释放出来实例。下边这一事例中载入视频文件并表明,做到播放视频的实际效果,与此同时进入了waitKey()返回值的分辨,键入功能键’Q’或是’q’就可以撤出循环系统。在这儿waityKey()返回的数据和0xff各相后再和标识符的ord()值较为,是因为避开一些系统软件中waitKey()返回的标值在高字节为非0值的状况。
import cv2
cap = cv2.VideoCapture(\'..\\vtest.avi\')
while cap.isOpened():
ret, img = cap.read()
if ret is not True:
print(\"载入进行,撤出\")
break
#解决img
cv2.imshow(\'vedio\', img)
#查验功能键
key = cv2.waitKey(20) & 0xff
if key == ord(\'q\') or key == ord(\'Q\') :
break
print(\'cap.isOpened():\',cap.isOpened())
cap.release()
print(\'cap.isOpened():\',cap.isOpened())
运作结论:
cap.isOpened(): True
cap.isOpened(): False
从运作结论看,cap.release()前cap.isOpened()的返回值一直为True。
2、从动态图获得图像
应用VideoCapture(文件夹名称)方式开启gif格式的照片,操作流程和以上一般的视频文件相近。
3、从照相机获得图像
打开相机必须用照相机的机器设备序号(标值型整数金额)做为入参传到VideoCapture(照相机序号),例如cap = cv2.VideoCapture(0)搭建序号为0的照相机浏览实例,第2台照相机则传到1,依此类推,后面流程的处置办法和载入视频文件一样。
import cv2
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, img = cap.read()
if ret is not True:
print(\"读取不成功,撤出\")
break
#解决img
cv2.imshow(\'vedio\', img)
#查验功能键
key = cv2.waitKey(20) & 0xff
if key == ord(\'q\') or key == ord(\'Q\') :
break
print(\'cap.isOpened():\',cap.isOpened())
cap.release()
print(\'cap.isOpened():\',cap.isOpened())
4、载入视频文件
写视频文件必须建立VideoWriter目标,先后传到4个主要参数:
- 第1个为文件目录;
- 第2个为编码方法,在其中编码方法和文件目录后缀名有对应关系;
- 第3个主要参数为每秒钟载入的帧率,参照标值为25,合乎人的眼睛习惯性;
- 第4个主要参数是图像尺寸,int类型;
常见的文件目录后缀名和编码方法的对应关系有:
文件后缀 | 编码方式 |
avi | XVID |
avi | MJPG |
avi | mp4v(小写字母) |
mp4 | mp4v(小写) |
编码方法必须建立VideoWriter_fourcc目标,例如可以用下边的2种方法建立MJPG种类的编号:
fourcc=cv2.VideoWriter_fourcc(\'M\',\'J\',\'P\',\'G\')
fourcc=cv2.VideoWriter_fourcc(*\'MJPG\')
图像尺寸可以根据cat.get(propId)方式获得,可是该方式获得的是float种类,必须变换为int类型再传到VideoWriter。
cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = int(width)
height = int(height)
下边是一个建立XVID、MJPG、mp4v等3种编码方法视频文件的事例:
import cv2
#获得图像高宽
cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = int(width)
height = int(height)
print(width,height)
#建立VideoWriter目标
fourcc = cv2.VideoWriter_fourcc(*\'XVID\')
out = cv2.VideoWriter(\'output.avi\', fourcc, 25.0, (width, height))
fourcc = cv2.VideoWriter_fourcc(*\'MJPG\')
out2 = cv2.VideoWriter(\'output2.avi\', fourcc, 25.0, (width, height))
fourcc = cv2.VideoWriter_fourcc(*\'mp4v\')
out3 = cv2.VideoWriter(\'output3.mp4\', fourcc, 25.0, (width, height))
while cap.isOpened():
ret, img = cap.read()
print(img.shape)
if ret is not True:
print(\"载入不成功,撤出\")
break
#解决img
cv2.imshow(\'vedio\', img)
out.write(img)
out2.write(img)
out3.write(img)
#查验功能键
key = cv2.waitKey(1) & 0xff
if key == ord(\'q\') or key == ord(\'Q\') :
break
cap.release()
out.release()
out2.release()
out3.release()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。