树莓派Zero上Python3 OpenCV调用/dev/video0摄像头读取帧失败
问题:树莓派Zero上OpenCV无法持续捕获USB摄像头帧
我尝试在树莓派Zero上使用Python 3的OpenCV库,从识别为/dev/video0的USB摄像头捕获视频帧。以下是我的代码:
import cv2 ... cam = cv2.VideoCapture(0) if cam.isOpened(): print("Camera successfully opened") else: print("Camera could not be opened") while True: success, image = cam.read() print("success in taking image? ", success) if success and not image.empty(): image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # further code to be executed to process the image else: print("problem capturing image")
运行后输出如下:
Camera successfully opened success in taking image? False problem capturing image success in taking image? False problem capturing image success in taking image? False problem capturing image ...
该脚本始终无法成功捕获图像,仅首次执行时成功过一次。我起初以为摄像头损坏,但使用motion工具访问该摄像头却完全正常,说明摄像头连接无误。请问我哪里操作有误?
解决方法
指定OpenCV摄像头后端:树莓派Zero上OpenCV默认后端可能和USB摄像头兼容性差,显式指定
CAP_V4L2后端:cam = cv2.VideoCapture(0, cv2.CAP_V4L2)手动设置低分辨率和帧率:树莓派Zero性能有限,高分辨率/帧率会导致读取失败,降低参数试试:
cam.set(cv2.CAP_PROP_FRAME_WIDTH, 320) cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) cam.set(cv2.CAP_PROP_FPS, 10)释放被占用的摄像头资源:如果之前的脚本异常退出,可能残留进程占用摄像头,执行命令释放:
sudo fuser -k /dev/video0之后再重新运行脚本。
更换OpenCV安装方式:pip安装的OpenCV可能缺少硬件支持,改用apt安装官方包:
sudo apt update && sudo apt install python3-opencv添加读取延时:在循环中加入短延时,给系统和摄像头足够处理时间:
import time # 在while循环末尾添加 time.sleep(0.1)
内容的提问来源于stack exchange,提问作者the_smart_home_maker
相关产品推荐
相关产品推荐

