发生coredump时的错误信息如下:

terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.1.0-dev) /home/admin/opencv/opencv-master/modules/core/src/matrix.cpp:169: error: (-215:Assertion failed) u->refcount == 0 in function 'deallocate'

以下写法导致这种断言错误:

cv::resize(u_input_gray, u_input_gray, cv::Size(0, 0), 0.5, 0.5,
      cv::INTER_AREA);
 
 重新编译了debug版本,具体调用堆栈如下:

1 #7  0x00007ffff6f233d7 in _Unwind_Resume (exc=0x128f3e0) at ../../../libgcc/unwind.inc:230
2 #8 0x00000000004589b9 in cv::StdMatAllocator::deallocate (this=0x1209b90, u=0x1269640)
3 at /home/admin/opencv/opencv-master/modules/core/src/matrix.cpp:169
4 #9 0x00000000004fcc17 in cv::UMat::deallocate (this=0x7fffffffd990) at /home/admin/opencv/opencv-master/modules/core/src/umatrix.cpp:490
5 #10 0x0000000000461893 in cv::UMat::release (this=0x7fffffffd990)
6 at /home/admin/opencv/opencv-master/modules/core/include/opencv2/core/mat.inl.hpp:3777
7 #11 0x00000000004fcb9c in cv::UMat::~UMat (this=0x7fffffffd990, __in_chrg=<optimized out>)
8 at /home/admin/opencv/opencv-master/modules/core/src/umatrix.cpp:481

p u->refcount
$1 = 6

析构的时候,发现有6个引用,所以崩溃……
===================================

解决办法如下:
不要使用 getMat() 或者 getUMat() 方法
而使用 mat.copyTo(umat) 或者 umat.copyTo(mat)
通过拷贝来避免UMat和mat的关联

【记录一个问题】opencv中使用UMat类,在析构的时候出现refcount == 0的断言错误的更多相关文章

  1. 如何将OpenCV中的Mat类绑定为OpenGL中的纹理

    https://blog.csdn.net/TTTTzTTTT/article/details/53456324 如果要调用外接的USB摄像头获取图像通常使用OpenCV来调用,如何调用摄像头请参考本 ...

  2. opencv检错:程序运行过程正常,当跳出函数时出现断言错误(Debug Assertion Failed)

    转载http://blog.csdn.net/u012327581/article/details/51351780 1.问题描述 在VS2015下配置好Opencv后,程序在函数运行过程中正常,调试 ...

  3. 【记录一个问题】linux下使用opencv中的UMat,性能并未提升,反而略有下降

    使用后性能略微下降,一开始怀疑是UMat拷贝的问题.运行 nvidia-smi -l 1, 发现GPU占用始终为0.说明opencl使用的是CPU版本,而不是GPU版本.明天试验opencl的GPU版 ...

  4. opencv 中的mat类(非原创)

    Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,Mat这个类有两部分数据.一个是matrix header(矩阵头),这部分的大小是固定的,包含矩阵的大小,存储 ...

  5. (原创)一个和c#中Lazy<T>类似的c++ Lazy<T>类的实现

    在.net 4.0中增加一个延迟加载类Lazy<T>,它的作用是实现按需延迟加载,也许很多人用过.一个典型的应用场景是这样的:当初始化某个对象时,该对象引用了一个大对象,需要创建,这个对象 ...

  6. [每天记录一个Bug]Cell中由于block加载网络请求产生的复用

    Bug 出现场景:   cell中使用加载图片的网络请求出现复用,截图如下:         复用原因:   Cell Model中只有一个用户的uid,所有用户相关信息:例如头像\名称\信息等是通过 ...

  7. 【opencv基础】Rect类的神奇用法

    前言 最近看github上源码发现对两个cv::Rect使用相与(&)操作,猛地感觉自己蒙啦,Rect类还有这种神奇用法?!翻看opencv官网Rect类,果然如此! opencv中Rect类 ...

  8. Opencv中图像的遍历与像素操作

    Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0 ...

  9. 浅谈[0,1]区间内的n个随机实数变量中增加偏序关系类题目的解法

    浅谈[0,1]区间内的n个随机实数变量中增加偏序关系类题目的解法 众所周知,把[0,1]区间内的n个随机.相互独立的实数变量\(x_i\)之间的大小关系写成一个排列\(\{p_i\}\),使得\(\f ...

随机推荐

  1. epoll linux和协程gevent的区别

    epoll linux  底层是libevent.so模块实现的 gevent也是IO多路复用,底层是libevent.so模块实现的是更上层的封装 Twsited异步网络框架.代码量非常大.在开源p ...

  2. 复杂SQL案例:用户退款信息查询

    供参考: select t3.course_id 课程id, t3.user_id 用户ID, u.user_full_name 姓名, -- u.phone, concat(u.company,' ...

  3. nim_duilib(10)之slider、progress and circleprogress

    introduction 更多控件用法,请参考 here 和 源码. 本文的代码基于这里 本文将介绍3个控件: slider,progress和circleprogress.具体的用法,请参考源码提供 ...

  4. hdu-5569matrix(dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=5569; 题目意思: 从(1,1)点出发只能向右和向下走,到达(n,n)点时所得到的价值最小, 价值是Let th ...

  5. idea使用教程-常用设置

    [1]进入设置: [2]设置主题: [3]编辑区的字体变大或者变小: [4]鼠标悬浮在代码上有提示: [5]自动导包和优化多余的包: 手动导包:快捷键:alt+enter 自动导包和优化多余的包: [ ...

  6. HDU 5965:扫雷(DP,递推)

    扫雷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...

  7. Wavelet Transforms

    目录 目标 小波变换 Scaling Functions Wavelet Functions 二者的联系 离散的情形 高效变换 二维的情形 示例 目标 首先, 既然是变换, 那么就是从一个域到另一个域 ...

  8. 解决vue生产环境app.js或vendor文件过大问题

    1.去掉多余的库 将不必要的库卸载掉 npm uninstall xxx 举个例子:例如moment库文件是很大的,在前端可以用js的 new Date实现获取日期,或者可以其他库代替,也可以将mom ...

  9. [opencv]求像素范围中最大值与最小值

    double minv = 0.0, maxv = 0.0; double* minp = &minv; double* maxp = &maxv; minMaxIdx(channel ...

  10. MySQL数据库基础(1)数据库基础

    目录 一.数据库简介 二.mysql数据库 三.客户端连接mysql服务 四.Navicat for mysql 一.数据库简介 1.概念 (1)数据:如文字.图形.图像.声音以及学生的档案记录等,这 ...