【问题标题】: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】:
问题似乎是在访问从它捕获的图像之前无法释放捕获对象。在您的程序中不再访问该图像之前,不要让“捕获”对象被释放。