ConvertTo 函数中 Mat 的内存泄漏

2023-12-12

我在管理函数中的内存时遇到一些问题。 Valgrid 说我在转换函数后出现内存泄漏。难道是因为数据没有正常发布?我尝试使用临时指针,但我的程序崩溃或无法正常工作。以前有人遇到过这个问题吗?

this->images.push_back(new cv::Mat());                                                          //ID
cv::threshold(*this->images[MASK], *this->images[ID], 0.0, 1.0, cv::THRESH_BINARY);
this->images[ID]->convertTo(*this->images[ID], CV_32SC1);

这是 valgrid 输出:

==5663== 64,339,996 bytes in 1 blocks are possibly lost in loss record 380 of 380
==5663==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5663==    by 0x4E95117: cv::fastMalloc(unsigned long) (in /usr/local/lib/libopencv_core.so.2.4.9)
==5663==    by 0x4F31F38: cv::Mat::create(int, int const*, int) (in /usr/local/lib/libopencv_core.so.2.4.9)
==5663==    by 0x4F39CF9: cv::_OutputArray::create(cv::Size_<int>, int, int, bool, int) const (in /usr/local/lib/libopencv_core.so.2.4.9)
==5663==    by 0x4EB9373: cv::Mat::convertTo(cv::_OutputArray const&, int, double, double) const (in /usr/local/lib/libopencv_core.so.2.4.9)
==5663==    by 0x40D168: DataFrame::init() (DataFrame.cpp:68)
==5663==    by 0x40C943: DataFrame::DataFrame(char const*, LeafClassifier*) (DataFrame.cpp:31)
==5663==    by 0x414A19: DataHandler::loadFrame() (DataHandler.cpp:68)
==5663==    by 0x406680: main (main.cpp:58)

please don't将指向 Mat 的指针存储在向量中(或其他任何地方!)。

这些东西在内部重新计数,就像智能​​指针一样,并且您通过存储/复制指针来破坏它(无论如何,指向智能指针的指针向量听起来很愚蠢,不是吗?)。

