影像处理免不了读取视频和调用摄像头,在OpenCV中可以使用VideoCapture
工具快速完成视频读取以及摄像头调用。
读取并播放视频
调用VideoCapture
的时候如果传入一个视频文件的路径作为参数则可以读取该视频文件:
import cv2 as cv
video = cv.VideoCapture('/home/kk/影片/mytest.mp4')
while video.isOpened():
ret, frame = video.read()
if ret == True:
cv.imshow('My Video', frame)
if cv.waitKey(100) & 0xFF == ord('q'):
break
else:
break
video.release()
cv.destroyAllWindows()
- 以字符串的形式传入一个文件路径,调用
VideoCapture
读取视频; - 使用
video.isOpened
判断是否正确打开,如果是则开始循环读取; - 使用
video.read
读取每一帧视频影像,返回的ret
用于判断是否成功读取,frame
为影像的numpy
数组; - 仍旧使用
cv.imshow
显示,并用cv.waitKey
等待100毫秒「不一定非得用100」来控制播放速度,当接受到键盘输入q时退出; - 在结束循环读写后需要记得释放视频资源
video.release
,以及销毁窗口cv.destroyAllWindows
;
打开并读取摄像头
调用VideoCapture
的时候如果传入一个整数0则可以读取电脑默认摄像头:
import cv2 as cv
video = cv.VideoCapture(0)
while video.isOpened():
ret, frame = video.read()
if ret == True:
cv.imshow('My Video', frame)
if cv.waitKey(100) & 0xFF == ord('q'):
break
else:
break
video.release()
cv.destroyAllWindows()
传入到cv.VideoCapture
的整数0可以理解为摄像头的索引编号,如果你有多个摄像头比如两个,则可以尝试使用编号:0或1;有三个摄像头,则可以尝试使用编号:0、1或2。