2024年4月6日发(作者:)
PythonOpenCV视觉智能感知
第一讲——读取摄像头或视频文件并播放显示
本部分内容将深入、全面、详细地介绍如何使用
AnacondaPython
和
OpenCV
读取摄像头或视频文件,
并进行播放。
1
任务描述
使用
AnacondaPython
和
OpenCV
,读取摄像头或本地视频文件并播放显示。
2
解题思路
要从摄像头或视频文件读取视频,首先应获取摄像头或视频文件,并判断是否获取成功。
获取摄像头或视频文件成功后,逐帧读取视频,播放显示。为了能够连续读取和播放视频的每帧图像,
需要将读取和播放视频帧放在一个循环体里。由于不知道摄像头的视频帧数,可以构造一个无限循环体。
对视频文件,可以构造一个无限循环体或以视频帧数为上限的有限循环体。在循环体内部应设置循环结束
控制条件,以便能够控制结束读取和播放视频。
视频读取和播放结束后,应释放摄像头或视频文件,并销毁视频播放窗口。
3
主要方法介绍
(
1
)导入
OpenCV
库
cv2
要使用
OpenCV
,首先导入
OpenCV
库
cv2.
导入方法为:
importcv2
导入
OpenCV
库
cv2
的前提是确保计算机已经安装了
daPython
安装
OpenCV
的方法为
在
AnacondaPrompt
窗口执行以下命令:
pipinstallopencv-python
(
2
)
apture()
方法
apture()
方法用于创建一个
VideoCapture
对象,以捕获摄像头或视频文件。该方法接收摄像
头的索引或视频文件名。如果只有一个摄像头,则以整数
0
进行索引。如果有多个摄像头,则分别以
0,1,2…
等整数进行索引。如果要读取视频文件,则需传入视频文件的全名称(包括路径和扩展名)字符串,形
如
’D:/opencv/videos/4’.
(
3
)
while
方法
Python
中使用
while
语句构造循环体,循环执行程序。即在条件满足情况下,循环执行某段程序,以
重复处理相同任务。其基本形式为:
while
判断条件
(condition)
:
执行语句
(statements)……
判断条件可以是任何表达式,任何非零、或非空(
null
)的值均为
True
。当判断条件为假
False
时,循
环结束。
(
4
)
read()
方法
VideoCapture
对象使用
read()
方法读取摄像头或视频文件的帧。该方法返回两个值,一般用
ret,frame
命名接收,当然也可以命名为其他名称。其中第一个返回值ret是布尔值,如果读取帧成功返回True,如果
读取失败则返回
False
。如果视频文件读取到结尾,它的返回值为
False.
第二个返回值
frame
是每一帧的图
像数据,是个形状为
(height,width,channels)
的整数型三维数组。
height,width,channels
分别表示图像帧的高
度、宽度、通道。数组中的每个元素的值是像素值,范围为
0-255.3
个通道
0,1,2
分别表示
B(
蓝色
)
,
G(
绿
色
)
,
R(
红色
)
。
(
5
)
y()
方法
y()
方法用于暂停程序的执行,等待一段时间,在此期间如果有按键按下,则返回键值的
ASCII
码,并响应相应的键盘事件。如果没有按键按下,则在等待设定的时间后,继续执行后续指令。
waitKey()
方法接收整数,表示等待的时间,单位是毫秒。如果传入的参数为小于等于
0
的整数,则表示无限等待,
直到有按键按下。
(
6
)
release()
方法
VideoCapture
对象使用
release()
方法释放自身。当不需要读取摄像头或视频文件时,应调用该方法释放
VideoCapture
对象。
(
7
)
destroyAllWindows()
方法
yAllWindows()
方法用于释放视频播放窗口。当不需要播放视频时,应调用此方法销毁视频播
放窗口。
4
代码实现
任务实现代码如下。
In[]:importcv2#
导入
opencv
cap=apture(0)#
创建
VideoCapture
对象
while(True):#
创建无限循环,用于播放每一帧图像
ret,frame=()#
读取图像的每一帧
('frame',frame)#
显示帧
#
等待
1
毫秒,判断此期间有无按键按下,以及按键的值是否是
Esc
键
y(1)&0xFF==27:
break#
中断循环
e()#
释放
ideoCapture
对象
yAllWindows()#
释放视频播放窗口
发布者:admin,转转请注明出处:http://www.yc00.com/web/1712387668a2050683.html
评论列表(0条)