2012-09-18 68 views
0

我是opencv的新手。在编译Python代码时,我收到以下错误。typeerror参数'image'必须是iplimage

TypeError: argument 'image' must be iplimage 

请解释一下iplimage是什么,为什么我得到这个。

这里是我的代码:

import cv 
capture=cv.CaptureFromCAM(0) 
image=cv.QueryFrame(capture) 
writer=cv.CreateVideoWriter("output.avi", 0, 15,(800,600) , 1) 
count=0 
cv.NamedWindow('Image_Window') 
while count<250: 
    image=cv.QueryFrame(capture) 
    cv.WriteFrame(writer, image) 
    cv.ShowImage('Image_Window',image) 
    cv.WaitKey(2) 
    count+=1 

感谢。

+0

您应该阅读opencv文档。在那里你会发现一个'IplImage'是什么。 – Vicent

+2

如果您是OpenCV的新手,那么您不应该学习传统界面。 'cv2'命名空间中有一个新的python界面。 –

回答

1

IplImage是OpenCV中的基本图像类。 cv.QueryFrame应该返回一个IplImage。但看起来,它不适合你的情况。

您应该尝试检查NULLQueryFrame返回NULL而不是出现错误时的图像。

另外,检查出THIS的问题。你可能会在这里找到你的答案。

1

您没有向视频编写器提供有效的编解码器。我尝试了你的代码,并得到一个错误,然后我改变了正在使用的编解码器,它工作。

你应该改变这一行:

writer=cv.CreateVideoWriter("output.avi", 0, 15,(800,600) , 1) 

这样:

writer=cv.CreateVideoWriter("output.avi", cv.CV_FOURCC('i','Y', 'U', 'V'), 15,(800,600) , 1) 

但是Andrey Kamaev是说你应该宁可不使用cv接口正确,较新的cv2接口既更容易和更可靠。 In this question我介绍了如何使用cv2接口将图像帧写入文件。

如果上面提到的编解码器不适合你,恐怕你可能会遇到一些麻烦。您可以参考this question了解更多关于寻找有效编解码器的信息。

相关问题