错误消息的相关代码段为Unrecognized or unsupported array type in function cvGetMat
。该cvGetMat()
函数将数组转换为Mat
。AMat
是OpenCV在C / C ++世界中使用的矩阵数据类型(注意:您正在使用的Python OpenCV接口使用Numpy数组,然后将它们在幕后转换为Mat
数组)。考虑到这种背景,问题似乎在于im
您传递给的数组的cv2.imshow()
格式不正确。两个想法:
这可能是由于您的网络摄像头的古怪行为引起的…在某些摄像头上,有时会返回空帧。在将im
数组传递给之前imshow()
,请尝试确保其不为null。
如果 每个 帧 都 出现错误,请消除您正在执行的某些处理,并cv2.imshow()
在从网络摄像头抓取帧后立即致电。如果仍然无法解决问题,那么您会发现网络摄像头存在问题。否则,逐行添加您的处理,直到找到问题所在。例如,从此开始:
while True:
# Grab frame from webcam
retVal, image = capture.read(); # note: ignore retVal
# Draw rectangles on image, and then show it
cv2.imshow("Video", image)
i += 1;