python opencv中函数cvGetMat中无法识别或不支持的数组类型

shr*_*eya 5 python opencv

我试图在python opencv-2.4.3中编码,它给我一个错误如下

Traceback (most recent call last):
 File "/home/OpenCV-2.4.3/cam_try.py", line 6, in <module>
cv2.imshow('video test',im)
 error: /home/OpenCV-2.4.3/modules/core/src/array.cpp:2482: error: (-206)           Unrecognized or unsupported array type in function cvGetMat
Run Code Online (Sandbox Code Playgroud)

我不明白这是什么意思,任何人都可以帮助我吗?谢谢.

Bra*_*son 6

错误消息的相关片段是Unrecognized or unsupported array type in function cvGetMat.该cvGetMat()函数将数组转换为Mat.A Mat是OpenCV在C/C++世界中使用的矩阵数据类型(注意:您正在使用的Python OpenCV接口使用Numpy数组,然后在后台将其转换为Mat数组).考虑到这一背景,问题似乎是im您传递给的阵列cv2.imshow()形成不良.两个想法:

  1. 这可能是由于您的网络摄像头上的奇怪行为造成的......在某些摄像头上,会不时返回空帧.在将im数组传递给之前imshow(),请尝试确保它不为null.

  2. 如果出现错误,则取消您正在执行的某些处理,并cv2.imshow()在从网络摄像头抓取帧后立即调用.如果仍然不起作用,那么你就会知道它是你网络摄像头的问题.否则,逐行添加您的处理,直到您找出问题为止.例如,从这开始:

    while True:
        # Grab frame from webcam
        retVal, image = capture.read(); # note: ignore retVal
    
    #   faces = cascade.detectMultiScale(image, scaleFactor=1.2, minNeighbors=2, minSize=(100,100),flags=cv.CV_HAAR_DO_CANNY_PRUNING);
    
        # Draw rectangles on image, and then show it
    #   for (x,y,w,h) in faces:
    #       cv2.rectangle(image, (x,y), (x+w,y+h), 255)
        cv2.imshow("Video", image)
    
        i += 1;
    
    Run Code Online (Sandbox Code Playgroud)

来源:相关问题:OpenCV C++视频捕获似乎不起作用