OpenCV学习- 配置

来源:互联网 发布:淘宝客开发论坛 编辑:程序博客网 时间:2024/06/07 16:03

1. 下载OpenCV2.4.9,找一个路径(比如说D:\)Extract,得到source和build两个文件夹。source包含了.hpp(source\Include)、.cpp(source\modules\)和cmake等文件,Build包含了.dll(build\x64\vc12\bin)和.lib(build\x64\vc12\lib)等文件。

这些都是可以直接用的,如果不需要GPU的支持,可以跳到步骤3。如果需要GPU的支持,则需要下载cuda,我用的是7.5.18。

2. OpenCV安装完毕后,需要:

1. 设置PC的环境变量Path(为了能找到dll):D:\opencv\build\x64\vc12\bin; D:\opencv\build\x86\vc12\bin

如果你的工程是win32的,而你只设置了x64的环境变量,那么就会出现LINK 1152错误:“模块计算机类型“x64”与目标计算机类型“X86”冲突”,可以理解,调用dll冲突了嘛。


3. 安装cuda完毕后,需要用cmake对OpenCV的lib和dll重新编译。你可以把cmake想象为一个用来跨平台编译的脚本。

     3.1 第一次用cmake需要选择Generator,这里我们选Visual Studio 12 2013 Win64(之所以算Win64是因为很多CUDA的函数必须要64bit来支持)。

     3.2 Configure。出现一堆红颜色的。选择WITH_CUDA,WITH_CUBLAS,WITH_OPENGL。CUDA_GENERATION选择Kepler(否则后面编译OpenCV时会报错 Unsupported gpu architecture 'compute_11'。

     3.3 再次Generate。你会看到:

Other third-party libraries:

Use IPP: NO

Use Eigen: NO

Use TBB: NO

Use OpenMP: NO

Use GCD NO

Use Concurrency YES

Use C=: NO

Use Cuda: YES (ver 7.5)

Use OpenCL: YES

     3.4  Generate。于是你在build下得到了OpenCV.sln。打开它,先对opencv_core和opencv_gpu Build一下,看看对不对。opencv_core的Build结果:

“正在创建库 D:/opencv/build/lib/Debug/opencv_core249d.lib 和对象 D:/opencv/build/lib/Debug/opencv_core249d.exp  opencv_core.vcxproj -> D:\opencv\build\bin\Debug\opencv_core249d.dll ========== 生成:  成功 3 个,失败 0 个,最新 0 个,跳过 0 个 ==========”

此时如果弹出“需要重新加载”的对话框,点击“重新加载”。

     3.5  依次进行ALL_BUILD(生成很多OpenCV项目文件)、INSTALL(在build下生成install文件夹)。


有几个没有正确生成:

opencv_contrib:2>------ 已启动生成:  项目: opencv_nonfree, 配置: Debug x64 ------
2>LINK : fatal error LNK1104: 无法打开文件“..\..\lib\Debug\opencv_gpu249d.lib”
3>------ 已启动生成:  项目: opencv_contrib, 配置: Debug x64 ------
3>LINK : fatal error LNK1104: 无法打开文件“..\..\lib\Debug\opencv_nonfree249d.lib”



4.在项目->属性->VC++目录->库目录中添加路径:D:\opencv\build\x86\vc12\lib; D:\opencv\build\x64\vc12\lib;  (这里的vc12指VS2013)

否则会报错:error LNK1104: 无法打开文件“opencv_imgproc249d.lib”

因为在链接时,VS是按照库目录去找lib的。


5 在项目->属性->链接器->附加依赖项中添加lib(注意,下文lib名称中的249指的是OpenCV2.4.9,其他版本的不是这个值)
对于debug的工程有(也可以用哪个添加哪个):

opencv_imgproc249d.lib  
opencv_calib3d249d.lib  
opencv_contrib249d.lib  
opencv_core249d.lib  
opencv_features2d249d.lib  
opencv_flann249d.lib  
opencv_gpu249d.lib  
opencv_highgui249d.lib  
opencv_legacy249d.lib  
opencv_ml249d.lib  
opencv_nonfree249d.lib  
opencv_objdetect249d.lib  
opencv_ocl249d.lib  
opencv_photo249d.lib  
opencv_stitching249d.lib  
opencv_superres249d.lib  
opencv_ts249d.lib  
opencv_video249d.lib  
opencv_videostab249d.lib 

对于Release的工程有:

opencv_imgproc249.lib  
opencv_calib3d249.lib  
opencv_contrib249.lib  
opencv_core249.lib  
opencv_features2d249.lib  
opencv_flann249.lib  
opencv_gpu249.lib  
opencv_highgui249.lib  
opencv_legacy249.lib  
opencv_ml249.lib  
opencv_nonfree249.lib  
opencv_objdetect249.lib  
opencv_ocl249.lib  
opencv_photo249.lib  
opencv_stitching249.lib  
opencv_superres249.lib  
opencv_ts249.lib  
opencv_video249.lib  
opencv_videostab249.lib 

如果不添加,在Build时会报LNK2019 、LNK2001、LNK1120的错误:无法解析的外部符号。




0 0
原创粉丝点击