vs2008调用opencv2.4.9的imread()函数失败解决办法

这两天在看opencv的C++接口函数,刚开始就出现问题:

一个简单的显示图像的程序,就是运行不成功:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <string>
using std::string;
using namespace cv;
int main()
{
	string str="E:\\test\\LENA.BMP";
	Mat img1= imread(str);
	namedWindow("LENA");
	imshow("LENA",img1);
	waitKey();
	return 1;
}

开始还怀疑是不是自己太久没写代码,忘了文件绝对路径的写法,查了下,斜杠\是保留符号,所以要正确编译的话需要两个斜杠\\,并没有错。

用绝对路径的话就imread()这一步内存溢出:

图像直接放工程目录下的话读出来的图像就是空的:

纠结了一下午,终于找到了问题所在:

解决思路:

1、debug和release添加的库是否正确。

网上说如果库没添加正确就会出现这个情况,debug的应该是有XXXd.lib后缀的,但我的库是添加正确的。

debug加的库:

opencv_calib3d249d.lib

opencv_contrib249d.lib

opencv_core249d.lib

opencv_features2d249d.lib

opencv_flann249d.lib

opencv_gpu249d.lib

opencv_highgui249d.lib

opencv_imgproc249d.lib

opencv_legacy249d.lib

opencv_objdetect249d.lib

opencv_ts249d.lib

opencv_video249d.lib

opencv_nonfree249d.lib

opencv_ocl249d.lib

opencv_photo249d.lib

opencv_stitching249d.lib

opencv_superres249d.lib

opencv_videostab249d.lib

Release加的库:

opencv_calib3d249.lib

opencv_contrib249.lib

opencv_core249.lib

opencv_features2d249.lib

opencv_flann249.lib

opencv_gpu249.lib

opencv_highgui249.lib

opencv_imgproc249.lib

opencv_legacy249.lib

opencv_ml249d.lib

opencv_objdetect249.lib

opencv_ts249.lib

opencv_video249.lib

opencv_nonfree249.lib

opencv_ocl249.lib

opencv_photo249.lib

opencv_stitching249.lib

opencv_superres249.lib

opencv_videostab249.lib

2、vs2008不支持opencv2.4.9

查看添加包含库文件路径发现:D:\Program Files\opencv2.4.9\build\x86\vc10\lib,我采用的是vc10版本的库,而opencv2.4.9中没有vc9版本的。用vs2010重新新建了一个项目,结果运行成功,奔溃。。。

先前用的都是c接口的函数,估计没有大的影响,结果这次用c++接口函数则出现了这么个问题,还好只是这个简单程序调试时就发现了这个隐患,要不然后面搞大工程时遇上就麻烦了。

如果要在vs2008上使用opencv2.4.9,需要用cMake自己重新编译一个库。

vs2008调用opencv2.4.9的imread()函数失败解决办法,布布扣,bubuko.com

时间: 07-11

vs2008调用opencv2.4.9的imread()函数失败解决办法的相关文章

android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化 的解决办法

今天在做一个含有CheckBox 的ListView时,发现当初始化CheckBox的状态后, 滚动ListView,其中CheckBox 的选中状态不停的发生变化.最后发现原因是 ListView滚动时自动调用 onCheckedChanged 导致的.在查看了各种博客的解决办法后,国外的网站上有一个办法解决了我的问题.写下来分享一下. 在自定义Adapter的getView方法中这样写就行了. Java代码   //在初始化CheckBox状态和设置状态变化监听事件之前,先把状态变化监听事件

FrameWork中SQLServer数据源使用宏函数出错解决办法

环境:DW是SQLServer2008 建模工具:Cognos FrameWork Version:Cognos10.2 出现问题:在FM中创建查询主题,sql类型数据源,引入宏函数#CAMIDList()# 验证模型直接报错如下 解决办法,在#CAMIDList()# 函数外套用sq函数,如下所示 #sq(CAMIDList())# like '%u:cn='+user_id+'"%' OK问题解决 主要目的是把like前后的对象都转为字符串的值 然后进行like

