【问题标题】:OpenCV 2.1 Python Bindings SegfaultingOpenCV 2.1 Python 绑定 Segfaulting
【发布时间】:2010-09-11 05:06:19
【问题描述】:

您好,当我将 OpenCV 的函数分组到我自己的函数中并出现分段错误时,我遇到了问题。

即使是这么简单的代码

def acquire_imagen():
  capture = cv.CaptureFromCAM( 0 )
  img = cv.QueryFrame( capture )
  return img
img = acquire_image()
print img[0,0]

如果我在函数之外调用相同的指令,一切正常。我对可能发生的事情有一个想法,但没有足够的关于 python 的知识来防止它。我认为对象正在被 GC 释放。

【问题讨论】:

    标签: python opencv segmentation-fault


    【解决方案1】:

    为防止捕获对象被垃圾收集,请在变量中保留对它的引用,直到您不再需要图像为止。在您的代码中:“捕获”变量不能是函数的局部变量,而是函数外部的变量。或者,如果您希望它在函数内部进行初始化,请将其与捕获的图像一起返回,并在调用函数后将其存储在变量中:

    def acquire_imagen(): capture = cv.CaptureFromCAM( 0 ) img = cv.QueryFrame( capture ) return capture, img capture, img = acquire_image() print img[0,0]

    【讨论】:

      【解决方案2】:

      问题似乎是在访问从它捕获的图像之前无法释放捕获对象。在您的程序中不再访问该图像之前,不要让“捕获”对象被释放。

      【讨论】:

      • 但是如何防止 GC 收集它?
      猜你喜欢
      • 2011-03-17
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多