You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:17:05