2010-01-10 71 views
1

我正在使用Python 2.6反对OpenCV 2.0。我已经开始了一个文件捕获并且拉框架。我已经显示图片以确保它是有效的。当我把这个程序,蟒蛇崩溃:为什么使用Smooth导致Python崩溃?

def SmoothImage(self,SmoothingMaskSize=3): 
    temp=cv.CreateImage(cv.GetSize(self._lpImage),self._lpImage.depth,self._lpImage.nChannels) 
    cv.Smooth(self._lpImage,temp) 
    self._lpImage=temp 

我也试过就地平滑它,使用cv.Smooth(self._lpImage,self._lpImage)

我是新来的Python - 我错过了一些明显的东西?

谢谢!

+2

如果你张贴的错误信息我可以帮你:) – richo

+1

无关你的问题和问题。您正在使用c#命名样式,这不是首选的Python命名样式。有关Python命名风格,请参阅PEP-8。 –

+0

Whoops-错误是: pythonw.exe 0.0.0.0 4ae54f49 libcv200.dll c0005acfc 正如我所说的,我是新来的Python和完全无知的命名风格:)感谢您的信息,虽然中,我会查找PEP-8。 –

回答

0

OpenCV 2.0安装程序附带的绑定是buggy;我有类似的问题,一些非常简单的操作引发崩溃。从源代码编译应该修复它。

+0

谢谢Johannes!我从SVN提取源并重新编译。尽管在CMake中查看它,python支持并没有被编译,但是一旦我手动完成,一切都很好。 –

0

如果你不需要访问OpenCV的面向对象的部分,你应该看看ctypes-opencv,这是一组更好的python绑定。与OpenCV附带的SWIG生成的绑定相比,它是精心手工制作的,我从未发现过任何缺陷。

http://code.google.com/p/ctypes-opencv/

0

可以隔离通过消除类定义的问题?我得到这个工作:

planes = [cv.CreateImage(cv.GetSize(image), cv.IPL_DEPTH_32F, 1) for i in range(3)] 
cv.Split(image, planes[0], planes[1], planes[2], None) 
for plane in planes: 
    cv.Smooth(plane, plane, smoothtype=cv.CV_GAUSSIAN, param1=9, param2=0, param3=0, param4=0)