使用普通的vector<Mat>,用每件额外的约 56 字节换取今晚的酣睡;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ConvertTo 函数中 Mat 的内存泄漏 的相关文章

  • 我什么时候应该从正在观察持久模型类的正在关闭的 ViewController 类中调用removeObserver:forKeyPath?

    我有一个ViewController具有一个属性的类 该属性是我想要观察模型属性变化的模型 在我的模型对象中 我有一个在应用程序后台定期更新的属性 当它更新时 我需要在我的内部执行代码ViewController 为此 我从我的模型中创建了
  • opencv 视频上的颜色阈值

    I am thresholding for a color range in an opencv video The goal is to seperate the B mode black and white information on
  • 使用相位相关和对数极坐标变换获得旋转位移

    我一直在编写一个脚本 它使用 cv2 计算两个图像之间的旋转位移phaseCorrelate method 我有两张图像 第二张是第一张图像的 90 度旋转版本 加载图像后 我将它们转换为对数极坐标 然后将它们传递到phaseCorrela
  • 收据褪色部分可以恢复吗?

    我有一些包含一些扫描收据的文件 我需要使用 OCR 从中提取文本 由于收据上打印的文字在一段时间后会褪色 导致收据上的某些文字不清晰 影响OCR结果 褪色单词的一些示例 有什么方法可以恢复褪色的部分 以便提高 OCR 结果吗 我在OpenC
  • 如何解决 Python 'Pyzbar' 库的导入错误?

    我刚刚开始熟悉 Pyzbar 库 但是当使用decode方法我得到一个错误 这是代码 import cv2 import numpy as np import pyzbar code image cv2 imread C Users Ace
  • 使用 openCV 和 python 检测物体

    我正在尝试使用 OpenCV 和 Python 检测下图中的白点 我尝试使用函数 cv2 HoughCircles 但没有成功 我需要使用不同的方法吗 这是我的代码 import cv2 cv import numpy as np impo
  • 计算两个描述符之间的距离

    我正在尝试计算已计算的两个描述符之间的距离 欧几里得或汉明 问题是我不想使用匹配器 我只想计算两个描述符之间的距离 我正在使用 OpenCV 2 4 9 并且我的描述符存储在 Mat 类型中 Mat descriptors1 Mat des
  • 使用无效命令进行 fork 会导致 valgrind 中的内存泄漏

    我有以下代码 它在分叉内执行无效命令 以下代码在 valgrind 中返回内存泄漏 include
  • FreeMM 与 ShareMem

    我们有很多用 delphi 和 c builder 编写的 dll 库 并使用 sharemem 和 borlndmm dll 3d party 库中的对齐问题迫使我们转向 delphi 2007 中的新内存管理器 有人可以帮我解释一下 共
  • 相机标定(OpenCV 2.3)-如何使用畸变参数?

    我有一组带有一些附加标记的刚体图像 我在这些标记之一中定义了一个原点坐标系 我想获得该坐标系与在相机原点定义的坐标系之间的旋转和平移 我尝试了一段时间 POSIT 以下this http goo gl cUYYt 但从未获得可接受的结果 直
  • valgrind 和 iOS SDK 4.2?

    使用 valgrind 运行 iOS 4 2 应用程序时遇到问题 我从 Macports 安装了 valgrind 3 6 0 SVN Xcode 3 2 5 当我修改 main 以运行 valgrind 时 我得到以下输出 Detecte
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • 如何计算图像中的 RGB 或 HSV 通道组合?

    我使用 python opencv 加载形状为 30 100 3 的图像 现在想要按颜色计算所有颜色的频率 我不是指单个通道 而是指通道组合 含义 3 个频道列表 例如 255 0 0 表示红色 255 255 0 表示黄色 100 100
  • 我应该使用 Helgrind 还是 DRD 进行线程错误检测?

    好像Valgrind http valgrind org docs manual manual html有两个工具都可以进行线程错误检测 Helgrind http valgrind org docs manual hg manual ht
  • Environment.WorkingSet 错误地报告内存使用情况

    Environment WorkingSet 错误地报告在 Windows 2003 Server 上运行的网站的内存使用情况 操作系统版本 Microsoft Windows NT 5 2 3790 Service Pack 2 NET
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • 如何在 OpenCV 中从 YUV 文件读取帧?

    如何在 OpenCV 中从 YUV 文件读取帧 我编写了一个非常简单的 python 代码来从二进制文件读取 YUV NV21 流 import cv2 import numpy as np class VideoCaptureYUV de
  • OpenCV Visual Studio ntdll.dll

    我尝试在 Visual Studio 2013 上使用 OpenCV 2 4 10 创建一个项目 但由于以下异常 到目前为止我运气不佳 请建议帮助 TIA letstryitonemoretime exe Win32 Loaded C Us
  • Swift 5 MacOS 图像调整大小内存问题

    我是使用 Swift 进行 Mac OS 应用程序开发的新手 但我尝试制作简单的 ImageResizer 应用程序 我必须调整 50k 图像的大小 10个小时后 内存已增加到近120GB 我以为 Swift 也有垃圾收集器 为什么它可以增

