编写opencv程序的小心这个漏洞
2013-08-12 14:25
330 查看
最近用opencv写图像处理程序。出现一个bug,批量处理一个文件夹内的图片,处理完了,内存直升不减。
我用的语句是
虽然cv::mat不泄露,但是creatmat申请了内存,而且本以为是不用释放的,事实上最后还是要去释放cv::mat的。但是cv::mat又不用去释放,至少我找不到释放的语句。所以就形成一个恶心循环。
正确的用法有很多。可以是
或者是
我用的语句是
void BinHSV(cv::Mat &MatIn,cv::Mat &MatOut) { if(!MatIn.data) return ; cv::Mat HSVMat=cvCreateMat(MatIn.rows,MatIn.cols,MatIn.type());
////////核心函数等等 }看上去貌似也没什么错,编译连接也都正确。可是函数被反复调用后竟然有泄露。不是说cv::mat由系统接管内存管理,不会有问题的啊,运行完收回内存。但是,是有问题的,因为用了cvCreatMat。
虽然cv::mat不泄露,但是creatmat申请了内存,而且本以为是不用释放的,事实上最后还是要去释放cv::mat的。但是cv::mat又不用去释放,至少我找不到释放的语句。所以就形成一个恶心循环。
正确的用法有很多。可以是
void BinHSVYe(cv::Mat &MatIn,cv::Mat &MatOut) { if(!MatIn.data) return ; cv::Mat HSVMat(MatIn.rows,MatIn.cols,MatIn.type()); //核心函数 }
或者是
void BinHSVYe(cv::Mat &MatIn,cv::Mat &MatOut) { if(!MatIn.data) return ; CvMat *HSVMat(MatIn.rows,MatIn.cols,MatIn.type()); //核心函数 cvReleaseMat(&HSVMat); }
相关文章推荐
- 用 OpenCV 编写一个简单的摄像头视频监控程序
- 编写OpenCV程序时,需要注意的事项(持续更新)
- 2. 编写一个Java应用程序,用户从键盘输入一个1~9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、32
- 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。
- 如何高效编写微信小程序呢?来看看腾讯工程师这个方法
- C语言 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制
- 设计一个含有一个表单的页面,并且在表单上放入一个文本框。编写程序,当鼠标在页面上移动时,鼠标的坐标将显示在这个文本框中。
- 编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,例如,根 据内容为[1][2][3]的数组形成内容为"1,2,3"的字符串。
- 编写一个C语言语句,要求输出这个程序需要运行的时间(用clock()做) 该怎么写?
- 1.编写程序从键盘得到代表小时,分钟和秒的三个 整数数字,把这个时间的下一秒打印在屏幕上 hh:mm:ss
- 2. 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使用让这个程序能够处理的输入行的长度没有限制
- 使用python编写opencv程序(安装及载入图片)
- 通过编写一个简单的漏洞扫描程序学习Python基本语句
- 第19课时,实践1,编写一个程序,从键盘上输入一个小写字母,显示这个小写字母及它所对应的大写字母以及它们的ASCII码值
- 利用反射机制编写一个程序,这个程序能把类中所有的成员变量赋值,并把操作信息输出到控制台。
- 在mfc c++ 以及opencv 编写程序当中,很多常用的类型转换
- 1.1至100一百个自然数(无序),放入一个99个元素的数组a[99],用java语言编写一段程序,找出没有被放入数组这个数。【转】
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出
- 使用C语言编写程序,求解有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个序列的前20项
- 哪位大神能帮帮我编写下双向链表这个程序