OpenCV错误:cv :: imshow(Python)中的断言失败(size.width> 0& size.height> 0)

时间:2017-03-29 13:56:18

标签: python opencv

我通过了很多像我这样的类似主题,但没有找到我的代码的解决方案。 首先,我只是想运行我的网络摄像头并看到一张照片。

msg

我也尝试过:

import numpy as np
import cv2

cap = cv2.VideoCapture(1)

while True:
  re,img=cap.read()
  cv2.imshow("video output", img)
  k = cv2.waitKey(10)&0xFF
  if k==27:
     break
cap.release()
cv2.destroyAllWindows()

我仍然收到此错误:

if img is not None:

我不得不说我没有使用我的笔记本电脑摄像头,所以它的ID不是0,但它应该是1.我读到了像c ++这样的解决方案:OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow 但是如何在Python中实现呢?我不认为这会解决我的问题吗? 有人有解决方案吗?

祝你好运

1 个答案:

答案 0 :(得分:1)

根据OpenCV docs

  

cap.read()返回一个bool(True / False)。如果正确读取帧,则为   将是真的。

     

...

     

有时,上限可能没有初始化捕获。在这种情况下,   此代码显示错误。您可以检查它是否已初始化   通过cap.isOpened()方法。如果是真,那好的。否则打开它   使用cap.open()。

因此您的代码变为:

import numpy as np
import cv2

device = 1
cap = cv2.VideoCapture(device)
# if capture failed to open, try again
if not cap.isOpened():
    cap.open(device)

# only attempt to read if it is opened
if cap.isOpened:
    while True:
        re, img = cap.read()
        # Only display the image if it is not empty
        if re:
            cv2.imshow("video output", img)
        # if it is empty abort
        else:
            print "Error reading capture device"
            break
        k = cv2.waitKey(10) & 0xFF
        if k == 27:
            break
    cap.release()
    cv2.destroyAllWindows()
else:
    print "Failed to open capture device"

如果仍有错误,请尝试将设备更改为-1,0或2.否则,可能是与OpenCV无关的问题,例如驱动程序问题。

相关问题