过度使用内存的c++ OpenCV鼠标点代码
Excessive memory usage in C++ OpenCV mouse point code
大家好,感谢你们在stackoverflow上提供的许多有用的话题——它们帮助了我很多,因为我在编程方面非常缺乏经验。作为大学项目的一部分,我正试图在名片上实现透视校正,以便使用OpenCV库在c++中为OCR做准备。我发现通过Canny和Hough的自动角检测有点不可靠,这取决于特定的卡和背景,所以我现在想实现一种手动选择角的方法。
我在sourceforge (http://sourceforge.net/p/opencvselmov/code/ci/master/tree/)上找到了用户ajithsri的以下代码(OpenCVSelect.cpp),这正是我需要的。然而,在玩了一段时间后,它突然崩溃了,让我怀疑。查看任务管理器,同时点击和移动点,我注意到大量的内存被使用而不被释放,直到程序崩溃。
现在,就像我说的,当涉及到编程时,我真的没有经验,我找不到代码的问题,所以如果解决方案对你来说是显而易见的,请原谅我。如果有人能帮我解决代码中的内存问题,我将非常感激,这样我就可以在我的项目中使用它。
谢谢!
(需要OpenCV库和black.jpg)
这里有一个问题。你正在克隆大量的图像,只释放最后一个。
void showImage(){
IplImage *img2=img0;
for(int j=0;j<nop;j++){
img2 = cvCloneImage(img2);
...
for(int k=j+1;k<nop;k++){
img2 = cvCloneImage(img2);
...
}
}
...
cvReleaseImage(&img2);
删除所有对cvCloneImage()
的调用,并更改
IplImage *img2=img0;
IplImage *img2=cvCloneImage(img0);
这段代码写得很糟糕,可能还有很多其他问题。
findImg()
也有类似的泄漏
相关文章:
- Visual Studio 2017在我将鼠标移到Mat关键字(OpenCv 3.4.1)上时冻结
- C++ OpenCV 鼠标回调继承类
- 无法跟踪鼠标事件 OpenCV
- OpenCV 鼠标事件始终在鼠标滚动时接收事件 10 和 *flag* 0
- opencv c++中的鼠标事件
- OpenCV中使用C++的鼠标点击功能
- 使用Opencv从鼠标进行图形输入
- 用鼠标在OpenCV中画一个框(使用Mat而不是IplImage)
- 使用opencv/C++实时保存和使用点击鼠标的坐标
- 使用 OpenCV 将鼠标指针悬停在图像上时在图像上打印像素坐标
- 如何在opencv中使用鼠标点击在图像上绘制线条
- 如何在opencv和c++中使用鼠标在图像上绘制线条
- 如何在opencv中使用对象跟踪的概念移动鼠标
- 过度使用内存的c++ OpenCV鼠标点代码
- OpenCV鼠标调用
- OpenCV:存储鼠标左键点击点的坐标
- 如何从三个鼠标点击在OpenCV绘制一个圆圈
- OpenCV 2.3 with VS 2008 -鼠标事件
- opencv窗口在鼠标回调时未刷新
- 鼠标回调函数 OpenCV