opencv中的一些陷阱 坑死我了~~~~(_)~~~~

        1.这几天被opencv给坑的够惨,好好的程序,先是因为imread()不能读文件,整了很久没整出来,然后改了下path路径,没想到后面彻底奔溃了,,,,前后大概2天吧,才在一篇博文上看到:2.4.5版本的opencv在x86路径下相比以前的版本多了vc11路径,但是Path环境变量设置为x86\vc11的话,最后在程序执行时会提示MSVCP110D.dll丢失。而我就遇到了这个问题,然后在网上各种找dll可发现下的dll要不然就提示没用,要不然就是版本不匹配,试了好久就是没有找到匹配的,后面听同学的把vs给卸载了重装,重装后还是不行,然后继续到网上找原因,才找到这个原因,真的被坑大了。

        2,然后就是imread读文件问题,即使链接库版本正确(debug的库为xxxd.dll,release的库为xxx.dll),参数正确,在debug模式下也无法读文件,release模式下能读文件。找了很久,终于找到解决办法:

如果是debug版,将运行时库设置为:多线程调试(/ MTD)

如果是release版,将运行时库设置为:多线程(/ MT)

当然,如果觉得不好用,可以换一种方法,就是通过

IplImage*iplImg = cvLoadImage(filename.c_str(),1);
Mat input_image(iplImg,true);

来获得你需要的矩阵,这样也很方便,不一定要在imread上面死抠,没什么意思!

        3.opencv中拷贝使用不当导致内存泄漏:

opencv中常用的拷贝函数有clone和copy,但这两者中有些区别,clone,是完全的复制,是将被复制内图片内容从内存中完完全全的复制过去,所以要复制的图片指针可以不要先分配内存,而这也就导致了一个问题,也就是说如果这个指针已经分配了内存,你在clone前又没有释放的话,clone不会给你释放,他只是重新给你划定一块空间,这样就导致了内存泄漏。还在网上看到一个问题“clone的源图像消失后会影响clone而来的图像”。我也不太明白是什么意思。但在实践中确实有这种感觉,当源图像消失后clone而来的图像感觉也变了。这边还要请教大神。。copy是更理智的复制,如果源图像设置了roi的话他只会复制roi。还有点很重要的是在使用copy前必须先为要复制的图像分配内存。当然要注意大小要和被复制的图片大小一致。也就是说copy函数不会为你分配内存空间,而这样做的好处也就是不会造成上面说的内存泄露!此外就是源图像消失后不会影响copy得到的图像!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一篇需要膜拜的文篇--Javascript异步编程模型进化(转)

要我能用得这么熟, 那前端出师了哈。 http://foio.github.io/javascript-asyn-pattern/ 改天一个一个亲测一下。 Javascript语言是单线程的,没有复杂的同步互斥;但是,这并没有限制它的使用范围;相反,借助于…

很强大的FFMPEG API Documentation

http://wiki.aasimon.org/doku.php?idffmpeg:ffmpeg 点击打开链接

HALCON示例程序obj_diff.hdev算子obj_diff 的使用

HALCON示例程序obj_diff.hdev算子obj_diff 的使用 示例程序源码(加注释) 关于显示类函数解释 read_image (Image, ‘particle’)二值化 threshold (Image, Region, 57, 255)分割连通域 connection (Region, ConnectedRegions) dev_close_window () get…

JS函数方法Call Apply Bind运用

JS 函数非继承的call和apply方法 同:call & apply 主要是用于扩展this指向,降低this作用域与函数之间的耦合度; 区别:传参差异 function.call(this/object,params1,params2,...) 第一个参数为作用域指向参数,后边参…

IplImage, CvMat, Mat 的关系和相互转换 再次理解 /(ㄒoㄒ)/~~

opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“…

HALCON示例程序optical_flow.hdev如何使用optical_flow_mg计算图像序列中的光流以及如何分割光流。

HALCON示例程序optical_flow.hdev如何使用optical_flow_mg计算图像序列中的光流以及如何分割光流。 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window () read_image (Image1, ‘xing/xing000’) dev_open_window_fit_ima…

数字信号处理原理

关于傅里叶变换的解释,在下面的链接:http://blog.jobbole.com/70549/ 。讲的挺详细的: 注意点: 1、信号处理基于这么一个概念,待处理的信号(?)都可以分解为正弦波,不同…

webpack的一些常用配置 (转)

