视频的读取
学完图片的基本操作,来学一下视频的读取
首先还是导入常用的包
1 import cv2 2 import matplotlib.pyplot as plt 3 import numpy as np 4 %matplotlib inline
然后用VideoCapture()来读取视频
1 vc=cv2.VideoCapture('test.mp4')
先检测视频是否正常打开
1 if vc.isOpened(): 2 open,frame=vc.read() 3 else: 4 open=False
read()是来一帧一帧地读取视频中的图片
返回的第一个参数open是bool值,用来表示视频是否正常打开
第二个参数frame保存的是每一帧的图片
如果视频能正常打开,则对每一帧图片进行处理(转化为灰度图)
1 while open: 2 ret,frame=vc.read() 3 if frame is None: 4 break 5 if ret==True: 6 gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 7 cv2.imshow('vedio',gray) 8 if cv2.waitKey(10) & 0xFF==27: #27代表ESC键 9 break; 10 vc.release() 11 cv2.destroyAllWindows()
注:一开始将cvtColor()函数处的语句用如下语句代替了:
gray=cv2.imread(frame,cv2.IMREAD_GRAYSCALE);
这里出现了错误,因为我已经在循环中用read()一帧一帧地读进来了,不能再用imread()去读取,这里要做的只是要将颜色做一个转变
那么就要说到imread()和cvtColor()的区别了:
imread()是在将图片读取进来的过程中进行灰度图的转换,适用于还没读取图片的时候
cvtColor()是图片已经读取进来了,只是要做一个颜色空间的转换