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

如何在Python中通过OpenCV VideoCapture识别并调用不同USB相机

在Python中通过OpenCV的VideoCapture调用指定USB相机

核心结论

Python版OpenCV的VideoCapture完全支持直接使用/dev/v4l/by-id/下的设备路径,你之前遇到的问题并非语言差异导致,大概率是路径拼写错误、权限不足或相机索引配置问题。

具体操作步骤

  1. 解决设备权限问题
    先确保当前用户有权限访问相机设备,临时授权可执行:

    sudo chmod 666 /dev/v4l/by-id/*
    

    若要永久生效,将用户加入video组(执行后需重新登录):

    sudo usermod -aG video $USER
    
  2. 直接通过设备路径调用相机
    用你查到的/dev/v4l/by-id/路径初始化VideoCapture,示例代码如下:

    import cv2 as cv
    
    # 初始化RGB相机(以CU27的index0为例)
    cap_rgb = cv.VideoCapture('/dev/v4l/by-id/usb-e-con_systems_See3CAM_CU27_192C8902-video-index0')
    # 初始化NIR灰度相机(以CU81的index0为例)
    cap_nir = cv.VideoCapture('/dev/v4l/by-id/usb-e-con_systems_See3CAM_CU81_3233D508-video-index0')
    
    # 检查相机是否成功打开
    if not cap_rgb.isOpened() or not cap_nir.isOpened():
        print("无法打开相机,请检查路径或权限")
        exit()
    
    # 读取并显示图像的循环示例
    while True:
        ret_rgb, frame_rgb = cap_rgb.read()
        ret_nir, frame_nir = cap_nir.read()
    
        if ret_rgb:
            cv.imshow("RGB Camera", frame_rgb)
        if ret_nir:
            cv.imshow("NIR Camera", frame_nir)
    
        # 按q键退出循环
        if cv.waitKey(1) & 0xFF == ord('q'):
            break
    
    # 释放相机资源并关闭窗口
    cap_rgb.release()
    cap_nir.release()
    cv.destroyAllWindows()
    
  3. 理解index0和index1的区别
    设备名后的-index0和-index1对应相机的不同数据流:

    • index0通常是主数据流(比如RGB或默认灰度输出)
    • index1多为辅助流(比如低分辨率预览、备用格式流等)
      若某一路径无法打开,直接切换到另一index即可。
  4. 验证相机输出格式
    读取帧后可通过shape属性查看通道数,确认是否符合预期:

    # RGB相机帧应为(高度, 宽度, 3)
    print(frame_rgb.shape)
    # NIR相机帧应为(高度, 宽度, 1)
    print(frame_nir.shape)
    

常见问题排查

  • 提示无法打开设备:检查路径拼写是否正确,或重新执行权限配置命令
  • 读取的帧为空:尝试切换index0和index1,或关闭其他占用相机的程序
  • 图像颜色异常:可通过cv.cvtColor转换格式,比如将灰度帧转为RGB显示:
    frame_nir_rgb = cv.cvtColor(frame_nir, cv.COLOR_GRAY2BGR)
    

内容的提问来源于stack exchange,提问作者Patrick Vibild

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:05:19