如果你试图释放这样的内存,你将不会成功。查看源代码(请参阅下文),如果recount为NULL,则不执行解除分配。实际上,当用指向用户分配数据的指针构造Mat时,refcount被设置为NULL。

inline void Mat::release()

{

if(refcount && CV_XADD(refcount, -1) == 1)

deallocate();

data = datastart = dataend = datalimit = 0;

size.p[0] = 0;

refcount = 0;

}

如果在另一方面,通过MariusSiuram的建议,你设定在零引用计数什么百分点,释放一定会成功。 但我不确定为什么你会这样做,因为img的析构函数会为您解除分配。

关于你提到的有关在矢量擦除垫评论,这里是一个演示:

#include

#include "opencv2/highgui/highgui.hpp"

#include

#include

using namespace std;

int main()

{

cv::Mat img = cv::imread("lena.jpg");

cout << "*refcount = " << (*img.refcount) << " should be 1" << endl;

vector<:mat> v;

v.push_back(img);

v.push_back(img);

v.push_back(img);

v.push_back(img);

cout << "*refcount = " << (*img.refcount) << " should be 5" << endl;

auto f = v.begin();

++f;

v.erase(f);

cout << "*refcount = " << (*img.refcount) << " should be 4" << endl;

f = v.end();

--f;

v.erase(f);

cout << "*refcount = " << (*img.refcount) << " should be 3" << endl;

v.resize(0);

cout << "*refcount = " << (*img.refcount) << " should be 1" << endl;

img.release();

cout << "refcount ptr = " << (img.refcount) << " should be 0" << endl;

}

输出的结果是:

*refcount = 1 should be 1

*refcount = 5 should be 5

*refcount = 4 should be 4

*refcount = 3 should be 3

*refcount = 1 should be 1

refcount ptr = 00000000 should be 0

mat 释放_Opencv - 释放内存将cv :: Mat引用计数器更改为零相关推荐

  1. 48、Linux共享内存传递cv::Mat

    基本思想:最近在研究RoboMater源码,学习了如何使用共享内存传递cv::Mat 所以记录一下: send.cpp 读取了一张576*768*3通道的图片 #include <iostrea ...

  2. python内存管理三大技术——内存池技术,引用计数器,垃圾回收

    python优雅自由的编程风格,让人爱不释手.而他优雅的背后,则是其对内存的合理设计. 目前python内存管理,采用了三大技术,内存池,引用计数器,垃圾回收.其中,引用计数器.垃圾回收 内存池技术 ...

  3. cv::Mat初识和它的六种创建方法

    cv::Mat 初识   Opencv种的Mat类,使得Opencv的编程更加的简单,程序员不用过多的去关注内存管理,并且发现Opencv的编程有点像不需要太多编程技术的Matlab一样,甚至有些函数 ...

  4. 如何将cv::Mat类型转换为imgui中的ImTextureID类型

    背景: 我原来的工程是使用opencv的,所以程序中的图像都是表示为cv::Mat类型,为了能够在imgui窗口中显示我的cv::Mat的图像,我找到了下面这个函数: void ImGui::Imag ...

  5. 【OpenCV】cv::Mat和std::vector之间的相互转换

    Mat转换成Vector 以vector 为例,其它模型类似 vector getVector(const Mat & a) { Mat b; a.convertTo(b, CV_64F); ...

  6. opencv mat 修改_OpenCV中initUndistortRectifyMap函数存在bug原因探究

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 3D视觉工坊的第52篇文章 最近在运行如下一段代码时,生成的mapx和mapy有点异常. 代码片段如下 ...

  7. 【OpenCV3】cv::Mat块访问与操作(ROI区域的选取)

    cv::Mat作为OpenCV2和OpenCV3中最基本的数据类型,不仅支持单个像素的访问,也支持多种形式的块的访问,这极大得方便了实际的使用和操作. 1.访问cv::Mat m的第i行 cv::Ma ...

  8. 【OpenCV3】cv::Mat的定义与初始化

    cv::Mat是OpenCV2和OpenCV3中基本的数据类型,在cv::Mat类中,关于cv::Mat的定义和初始化有多种不同的形式,这里,将对其进行详尽的总结和介绍. 一.无数据拷贝的cv::Ma ...

  9. OpenCV cv::Mat::checkVector用法的实例(附完整代码)

    OpenCV cv::Mat::checkVector用法的实例 OpenCV cv::Mat::checkVector用法的实例 OpenCV cv::Mat::checkVector用法的实例 # ...

最新文章

  1. 字符串的全排列和组合算法
  2. 浅析SEO优化怎样打好企业新站优化基础稳步提升排名
  3. @ConfigurationProperties注解的使用与@Value的使用
  4. 指令重排序所带来的问题及使用volatile关键字解决问题
  5. 【Yarn】Yarn 命令详解
  6. 基于JWT(Json Web Token)的授权方式
  7. Arm 与中国联通成功部署物联网设备管理平台解决方案
  8. Qt开源炫酷界面QCoolPage
  9. windows端口配置
  10. c语言如何判断当前是 空字符,c语言如何判断字串中没有没有某个字元?
  11. 多用户商城系统有哪些盈利模式?
  12. 信道容量、数字基带与带通传输系统误码率公式整理
  13. 华为系统怎么使用小米云服务器,从小米的MIUI换成华为EMUI,使用5个月,憋了一肚子的真心话...
  14. Excel 设置下拉框-显示中文而实际数字
  15. 阿里云服务器带宽下载上传速度表(1Mbps是128KB/s)
  16. 涂鸦模组开发光照传感器
  17. linux网络socket
  18. 『腾讯后台开发』实习生技能要求
  19. 如何统计二十六个英语字母(简便思想)
  20. Mac怎么开启多个终端

热门文章

  1. 【Android】AppCompat V21:将 Materia Design 兼容到5.0之前的设备
  2. vue 模式下js微信支付
  3. 拓展编辑器(十八)_源生自定义菜单
  4. 微信最多人用的表情是它!朋友圈国内外最多人打卡的地方是这两个城市!
  5. 工作中如何做好技术积累『转载-保持学习的空杯心态』
  6. 一个程序员的多年珍藏(1月23日最新更新)
  7. android原生输入法皮肤,天了噜搜狗输入法安卓版皮肤竟然会说话
  8. php经常致命错误怎么办,如何捕获PHP中的致命错误(Fatal Errors)
  9. 压缩感知的实现——图像重建(含matlab代码)
  10. UI设计:使用PS绘制拟物化图标