为何这个Smooth用法导致Python崩溃?

1 投票
3 回答
748 浏览
提问于 2025-04-15 17:51

我正在使用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。

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

0

OpenCV 2.0安装包里的绑定有问题;我也遇到过类似的情况,做一些非常简单的操作就会崩溃。自己从源代码编译应该能解决这个问题。

撰写回答