博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VS2010平台下的OpenCV、EmguCV( C#)安装、使用配置
阅读量:6620 次
发布时间:2019-06-25

本文共 3344 字,大约阅读时间需要 11 分钟。

OS:Win7旗舰版64位

平台:VS2010旗舰版 x86

安装包版本:OpenCV2.4.2 x86 下载地址:

      EmguCV2.4.2 x86 下载地址: (GPU版本)

OpenCV:

1. 解压

为了便于管理,我在D盘根目录下新建了CV文件夹,然后解压至下面。

2. 设置系统变量

实际上我是在"用户变量"处,新建了PATH项,内容:

;D:\CV\OpenCV2.4.2\build\x86\vc10\bin;

网上有说还需要新建OPENCV项,内容为D:\CV\OpenCV2.4.2\build,我没有加进去,也配通了。暂时没有发现其作用。 留意下面包含tbb

————————下面是每个项目的配置————————

3. 建立一个demo

在C++下,新建一个“win32控制台程序”,“空项目”即可,输入以下代码:

#include "highgui.h"int main(){const char* imagename = "D:/Demo.jpg";//随便放一张jpg图片在D盘或另行设置目录cv::Mat img = cv::imread(imagename);if(img.empty()) return -1;//是否加载成功if(!img.data) return -1;cv::namedWindow("image", CV_WINDOW_AUTOSIZE);cv::imshow("image", img);cv::waitKey();return 0;}

  

4. 配置

(1)、在“视图”中打开“属性管理器”;
(2)、在“属性管理器”中双击Demo的项目名称;
(3)、在“Demo属性页”->“VC++目录”->“包含目录”中添加下面一行(包括所有分号):
;D:\CV\OpenCV2.4.2\build\include;D:\CV\OpenCV2.4.2\build\include\opencv;D:\CV\OpenCV2.4.2\build\include\opencv2;

(4)、在“Demo属性页”->“VC++目录”->“库目录”中添加下面一行(包括所有分号):
;D:\CV\OpenCV2.4.2\build\x86\vc10\lib;

(5)、在“Demo属性页”(“配置”==“Debug”)->“配置属性”->“链接器”->“输入”->“附加依赖库”中添加下面一行(包括所有分号):

;opencv_core242d.lib;opencv_highgui242d.lib;opencv_video242d.lib;opencv_ml242d.lib;opencv_legacy242d.lib;opencv_imgproc242d.lib;
(6)、在“Demo属性页”(“配置”==“Release”)->“配置属性”->“链接器”->“输入”->“附加依赖库”中添加下面一行(包括所有分号):
;opencv_core242.lib;opencv_highgui242.lib;opencv_video242.lib;opencv_ml242.lib;opencv_legacy242.lib;opencv_imgproc242.lib;

至此配置基本完毕,我运行的时候发现报错:丢失tbb_debug.dll。安装TBB,配置用户变量,问题解决。

软件包名称:tbb40_20120613oss_win.zip (Intel TBB)

下载地址:

http://threadingbuildingblocks.org/uploads/77/187/4.0%20update%205/tbb40_20120613oss_win.zip

用户变量PATH添加:D:\CV\tbb40_20120613oss\bin\ia32\vc10;

至此,OpenCV2.4.2配置完成,程序顺利运行。

 

EmguCV:

过程类似。我安装在D:\CV下面,以便统一管理。

用户变量PATH添加:D:\CV\Emgu\emgucv-windows-x86-gpu 2.4.2.1773\bin; (注意gpu版本,区别于普通版)

调试运行时候,记得添加dll文件的引用。

有人说需要导入UI插件,我没有导入但还是跑通了(主要是绘制界面时候,提供一些特殊的控件)。顺便记下以便备用:

点击“工具(T)” -> “选择工具箱项(X)…” ,在新打开的窗口中选择:“.NET Framework组件”,点击“浏览”,到目录:C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin下,双击 Emgu.CV.UI.dll即可
 
问题&总结:
1,出现
Emgu.CV.CvIvoke错误,或者显示找不到opencv_core242.dll模块:
 
出错目前有两种情况:
一是没有装OpenCV,或是是配置的不成功。我试了下,没有OpenCV,会出现Emgu.CV.CvIvoke错误,或者显示找不到opencv_core242.dll模块。可能EmguCV需要依赖OpenCV。网上有说可以独立存在,可以拷贝DLL文件到exe的当前目录。我试了,发现不行。
二是OpenCV和EmguCV的版本不一致。我之前装了OpenCV2.3.1和EmguCV2.4.2,折腾了一天,包括尝试x64位安装包、复制dl、修改系统变量、修改文件夹名(无空格全英文)等办法,均报上述错误。后来统一了版本2.4.2,轻松跑通。
 
修正:
EmguCV可以独立存在,无需安装OpenCV;
EmguCV对版本比较敏感,目前发现如果是基于2.2开发的程序,在2.4包下就很可能出现CVIvoke错误(一些函数在不同版本中变化较大),保证版本一致即可;或者手动修改相应代码,采用对应版本的编写方式。
 
第二次修正:
EmguCV分两种安装包,gpu版本的,和普通版的。gpu版本目前测试,需要机器支持NVIDIA独立显卡,Intel集成显卡的机器上运行会出现CvInvoke错误,更换为普通版即可;至于GPU版如何在集显的电脑上面跑通,目前尚不清楚,尝试过复制所有的DLL文件(包括显卡的),均以失败告终。
 
第三次修正:
我的机器(64位)上安装x86-gpu版本的EmguCV,运行例子,会报错CvInvoke,跟踪调试说找不到opencvcore_xxx.dll文件。
原因分析:导致该问题的原因很多,一个比较隐晦的原因,是你的机子是集成显卡,而你用的GPU版安装包需要nvcuda.dll动态库。
解决办法:找一个安装了NVDIA显卡驱动的机子,如果是64位机器,拷贝其nvcuda32.dll至当前目录,改名为nvcuda.dll即可(这个比较难发现);如果是32位,直接拷贝nvcuda.dll即可。(A卡独显尚未测试)
 
至此,我在EmguCV和OpenCV安装配置中遇到的所有问题,均已解决。
 
如果安装后在调试程序出现错误,并且怀疑可能是路径配置或者DLL文件问题时,推荐用ProcessMonitor软件跟踪你的程序,尤其是跟踪下运行时调用DLL文件的情况。留心那些fail的调用。
 
2,修改系统变量不会立即生效,有人推荐重启explorer.exe,不推荐,测试发现偶尔会失效,还会容易让你误以为修改过了。推荐注销操作,又快又稳妥。
 
3,部分版本EmguCV需要.net 3.5,这个win7自带的。没有的系统,需要安装下。
 
4,vcredist_x86也是需要的,不然会出错。好在现在EmguCV的安装包自带了。
 
5,留意虽然是x64位的win7系统,但是VS2010、OpenCV、EmguCV均是x86的,依然可以正常配通,不需要x64位的包(有空测试下x64位的安装包)。只是在VS2010里面,CPU要选择x86的。
 
暂时就这些,想到了再来补充。
 
 

转载于:https://www.cnblogs.com/idaidai/archive/2012/09/02/VS2010-OpenCV-EmguCV.html

你可能感兴趣的文章
FastAdmin 极速后台管理框架 1.0.0.20190301_beta
查看>>
Nginx-静态资源
查看>>
OC与JS之间的互调
查看>>
转载: iOS之ProtocolBuffer搭建和示例demo
查看>>
Fescar 发布 0.3.1 版本, 支持 ZooKeeper 注册中心
查看>>
网站优化中四个常见的优化难题及解决方法!
查看>>
继“换帅”之后,通用电气又将出售智能平台业务
查看>>
【死磕 Spring】----- IOC 之解析 bean 标签:BeanDefinition
查看>>
Java部署环境搭建(Linux)
查看>>
使用 will-change 来提升浏览器渲染效果
查看>>
Animation总结(差值器和估值器)
查看>>
Java数据结构与算法(十)-图
查看>>
4.1 在SELinux中客体类存在的目的
查看>>
如何用iPad运行Python代码?
查看>>
PHP学习3——数组
查看>>
E-HPC支持多队列管理和自动伸缩
查看>>
Maven的插件:命令行执行
查看>>
各种设备的CSS3MediaQuery整理及爽歪歪写法
查看>>
CVE-2017-8464远程命令执行漏洞(震网漏洞)复现
查看>>
Java 12 将于3月19日发布,8 个最终 JEP 一览
查看>>