随机推荐

  • 如何在 JavaScript 中检查参数是否是对象(而不是数组)

    测试出来后instasnceof我发现如果参数是数组或对象文字 它将返回 true function test options if options instanceof Object alert yes this will alert f
  • 使用 C# 将时间跨度值转换为格式“hh:mm Am/Pm”

    我有一个值存储在类型变量中System TimeSpan如下 System TimeSpan storedTime 03 00 00 我可以将它重新存储在另一个类型的变量中吗String如下 String displayValue 03 0
  • 在 Java 中向枚举添加斜杠

    我需要创建一个enumeration像这样 public enum STYLE ELEMENT1 0 A R 2 Staff But Java不允许这样做 有什么解决办法吗 谢谢 你不能使用 命名 Java 标识符 你可以看看 JLS 3
  • Firefox 中的表格充斥着 CSS

    我无法让我的桌子正常运转 内容不断溢出 我尝试限制它并没有产生预期的效果 这是我的标记 div class repeatingdiv div class hastitle Some title div div class hastable
  • ARM中Q(饱和标志)的重要性

    我想了解 Q 标志在 ARM 处理器中的重要性 我知道有一些指令 如 QADD QSUB 等 但我需要通过一些例子来理解这一点 以澄清这个概念 ARM 架构参考手册 ARM DDI 0100E 对此进行了解释 位 27 的CPSR is a
  • 有效地重塑稀疏矩阵,Python,SciPy 0.12

    In 另一篇关于在 SciPy 中调整稀疏矩阵大小的文章当要添加更多行或列时 接受的答案有效 使用scipy sparse vstack or hstack 分别 在 SciPy 0 12 中reshape or set shape方法还没
  • Python 中的整数除法和带负操作数的模运算

    当我在 Python 3 3 0 中输入这些表达式时出现问题 10 3 4 10 3 2 10 3 4 10 3 2 10 3 3 看起来好像它采用近似浮点 3 33 并在整数除法中以任一方式向下舍入 但在模运算中它会执行完全不同的操作 看
  • set-cookie 在响应标头中设置,但未显示在“应用程序”->“Cookies”中

    The front end spa is hosted in netlify and backend in heroku And sending the cookies in response header as shown in the
  • 进程完成,退出代码为 139(被信号 11:SIGSEGV 中断)

    我正在尝试执行Python脚本 但我收到以下错误 Process finished with exit code 139 interrupted by signal 11 SIGSEGV 我在 Linux Mint 18 1 Serena
  • 重复消除相似的公司名称

    我有一张包含公司名称的表格 由于人为输入错误 存在许多重复项 对于是否应包含细分 拼写错误等存在不同的看法 我希望所有这些重复项都被标记为一个公司 1c company 1c 1c company 1c game studios 1c wi
  • 在 Python 中将字符串解释为其他数据类型

    我正在将一个文件读入 python 2 4 其结构如下 field1 7 field2 Hello world field3 6 2 这个想法是将其解析成一个字典 该字典需要fieldfoo作为键 冒号后面的任何内容作为值 我想将冒号后面的
  • 如何将 repr 转换为编码字符串[重复]

    这个问题在这里已经有答案了 我有这个str 来自我无法修复的文件 In 131 s Out 131 xce xb8Oph 这接近于 utf8 编码的字符串的表示 In 132 repr Oph encode utf8 Out 132 b x
  • Hangfire 在每台服务器上重复执行作业

    我遇到的情况是 我需要使用hangfire 注册的重复作业才能在集群中的每台服务器上运行 工作是在本地复制一些文件 因此需要定期在每台服务器上运行 到目前为止 我已经尝试使用服务器名称的 id 注册相同的作业 从而为 n 个服务器生成 n
  • JDBC:抱怨无效符号,但看起来不错

    我必须使用 JDBC 写入数据库 hibernate ibatis 不是一个选项 我的数据库是 Oracle 11g 我创建以下查询 insert into user user id username age creation ts val
  • std::put_time 格式

    我想了解如何工作 std put time 以及如何获取 YYYY MM DD HH MM SS 格式的日期戳 现在我写这样的东西 std chrono time point
  • 将对象转换为数组的 PHP 错误

    我之前有过这个问题 最后得出的结论是这是 5 2 5 中的一个错误 好吧 它在 5 2 6 中仍然有问题 至少对我来说 请告诉我它是否损坏或对您有用 obj new stdClass obj gt foo bar obj gt 0 zero
  • 在 Oracle SQL 中使用复杂 IF 语句

    您好 我正在尝试在 Band 属性中编写 If 语句 但没有成功 T T 我想做的是根据所有者类别 棚屋和供水属性设置单个角色 A B C D 任何帮助都会很棒 CREATE TABLE Rent Band Plot ID NUMBER 3
  • 从字符串列表中提取每个单词

    我正在使用Python 我的清单是 str Hello dude What is your name My name is Chetan 我想将字符串中每个句子中的每个单词分开并将其存储在new list中 new list 会像 new
  • 通过“this”与“prototype”分配函数有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Javascript 中使用 prototype 与 this 我对这两种向函数添加方法的类型感到困惑 让我用一个例子来解释一下 var foo function this bar functio
  • ConvertTo 函数中 Mat 的内存泄漏

    我在管理函数中的内存时遇到一些问题 Valgrid 说我在转换函数后出现内存泄漏 难道是因为数据没有正常发布 我尝试使用临时指针 但我的程序崩溃或无法正常工作 以前有人遇到过这个问题吗 this gt images push back ne