Python下使用opencv调用摄像头出错

[ WARN:0] global D:\Build\OpenCV\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (373) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): OnReadSample() is called with error status: -2147024809   
[ WARN:0] global D:\Build\OpenCV\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (385) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): async ReadSample() call is failed with error status: -2147024809
[ WARN:1] global D:\Build\OpenCV\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (912) CvCapture_MSMF::grabFrame videoio(MSMF): can't grab frame. Error: -2147024809
Traceback (most recent call last):
  File ".\opencv_opencamera.py", line 6, in <module>
    cv2.imshow('frame',frame)
cv2.error: OpenCV(4.4.0) D:\Build\OpenCV\opencv-4.4.0\modules\highgui\src\window.cpp:384: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

[ WARN:1] global D:\Build\OpenCV\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (435) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback

出现上述错误,使用如下方法解决:

cap =cv2.VideoCapture(0)
改为
cap =cv2.VideoCapture(0,cv2.CAP_DSHOW)

应该属于版本兼容问题

Python使用OpenCV(Open Source Computer Vision Library)调用摄像头并读取视频通常涉及以下几个步骤: 1. **安装OpenCV**: 首先确保已经安装了OpenCV,如果没有,你可以通过pip安装: ``` pip install opencv-python ``` 2. **导入必要的库**: 开始程序时需要导入cv2(OpenCV的主模块)和time(用于暂停读取): ```python import cv2 import time ``` 3. **打开摄像头**: 使用`cv2.VideoCapture()`创建一个VideoCapture对象,并传入0(表示内置摄像头,也可以指定文件路径读取视频): ```python cap = cv2.VideoCapture(0) ``` 4. **检查设备连接**: 确保摄像头已连接,检查是否成功打开: ```python if not cap.isOpened(): print("Error opening camera.") exit() ``` 5. **读取帧**: 使用`cap.read()`函数连续读取帧,返回值是一个元组,包含当前帧的布尔状态和实际的图像数据: ```python while True: ret, frame = cap.read() # 如果ret为False,则说明到达视频结尾或出错 if not ret: break ``` 6. **显示帧**: 可以使用OpenCV的imshow()函数展示帧: ```python cv2.imshow('Camera Feed', frame) # 按 'q' 键退出 if cv2.waitKey(1) & 0xFF == ord('q'): break ``` 7. **释放资源**: 最后关闭摄像头和窗口释放内存: ```python cap.release() cv2.destroyAllWindows() ``` 如果你想保存视频,可以使用`cv2.VideoWriter()`创建一个VideoWriter对象,然后将每一帧写入到文件中: ```python # 规定视频编码,帧率等参数 fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter('output.mp4', fourcc, 30, (frame.shape[1], frame.shape[0])) # 写入帧 for frame in frames_to_save: out.write(frame) # 关闭视频文件 out.release() ```
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T触发器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值