webpack 的配置文件就是 Node 的一个模块,它导出的将是一个对象 module.exports {entry: ./entry,output: {path: path.resolve(__dirname, dist),filename: bundle.js} }如果直接使用 webpack 来执行编译,webpack 默认读取的是当前目录下的 webpack.co…

CvMat,Mat和IplImage之间的转化和拷贝

1、CvMat之间的复制 //注意:深拷贝 - 单独分配空间,两者相互独立 CvMat* a; CvMat* b cvCloneMat(a); //copy a to b 2、Mat之间的复制 //注意:浅拷贝 - 不复制数据只创建矩阵头,数据共享(更改a,b,c的任意一…

HALCON示例程序particle.hdev测量小圆部分

HALCON示例程序particle.hdev测量小圆部分 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window () dev_open_window (0, 0, 512, 512, ‘black’, WindowID) set_display_font (WindowID, 14, ‘mono’, ‘true’, ‘false’…

Java List 分页

//分页&#xff0c;根据country或者site分br/>Overridepublic List<Integer> getSitesPage(Integer parentLevel, Integer currentPage) {List<Integer> subFrames getSites(parentLevel) ;int currentNum ( currentPage - 1 ) * CardViewUtil.PREPAGE_NUM ;D…

跟多导出数据库的方法

链接&#xff1a;http://www.2cto.com/database/201207/139330.html转载于:https://www.cnblogs.com/nycj/p/5661151.html

rtp协议详解/rtcp协议详解

、简介 目前&#xff0c;在IP网络中实现实时语音、视频通信和应用已经成为网络应用的一个主流技术和发展方向&#xff0c;本文详细介绍IP协议族中用于实时语音、视频数据传输的标准协议RTP&#xff08; Real-time Transport Protocol&#xff09;和RTCP&#xff08;RTP Control…

MVC开发中的常见错误-04-“System.NullReferenceException”类型的异常在 BBFJ.OA.WebApp.dll 中发生,但未在用户代码中进行处理...

未将对象引用设置到对象实例,又名空指针异常,伴随程序员开发的一生. 查看详细信息得知: SetUserRoleInfo() 首先想到的是 IBLL.IRoleInfoService RoleInfoService { set; get; }应该是config文件中反射出现了问题 <?xml version"1.0" encoding"utf-8"…

HALCON示例程序pcb_inspection.hdev检测pcb印刷缺陷

HALCON示例程序pcb_inspection.hdev检测pcb印刷缺陷 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 read_image (Image, ‘pcb’) dev_close_window () get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, ‘black’, WindowHa…

profibus GSD文件详解

profibus GSD文件详解 2015-6-19 通过PROFIBUS DP用功能块在主、从站之间实现双向数据传送&#xff1a;在主站PLC可以通过调用SFC14“DPRD_DAT”和SFC15“DPWR_DAT”来完成和从站的数据交换&#xff0c;而对于从站来说可以调用FC1“DP_SEND”和FC2“DP_RECV”完成数据的交换。 …

继承与派生

# 1、什么是继承&#xff1f;# 继承一种新建类的的方式&#xff0c;在python中支持一个儿子继承多个爹# 新建的类称为子类或者派生类&#xff0c;# 父类又可以称为基类或者超类## 子类会”遗传“父类的属性## 2、为什么要用继承# 减少代码冗余## 3、怎么用…

opencv问题解析

错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 C:\Users\Administ 解决方法如下&#xff1a;项目\属性\配置属性\清单工具\输入和输出\嵌入清单&#xff1a;原来是“是”&#xff0c;改成“否”。 LINK : fatal error LNK1104: 无法打开文件“opencv_calib3d249…

RTSP协议介绍

1. 实 时流协议RTSP RTSP[3]协 议以客户服务器方式工作&#xff0c;它是一个多媒体播放控制协议&#xff0c;用来使用户在播放从因特网下载的实时数据时能够进行控制&#xff0c;如&#xff1a;暂停/继 续、后退、前进等。因此 RTSP 又称为“因特网录像机遥控协议”。 1.1. …

mysql中出现没有权限访问或者查看全部数据库的问题---用客户端第一次打开的时候...

在my.cnf中mysqld目录下的socket/var/lib/mysql/mysql.sock一行下面添加skip_grant_tables---------------报错退出然后重新启动server mysqld restart 登录进去转载于:https://www.cnblogs.com/yecao8888/p/5661250.html