为何这个Smooth用法导致Python崩溃?
我正在使用Python 2.6和OpenCV 2.0进行开发。我开始了一个文件捕获,并提取了帧。我已经显示了图像,以确保它是有效的。但是,当我调用这个程序时,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还不太熟悉,是不是漏掉了什么明显的东西?
谢谢!
3 个回答
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)
0
如果你不需要使用OpenCV中面向对象的部分,可以看看ctypes-opencv,这是一套更好的Python接口。它是经过精心制作的,与OpenCV自带的SWIG生成的接口不同,我从来没有发现过它有任何bug。
0
OpenCV 2.0安装包里的绑定有问题;我也遇到过类似的情况,做一些非常简单的操作就会崩溃。自己从源代码编译应该能解决这个问题。