目录
首先简单说明一下opencv
OpenCV(Open Source Computer Vision Library)是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,OpenCV的设计目标是执行速度尽可能的快和构建一个简单易用的计算机视觉框架。它主要用于实时视觉应用。
下面来介绍怎样读取视频
1.先将视频文件读取下来
vc = cv2.VideoCapture(r'./视频.mp4')
2.判断一下视频文件是否能正确打开
# 判断vc视频是否正确打开
if vc.isOpened():
# 读取每一帧视频。返回值1为读取是否有内容,Fasle表示读取结束。返回值2为这一帧的图片内容
open_vd, frame = vc.read()
else:
open_vd = False
如果读取的有内容,open_vd返回True,否则返回False
frame即为图像的内容
3.对每一帧图像进行处理
这里要用到一个while循环
while open_vd:
open_vd, frame = vc.read()
if frame is None: # 读取完毕之后,frame的值为None
break
当图像读取完之后,frame就没有内容了,然后跳出循环即可
4.对每一帧图像进行处理,转为灰度图
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
将每一帧图像转换为灰度图像
5.将图像展示出来
cv2.imshow('gray', gray)
参数要输入两个值
第一个即为自定义的图像的名称
第二个为要展示的图像数据
6.设置每帧图像之间展示的时间间隔
if cv2.waitKey(10) == 27: # cv2.waitKey获取键盘符号的ASCII码
break
可以加个判断条件,esc的ASCII码即为27,也就是说在图像展示的过程中,我们点击左上角esc键,就可以手动关闭图像(这里点X是关不掉的)
注意:一定要设置每一帧图像之间的等待间隔,不然太快图像展示不出来
7.最后将视频文件的窗口关闭并释放占用的资源
vc.release() # 是cv2.VideoCapture对象的一个方法,用于释放视频捕获器的资源。
# 关闭所有窗口
cv2.destroyAllWindows()
完整代码展示
'''--------------------读取视频--------------------'''
vc = cv2.VideoCapture(r'.视频.mp4')
if vc.isOpened(): # 判断vc视频是否正确打开
open_vd, frame = vc.read() # 读取每一帧视频。返回值1为读取是否有内容,Fasle表示读取结束。返回值2为这一帧的图片内容
else:
open_vd = False
while open_vd:
open_vd, frame = vc.read()
if frame is None: # 读取完毕之后,frame的值为None
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将图像从一种颜色空间转换为另一种颜色空间
cv2.imshow('gray', gray)
if cv2.waitKey(10) == 27: # cv2.waitKey获取键盘符号的ASCII码
break
vc.release() # 是cv2.VideoCapture对象的一个方法,用于释放视频捕获器的资源。
cv2.destroyAllWindows()