2013-01-04 37 views
4

我试图代码在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 

我不理解这是什么意思,有人可以帮我吗? Thankyou。

+0

在您启动摄像头程序后立即发生错误?或者在几帧成功返回后发生? –

回答

4

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

  1. 这可以通过你的摄像头古怪的行为造成的......对某些相机空帧返回不时。在将im数组传递给imshow()之前,请尝试确保它不为空。

  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; 
    

来源:Related Question: OpenCV C++ Video Capture does not seem to work

+0

非常感谢,我急切地等待着您的回复。是的,它在cv2.imshow中有一些问题。当我尝试打印图像时,它是None.IS它是摄像头的问题?但它适用于旧版本的简单视频捕获代码。当我尝试单独打印时,它显示>>>捕获 >>>级联 >>>打印图像。我该怎么办?? – shreya

+0

你在哪里打印图像?如果在capture.read()之后它是None,那么检查可能包含错误代码的retVal变量。否则告诉我你在哪里打印它。 –

+0

我使用python空闲作为编辑器,当我打印它作为none和retVal作为False。 – shreya

0

我在Windows工作与opencv的2.3.1和Python 2.7.2,所以,我有同样的问题,我解决它会粘贴以下DLL文件:opencv_ffmpeg.dll和opencv_ffmpeg_64.dll在Python的安装文件夹中。也许它可以帮助你在Ubuntu中使用类似的解决方案。

0

对于我来说,就像加布坎一样,我复制opencv_ffmpeg245.dll我的Python代码的文件夹。然后它工作。

3

我有相同的错误,和有关搜索的误差的小时之后,我发现被不适当地限定的路径图像。它解决了我的问题,可能会解决你的问题。

1

我通过使用BGR图片解决了porblem。我的摄像头默认是YUYV!

相关问题