OCC平台转到VS2015下MFC程序调用控制台失败解决办法

文章转自:https://blog.csdn.net/c437yuyang/article/details/54944668 一直用vs2010对occ进行编译,前几天转到vs2015平台下,好不容易花了两天的时间重新配置好了,但是发现控制台无法输入输出,一开始没在意,但是后面调试时很不方便,就决定将控制台调回来. 一开始以为是程序出错,引入了不同的输入输出流函数等,导致流无法定位,于是在头文件里面屏蔽了相关的 #include <iostream> ,#include <fstream

Oracle没有WM_CONCAT函数的解决办法

WM_CONCAT是oracle的非公开函数,并不鼓励使用,新版本oracle并没有带此函数,需要手工加上. 1.下载三个文件:owmctab.plb  . owmaggrs.plb . owmaggrb.plb 2.用sqlplus登录:sqlplus -logon sys/123 as sysdba 3.执行@C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmaggrb.plb; 如果执行结果报错,说找不到WMSYS用户,那么执行 @C:\Users\JOYTRAV

WordPress ”无法发送电子邮件,可能原因:您的主机禁用了mail()函数“的解决办法

WordPress网站中出现 "无法发送电子邮件,可能原因:您的主机禁用了mail()函数"的情况一般都是因为所在主机环境不支持在线邮件收发功能导致,如果不支持的话,那么像类似 Newsletter.Contact Form 7 等需要用到邮件收发功能的插件就将无法使用.不过,对于这种问题,绝大多数的主机或服务器还是可以解决的,如果以下方法都尝试后还是无法解决邮件收发功能,那么就只能联系你的空间服务商来解决了. 检查空间是否支持 邮件收发 功能的方法 1. 非登录状态,访问网站后台登录

WCF调用服务时多了几个参数---解决办法

WCF interface前加上如下属性(把原来的ServiceContract属性改为):[ServiceContract,XmlSerializerFormat(Style = OperationFormatStyle.Rpc)]就没有额外参数了通讯双方既然是以XML来传送参数的,XML语法上允许有些标记出现空值,.net 2.0也允许int等类型有空值,所以会出现你说的额外参数,这些额外参数指示是否出现空值.XmlSerializerFormat(Style = OperationForm

【android】从源码上分析ListView/GridView调用setEmptyView不起作用的原因及解决办法

当我们使用ListView或GridView的时候,当列表为空的时候,我们往往需要一个Loading或者一段提示文字又或者一个特殊的View来提示用户操作,这个时候就用到了setEmptyView()方法. setEmptyView()其实是AdapterView的方法,而我们开发中常用到的ListView, GridView, ExpandableListView等都是继承于AdapterView的,所以可以直接调用这个方法. 但是问题来了,当你这个emptyview不在当前的View hie

HttpWebRequest调用WebService后台需要Session信息问题的解决办法

今天在用HttpWebRequest调用后台ASP.NET 的WebService方法时遇到了一个问题,后台的WebService方法里使用到了Session对象中的用户信息,而Session对象中的用户信息是在登录时设置,介于小生此次仅是调用了一个WebService,并没有从Web页面登录,故没有Session信息而报错. WebService的方法不能更改,所以我决定模拟登录,先调用一个登录的WebService,设置好Session信息,然后再调用目标WebService即可获得Sess

spring boot继承web和mybatis时,调用接口删除记录出现的空指针以及解决办法

前两天在学spring boot的时候,出现了一个很奇怪的错误,因为是第一次使用spring boot,所以没想到会遇到这种莫名其妙的bug,即调用接口删除数据库中一条记录的时候,数据库中记录事实上以及被删除了,但是却返回一个null,这就令我百思不得其解了,理论上,删除的话,会返回受影响的记录的条数. 最后排查了一圈,结果却十分令我大跌眼镜,真的很简单!下面写的代码: controller类,这里由于后来数据库sql改了,为了测试like的搜索功能,所以前面的index方法参数并未进行及时修改