64位vs2010的opencv配置和图片读取问题

  在网上看过很多配置教程,但大多是32位的,毕竟后来大家才习惯安装64位的windows,而且opencv版本也有点早。所以这篇记录一下自己的配置过程,和最近遇到的小问题。我的配置方法主要基于此篇中文帖子(http://www.opencv.org.cn/forum/viewtopic.php?t=15836)。

  下载并安装后,解压在一个方便的目录下(先在我较习惯c:\)。然后在环境变量里加入(\OpenCV\build\x64\vc10\bin\),那些dll文件。一般情况下电脑账户只有一个人,所以加在系统或用户的Path里无所谓了。然后新建项目,先设置成x64。然后配置属性-c++-常规里-附加包含目录中加入\OpenCV\build\include\。注意是build下的inlucde,在论坛里看过直接加opencv下的,容易混淆。

然后在连接器,常规input中的附加依赖项:

"C:\opencv\build\x64\vc10\lib\opencv_core244d.lib"
"C:\opencv\build\x64\vc10\lib\opencv_highgui244d.lib"
"C:\opencv\build\x64\vc10\lib\opencv_video244d.lib"
"C:\opencv\build\x64\vc10\lib\opencv_ml244d.lib"
"C:\opencv\build\x64\vc10\lib\opencv_legacy244d.lib"
"C:\opencv\build\x64\vc10\lib\opencv_imgproc244d.lib"
"C:\opencv\build\x64\vc10\lib\opencv_objdetect244d.lib"

"C:\opencv\build\x64\vc10\lib\opencv_contrib244d.lib"   


  注意引号分号。如果仍提示某个lib找不到,可以试下#pragma comment(lib, "opencv_objdetect244d.lib")加在定义里。如果调试时提示找不到tbb_debug.dll,它在\opencv\build\common\tbb\intel64\vc10下,把它也加进环境变量的path里。网上也有不少解决方案可以搜索。


  最后说两句我在用opencv的图遇到的问题。之前用JAVA写了一个网络抓图用来建个实验数据库的程序,抓来的都是jpg格式,可是有些好端端的图java竟然报异常,在电脑里却能正常显示。后来得知java对图片支持并不那么全面,据说图片处理那个库很久没改进过了。它只支持rgb类型的JPEG,所谓的CMYK没法正常读取。在抓图中有些图片不存在,会返回一个报错图片。这类图片不会导致java异常,也可以用windows预览或者画图打开,颜色通道尺寸等属性俱全。可是在photoshop下却无法打开,用opencv的cvLoadImage读取会导致未处理异常,0x00000什么的访问冲突,ipl指针里的属性都是错误。我当然想catch到这个异常并删掉图片,无论如何都报错并停止运行。在官网上看了下

http://docs.opencv.org/2.4.3rc/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#Mat imread(const string& filename, int flags)   

  除了C语言的读取方法ipl* cvLoadimage外,可以用C++的imread。所以我猜可能Mat类才有异常捕捉,后来果然成功了,用imread来读取图片可以甩出这个异常处理。在此也吐槽下,在官网查询documents时,发现有些功能有C++类可用,有些只能原始用C语言原始的指针。这种混乱十分不利初学者的上手,指针使用与释放有时真的很头疼。目前的教材书里用的也还是C语法,希望可以尽快改进,便于初学者上手。

21/Nov/2012更新,在附加依赖中加入"C:\opencv\build\x64\vc10\lib\opencv_contrib242d.lib",为了调用Ptr<FaceRecognizer>。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值