【问题标题】:Why does this use of Smooth cause Python to crash?为什么使用 Smooth 会导致 Python 崩溃?
【发布时间】:2011-01-03 09:33:22
【问题描述】:

我在 OpenCV 2.0 上使用 Python 2.6。我已经开始了文件捕获和拉帧。我已显示图像以确保其有效。当我调用这个例程时,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 新手——我是否遗漏了一些明显的东西?

谢谢!

【问题讨论】:

  • 如果您发布错误消息,我可能会帮助您:)
  • 与您的问题和问题无关。您正在使用 c# 命名风格,这不是首选的 python 命名风格。 python命名风格见PEP-8。
  • 哎呀-错误是:pythonw.exe 0.0.0.0 4ae54f49 libcv200.dll c0000005 c0005acfc 正如我所说,我是 Python 新手,完全不知道命名样式 :) 感谢您提供的信息,我会查找 PEP-8。
  • 看看那个错误:pythonw.exe 0.0.0.0 4ae54f49 libcv200.dll c0000005 c0005acfc Python和DLL之间的绑定参数似乎不匹配。是打字问题吗?在 cv.py 中,cvSmooth 传递到 PYD,PYD 通过扫描文件链接到 OpenCV 中的 cvSmooth。 cvSmooth 被声明: cvSmooth( const void* srcarr, void* dstarr, int smooth_type, int param1, int param2, double param3, double param4 ) 当其他具有相同指针参数的 OpenCV 函数工作时,为什么这个特定函数会失败?

标签: python opencv


【解决方案1】:

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

【讨论】:

  • 谢谢约翰内斯!我从 SVN 中提取源代码并重新编译。尽管在 CMake 中检查了它,python 支持并没有编译,但是一旦我手动完成,一切都很好。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    你能通过删除类定义来隔离问题吗?我得到这个工作:

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      相关资源
      最近更新 更多