摄像头/视频读取_写入
➢VideoCapture类:
使用 OpenCV 播放视频,几乎与使用它来显示图像一样容易。播放视频时只需要处理的新问题就是如何循环地顺序读取视频中的每一顿,以及如何从枯燥的电影视频的读取中退出该循环操作。具体如例如下:
#encoding:utf8
import cv2
#视频的基本操作
cap = cv2.VideoCapture('./datas/vedioplay.mp4') #filename
print(cap.isOpened())
count = 0
while True:
count += 1
ret, frame = cap.read()
if not ret:
break
if count > 240:
cap.release()
cv2.imshow('frame', frame)
cv2.waitKey(25)
cv2.destroyAllWindows()
你的答案
取帧方法:
cap = cv2.VideoCapture()
cap.open('datas/vedioplay.mp4')
ret, frame = cap.read()
ret是否能取到帧,frame帧图片(ndarray)
VideoCapture类常用函数功能:
cap = cv2.VideoCapture(0) #device
cap = cv2.VideoCapture('./datas/vedioplay.mp4') #filename
cap = cv2.VideoCapture()
cap.open('datas/vedioplay.mp4')
cap.isOpened()
ret, frame = cap.read()
cap.release()
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#颜色空间转换
cap = cv2.VideoCapture(0) #device
cap = cv2.VideoCapture(‘./datas/vedioplay.mp4’) #filename
cap = cv2.VideoCapture()
以上为定义视频对象
cap.open(‘datas/vedioplay.mp4’)打开指定视频
cap.isOpened()判断视频文件是否正确
ret, frame = cap.read()读取视频帧图像
grab (一抓取下一帧的视频文件或设备)
get()一返回指定视频类的相关参数信息
cap.release()-关闭视频流文件
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#颜色空间转换
几点说明:
1)打开的视频可以是本地视频如:
cap = cv2.VideoCapture('./datas/vedioplay.mp4')
也可以是网络视频:
2) 读取视频一定要加异常判断
A.打开视频失败(各种原因)
B.取失败异常(程序结尾判断)
ex1:
#检查打开是否成功
if(cap.isOpened()) :
ex2:
ret,frame = cap.read()
if(frame is None): #判断当前frame 是否为空
if ret==Ealse: #断取顿是否失败
break
加入简单图像处理效果
while True:
count += 1
ret, frame = cap.read()
if not ret:
break
if count > 240:
cap.release()
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#颜色空间转换
cv2.imshow('frame', frame)
cv2.waitKey(25)
cv2.destroyAllWindows()
1)转为灰度模式
2)颜色空间转换到HSV
写入视频
cv2.VideoWriter()
注意事项:
1)写入视频前需安装对应的编解码器
2)生成视频是否支持彩色应与构造函数设置一致
3) 生成视频尺寸需与读取视频尺寸一致