Visual Studio 2015编译安装OpenCV 3.0和opencv_contrib
2016-04-01 10:08
477 查看
OpenCV 3.0已于往年6月份宣布,新版本对本有API举行了清算,经过引进T-API、IPP、NEON取得极大的机能晋升,并变化为模块化布局。然而由于VS2015在其后发布,OpenCV 3.0安装包提供了对VC11和VC12的支持而没有VC14。如果使用VC12下的文件,虽然可以编译,但运行时会报错“应用程序无法正常启动0xc000007b”。于是乎在VS2015下只能自行编译OpenCV 3.0方能使用。但这样也有一个好处就是方便查看OpenCV的源码。
1、分别下载并安装:CMake3.5.1、OpenCV3.0、VS2015
a) CMake3.5.1下载地址:https://cmake.org/download/
b) OpenCVcontrib下载地址:https://github.com/Itseez/opencv_contrib
c) OpenCV下载地址:http://opencv.org/downloads.html
2、用CMake生成OpenCV的VS2015解决方案
(1) 点击cmake-gui.exe,运行CMake;
(2) 点击“Browse Source…”按钮选择源代码路径
(3) 点击“Browse Build…”按钮选择生成路径;
(4) 点击Configure 在弹出的对话框中选择生成项目版本和编译器;
(5) 在红色栏中勾选需要生成的项目及属性;
如需编译
上边是对应于编译动态链接库版本的,如果编译静态链接库版本,需要取消
为了opencv的最终生成的库打包成一个world,需要选择
(6) 点击Configure 完成后,点击Generate 生成项目工程即可;
3、打开opencv工程并编译源代码,生成我们所需要的动态链接库
(1) 双击生成目录下OpenCV.sln,打开解决方案;
(2) 在解决方案资源管理器窗口中选择ALL_BUILD项目,右键进行“生成”;
(3) 从Debug模式切换到Release再次对项目进行生成;
生成的链接库文件分别在
4、配置Opencv环境变量
(1) 右击“我的电脑”选择依次“属性”→“高级系统设置”→“环境变量”→”新建”进行编辑,在添加变量名“OPENCV”,变量值为“$(opencv_dir)\build”;
(2) 在环境变量path末尾添加生成的链接库路径;
(3) 注销或重启系统使环境变量生效。
5、创建测试工程
(1) 在VS2015中新建空项目
(2) 编辑
(3) 配置包含目录、库目录及附加依赖项;
在属性管理器中双击Debug|Win32,选择VC++目录下的包含目录,添加
库目录,添加
链接器->输入->附加依赖项处添加:
对于Release同理,双击Release”Win32,选择包含目录,添加
库目录,添加
(4) 生成项目并运行,结果如下图所示。
1、CMake Error at 3rdparty/ippicv/downloader.cmake
解决办法:
a) 手动下载ippicv_windows_20141027.zip
b) 将上面的ZIP文件放在OpenCV的目录下面,我的路径是下面这个:
c) 打开CMake,重新Configure生成工程文件即可。
2、OpenCV 3.0编译失败
编译步骤
下面介绍编译步骤:1、分别下载并安装:CMake3.5.1、OpenCV3.0、VS2015
a) CMake3.5.1下载地址:https://cmake.org/download/
b) OpenCVcontrib下载地址:https://github.com/Itseez/opencv_contrib
c) OpenCV下载地址:http://opencv.org/downloads.html
2、用CMake生成OpenCV的VS2015解决方案
(1) 点击cmake-gui.exe,运行CMake;
(2) 点击“Browse Source…”按钮选择源代码路径
$(opencv_dir)/sources;
(3) 点击“Browse Build…”按钮选择生成路径;
(4) 点击Configure 在弹出的对话框中选择生成项目版本和编译器;
(5) 在红色栏中勾选需要生成的项目及属性;
如需编译
opencv_contrib,则设置
OPENCV_EXTRA_MODULE_PATH的值为
$(opencv_contrib_dir)/modules,其中
“$(opencv_contrib_dir)”表示
opencv_contrib解压路径。
上边是对应于编译动态链接库版本的,如果编译静态链接库版本,需要取消
BUILD_SHARE_LIBS
为了opencv的最终生成的库打包成一个world,需要选择
BUILD_opencv_world
(6) 点击Configure 完成后,点击Generate 生成项目工程即可;
3、打开opencv工程并编译源代码,生成我们所需要的动态链接库
(1) 双击生成目录下OpenCV.sln,打开解决方案;
(2) 在解决方案资源管理器窗口中选择ALL_BUILD项目,右键进行“生成”;
(3) 从Debug模式切换到Release再次对项目进行生成;
生成的链接库文件分别在
$(build_dir)/bin/Debug和
$(build_dir)/bin/Release下。
4、配置Opencv环境变量
(1) 右击“我的电脑”选择依次“属性”→“高级系统设置”→“环境变量”→”新建”进行编辑,在添加变量名“OPENCV”,变量值为“$(opencv_dir)\build”;
(2) 在环境变量path末尾添加生成的链接库路径;
(3) 注销或重启系统使环境变量生效。
5、创建测试工程
(1) 在VS2015中新建空项目
OpenCVDisplayImage;
(2) 编辑
OpenCVDisplayImage.cpp,并将图片复制到项目目录下;
#include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() { // 读入一张图片(游戏原画) Mat img=imread("pic.jpg"); // 创建一个名为 "游戏原画"窗口 namedWindow("游戏原画"); // 在窗口中显示游戏原画 imshow("游戏原画",img); // 等待6000 ms后窗口自动关闭 waitKey(6000); }
(3) 配置包含目录、库目录及附加依赖项;
在属性管理器中双击Debug|Win32,选择VC++目录下的包含目录,添加
$(OPENCV)\include; $(OPENCV)\include\opencv; $(OPENCV)\include\opencv2;
库目录,添加
$(OPENCV)\x86\vc14\lib\Debug; $(OPENCV)\x86\vc14\3rdparty\lib\Debug;
链接器->输入->附加依赖项处添加:
opencv_ts300d.lib; opencv_world300d.lib;
对于Release同理,双击Release”Win32,选择包含目录,添加
$(OPENCV)\include; $(OPENCV)\include\opencv; $(OPENCV)\include\opencv2;
库目录,添加
$(OPENCV)\x86\vc14\lib\Release; $(OPENCV)\x86\vc14\3rdparty\lib\Release;
(4) 生成项目并运行,结果如下图所示。
编译过程中的问题
下面介绍编译步骤:1、CMake Error at 3rdparty/ippicv/downloader.cmake
CMake Error at 3rdparty/ippicv/downloader.cmake:75 (message): ICV: Failed to download ICV package: ippicv_windows_20141027.zip. Status=18;"Transferred a partial file" Call Stack (most recent call first): 3rdparty/ippicv/downloader.cmake:108 (_icv_downloader) cmake/OpenCVFindIPP.cmake:235 (include) cmake/OpenCVFindLibsPerf.cmake:12 (include) CMakeLists.txt:526 (include) Configuring incomplete, errors occurred!
解决办法:
a) 手动下载ippicv_windows_20141027.zip
b) 将上面的ZIP文件放在OpenCV的目录下面,我的路径是下面这个:
E:\develop\opencv\include\opencv-3.0.0-windows\sources\3rdparty\ippicv\downloads\windows-b59f865d1ba16e8c84124e19d78eec57
c) 打开CMake,重新Configure生成工程文件即可。
2、OpenCV 3.0编译失败
相关文章推荐
- linux arm的存储分布
- 在WinDBG中, 使用.shell命令来搜索字符串
- Linux shell 之 提取文件名和目录名的一些方法
- linux环境下 C++性能测试工具 gprof + kprof + gprof2dot
- Dynamics CRM2016 Web API之Create related entities in one operation
- Dynamics CRM2016 Web API之Create related entities in one operation
- Dynamics CRM2016 Web API之Create related entities in one operation
- Dynamics CRM2016 Web API之Create related entities in one operation
- Centos 6.5 编译安装Nginx-1.5.13+php-5.5.10+Mysql-5.5.37
- xshell 连接到虚拟机
- docker 镜像中包含数据库环境和运行环境
- Tomcat部署与Geoserver安装介绍(二)
- Linux阵营要变成一个酱缸? 一盘散沙?
- Tomcat部署与Geoserver安装介绍(一)
- CentOS下安装JDK7
- Linux设备树翻译计划
- willMoveToParentViewController和didMoveToParentViewController
- Linux时间戳和标准时间的互转
- Flask网站开发常见问题
- CodeForces 629D Babaei and Birthday Cake(线段树维护DP)