cv2.VideoCapture(0)

程序段里,

1、cap = cv2.VideoCapture(0)

VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频,如cap = cv2.VideoCapture(“../test.avi”)

2、ret,frame = cap.read()

cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。

3、cv2.waitKey(1),waitKey()方法本身表示等待键盘输入,

参数是1,表示延时1ms切换到下一帧图像,对于视频而言;

参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;

参数过大如cv2.waitKey(1000),会因为延时过久而卡顿感觉到卡顿。

c得到的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立

4、调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。

### 如何正确使用 OpenCV `cv2.VideoCapture` 进行视频捕获 #### 创建 VideoCapture 对象 为了初始化一个用于视频捕捉的对象,可以调用 `cv2.VideoCapture()` 函数并传入相应的参数。如果目标是从文件读取,则提供完整的文件路径;若是连接到摄像机或其他硬件设备,则传递整数索引来指明具体的输入源。 ```python import cv2 # 从文件读取视频 cap_from_file = cv2.VideoCapture('path/to/video/file.mp4') # 使用默认摄像头作为输入源 cap_from_camera = cv2.VideoCapture(0) ``` #### 验证视频流是否可用 一旦创建了 `VideoCapture` 实例之后,应当验证其状态以确认资源已被成功加载。这一步骤通过调用 `.isOpened()` 方法完成,它会返回布尔值指示当前对象的状态。 ```python if not cap_from_file.isOpened(): print("Error opening video file") if not cap_from_camera.isOpened(): print("Error accessing camera") ``` #### 循环读取帧数据 当确保视频流处于开启状态下时,就可以进入循环逐帧获取图像信息了。每次迭代过程中都会执行一次 `.read()` 调用来抓取下一幅画面,并将其存储在一个 NumPy 数组变量之中以便后续操作。 ```python while cap_from_file.isOpened(): ret, frame = cap_from_file.read() if not ret: break # 在这里对每一帧做进一步处理... ``` #### 处理单个帧的数据 对于每一个获得的帧,在此位置可以根据需求应用各种计算机视觉算法或变换逻辑。比如下面的例子展示了如何将彩色图转为灰度模式: ```python gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 显示转换后的结果窗口 cv2.imshow('Gray Frame', gray_frame) ``` #### 结束与清理工作 最后不要忘记释放所占用的所有资源以及关闭任何打开过的显示窗口。这是良好编程习惯的一部分,有助于防止内存泄漏等问题的发生。 ```python cap_from_file.release() cv2.destroyAllWindows() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值