最近准备重新学习图像处理的知识,主要目的是自己实现一遍图像处理的算法,所以除了读取、保存图像外的操作都自己写,没想到直接封装OpenCV的读取、保存功能的第一步就出错。关键代码如下

void MyImage::Clear()
{
if (m_pImg != nullptr)
{
std::cout << "释放内存" << std::endl;
delete m_pImg;
m_pImg = nullptr;
}
}

其中m_pImg是IplImage*类型,析构函数调用Clear函数。在主函数里用窗口显示图像,关闭后就成了这样子了

打开图像时没问题,关闭显示窗口后就出现错误。

Debug Assertion Failed!
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

是典型的内存泄露的表现。

原来是OpenCV中对于IplImage的内存释放是严格要用cvReleaseImage函数的,毕竟delete对应的是new,而IplImage*不是用new来申请内存,而是用cvCreateImage或cvLoadImage这种封装了申请内存的方法。所以不能习惯性地对指针用delete,把那段改成cvReleaseImage(&m_pImg);即可

手动封装OpenCV1.0的IplImage读取保存功能遇到的小问题的更多相关文章

  1. OPencv1.0配置vs2010(介于OPencv的经典之作。都是OPencv1.0为基础的。)

    首先下载OPencv1.0 我在之前的博客中写了下载的资源http://www.cnblogs.com/xiaochige/p/5990858.html 把OPencv1.0中bin文件夹下的所有内容 ...

  2. 有关OpenCV1.0中GUI命令的几个函数学习总结

    1.修改窗口背景色或者光标形状 在OpenCV1.0版本利用函数int cvNamedWindow( const char* name, int flags )初始化创建一个窗口后,窗口的背景色是灰色 ...

  3. vs2013下配置opencv1.0.0

    vs2013下配置opencv1.0.0 2019-4-25 17:13:13 原因 现在最新opencv已经到4.0.1版了.用opencv1.0原因: 小.源码包只有10M左右. 清晰.他的文档结 ...

  4. 手动封装AJAX

    正常函数的调用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. 使用promise手动封装ajax函数

    最近在做一个单页应用,node和浏览器仅通过json传输数据,因为是只有自己用等于是锻炼一下自己,所以也不用考虑seo的问题,node端我已经写好了,但是浏览器端想要用ajax原生太麻烦,用封装的函数 ...

  6. MDIEMDIE双心封装版0.3.0.0RC6V2

    MDIEMDIE双心封装版0.3.0.0 RC6V2官方主页:http://cres.s28.xrea.com/MDIE(多文档界面资源管理器)是一个MDI类型的文件管理软件,是代替资源管理器的一个无 ...

  7. VS2003安装Opencv1.0 windows系统 win7

    一.步骤 下载安装opencv1.0     安装文件我上传到百度网盘分享连接 http://pan.baidu.com/s/1o8na0aA 配置电脑windows环境变量 配置VS2003全局设置 ...

  8. 12.0 Excel表格读取

    Pycharm安装 xlrd 首先在xuexi目录下创建一个ExcelFile文件,让后在ExcelFile下创建一个Excel表格 创建表格时记得把单元格的格式设置为[文本] 我们设置为文本之后,存 ...

  9. 在VS2013上配置OpenCV1.0

    OpenCV1.0版(下载)基本上已经是老掉牙了,但是不想装新版,只是因为任性.所以就有了这样一个新老搭配.装完回想起来还是挺简单的,但是还是费了我一晚上,所以有必要记录一下.         先在电 ...

随机推荐

  1. hdu4309

    题解: 暴力枚举 然后网络流 代码: #include<iostream> #include<cstdio> #include<cstring> using nam ...

  2. mac下iterm2快捷方式

    mac下iterm2,一些技巧,做个记录,大部分参考别人的加上自己的补充: 其中option + 左右键来跳转单词还是有问题,结果变为[D[C,等我摸索好了再来补充. 窗口 新建tab:⌘ + t 切 ...

  3. linux 下 iscsi的简单使用

      一.准备工作 1.1.(服务端和客户端都需要设置) 系统使用的是CentOS6.8 禁用防火墙: 查看状态:# service iptables status 停止:# systemctl sto ...

  4. 安装visio 2010:您的计算机上的Office 2003安装已损坏,安装程序无法继续。请删除或修复office 2003产品并重新运行安装程序

    您的计算机上的Office 2003安装已损坏,安装程序无法继续.请删除或修复office 2003产品并重新运行安装程序   最近打算安装visio 2010时出现 以下错误: “您的计算机上的Of ...

  5. 创建python3.6的虚拟开发环境virtualenv

    为了保证各个项目环境和插件的相对独立,使用virtualenv作为python的虚拟运行环境,这样在项目维护方面,减少在依赖包上所花费的时间. 1.安装 virtualenv虚拟环境插件 pip in ...

  6. ISO 18000-6c 访问标签--应用程序访问操作ISO 18000-6C标签的方法

    标签访问操作包含三部分: 1.标签选择.某些场景,应用程序只对特定的标签进行操作,Indy Host Library可以指定标签选择条件. 2.执行盘存操作.上报单化后标签EPC区的数据. 3.标签单 ...

  7. C++解决error C4996报错

    今天用c++写了个数独程序,在编译过程中报了一个错误: 1>------ 已启动生成: 项目: sudoku, 配置: Debug Win32 ------1> main.cpp1> ...

  8. How to choose the number oftopics/partitions in a Kafka cluster?

    How to choose the number oftopics/partitions in a Kafka cluster? 如何为一个kafka集群选择topics/partitions的数量? ...

  9. 类加载器:ClassLoader与Class的区别

    1.类加载器 java字节码(类)的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验.解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类 ...

  10. 余弦相似度及基于python的三种代码实现、与欧氏距离的区别

    1.余弦相似度可用来计算两个向量的相似程度 对于如何计算两个向量的相似程度问题,可以把这它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向.两条线段之间形成一个夹角, ...