【问题标题】:How do I access my USB camera using OpenCV with python?如何使用 OpenCV 和 python 访问我的 USB 摄像头?
【发布时间】:2020-07-17 17:29:28
【问题描述】:

我在使用 OpenCV 和 python 访问我的 USB 摄像头时遇到问题。

我收到以下错误消息,我理解这意味着没有捕获帧?

error: OpenCV(3.4.1) C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\highgui\src\window.cpp:356: error: (-215) size.width>0 && size.height>0 in function cv::imshow

我的相机如下:https://www.gophotonics.com/products/scientific-industrial-cameras/point-grey-research-inc/45-571-cm3-u3-50s5m-cs

简单代码如下。有什么想法吗?一些帮助我将不胜感激

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
while(True):
    ret, frame = cap.read()

    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

【问题讨论】:

  • 尝试在 VideoCapture 中输入“1”而不是“0”。比如,cv2.VideoCapture(1)。
  • 感谢您的回复。我不认为这是一个索引问题,我已经尝试迭代到索引 500 并且没有工作......
  • 您的 USB 摄像头是否在您的计算机上正常工作,而无需尝试从 python 访问它?就像使用一些默认的 USB 选项来访问它一样。只是为了检查它是否兼容并且可以正常工作。
  • 使用公司提供的spinview程序工作

标签: python opencv usb-camera


【解决方案1】:

camera index 大部分时间是0 与带有集成摄像头的计算机默认设置,但如果您插入 USB 摄像头,则其 camera index 可能是 12,两个都可以试试。

但如果您想获得所有可用的camera index,您可以使用以下简单脚本来查找:

import cv2
import numpy as np

all_camera_idx_available = []

for camera_idx in range(10):
    cap = cv2.VideoCapture(camera_idx)
    if cap.isOpened():
        print(f'Camera index available: {camera_idx}')
        all_camera_idx_available.append(camera_idx)
        cap.release()

结果将是 list,例如:[0,1,2,...],所有相机索引都可用。

但是,如果您使用的是 USB 摄像头,则必须记住,某些 OpenCV 功能将不起作用,请查看 this

【讨论】:

  • 感谢您的回复。我不认为这是一个索引问题,我已经尝试迭代到索引 500 并且没有工作......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
相关资源
最近更新 更多