zoukankan      html  css  js  c++  java
  • 【记录一个问题】opencv中使用UMat类,在析构的时候出现refcount == 0的断言错误

    发生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的关联



  • 相关阅读:
    python 入门
    element 使用问题总结
    element dialog 弹窗 解决每次先加载上一次数据再加载本次数据问题
    JS 对变量进行全文替换方法
    react源码解析10.commit阶段
    react源码解析9.diff算法
    react源码解析8.render阶段
    react源码解析7.Fiber架构
    react源码解析6.legacy模式和concurrent模式
    react源码解析5.jsx&核心api
  • 原文地址:https://www.cnblogs.com/ahfuzhang/p/10978157.html
Copyright © 2011-2022 走看看