cvHoughLines2的内存释放问题

时间:2010-09-17 06:49:03

标签: java opencv

我遇到javaCV问题:

CvMemStorage storage = CvMemStorage.create();

CvSeq lines = cvHoughLines2( houghInputImage, storage.getPointer(),
     cv.CV_HOUGH_PROBABILISTIC, rho, Math.PI/theta, threshold, param1, param2 );

// ...

storage.release();

此代码不释放内存。使用内存,直到我的笔记本电脑死亡。 如果我注释掉cvHoughLines2行,那么没有问题,用过的内存没有问题。

你能帮助我为什么会这样吗?我错了什么?

我的环境:XP Home,OpenCV 2.1,JavaCV20100730,JRE6。

2 个答案:

答案 0 :(得分:1)

我也遇到过JavaCV这个问题。我不确定确切的问题在哪里,但我通过替换以下行来解决它:

storage.release();

使用:

cvClearMemStorage(lines.storage);

从生成的CvSeq中的存储对象中释放内存而不是最初传入的内存似乎很重要。

希望有一些帮助!

答案 1 :(得分:0)

存储处理在OpenCV中正常工作,因此可能在JavaCV中找到问题。

我假设您在循环中调用上面的代码。您应该尝试将存储创建和释放移动到循环外部,并且您可能只会在运行结束时丢失内存。