【问题标题】:OpenCV webcam not showingOpenCV 网络摄像头未显示
【发布时间】:2020-03-06 11:34:18
【问题描述】:

我想制作一个使用 OpenCV 显示我的实时网络摄像头的程序,并且每当我按下 SPACE 时它都会拍照。

我正在使用 python 3.6.4 和 OpenCV 4.1.1。这是一个程序,在 tensorflow 的帮助下,它会拍照,并识别数据库中是否有人在里面。这是我当前的代码:

cam = cv2.VideoCapture(0)
img_counter = 0

while True:
    ret, frame = cam.read()
    if not cam.isOpened():
        raise IOError("Cannot use webcam")
    elif cam.isOpened():
        cv2.imshow('frame', frame)
    if not ret:
        break
    if cv2.waitKey(1) == 27:
        #ESC pressed
        break
    elif cv2.waitKey(1) == 32:
        #SPACE pressed
        img_name = 'students_{}.png'.format(img_counter)
        cv2.imwrite(img_name, frame)
        print(img_name + 'was captured')
        img_counter += 1
cam.release()
cv2.destroyAllWindows()

当我运行它时,它会引发这个错误:

cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

我现在的目标是让它显示网络摄像头、拍照并将其保存在项目的文件夹中。

有谁知道怎么回事? 或者 tensorflow 是否具有我不必使用 openCV 的功能? 非常感谢,加比

【问题讨论】:

  • 检查print(frame) - 可能会显示None,这意味着它无法从相机获取图像。
  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。
  • value 0 in VideoCapture(0) 通常表示笔记本内置摄像头。如果您使用外部摄像头,那么您可能必须使用不同的值,或者您可能必须使用 camare 的路径 - 即。在 LInux 上可以是 /dev/video0/dev/video1 等。

标签: python opencv


【解决方案1】:

找到答案:我通过 USB 使用外部摄像头,所以我不得不将 cv2.VideoCapture(0) 更改为 cv2.VideoCapture(1) 我不确定是否有办法直接通过 tensorflow 做到这一点,但我正在努力解决。

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多