我通过了很多像我这样的类似主题,但没有找到我的代码的解决方案。 首先,我只是想运行我的网络摄像头并看到一张照片。
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中实现呢?我不认为这会解决我的问题吗?
有人有解决方案吗?
祝你好运
答案 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无关的问题,例如驱动程序问题。