1.
opencv3.1官网版
opencv3.1官网下载提取后会得到两个文件夹:build和sources。 build里的内容是官网已经编译好的。
(1)我的环境介绍:
操作系统:Windows 10 64位
IDE: Microsoft Visual Studio Professional 2015
OpenCV: OpenCV 3.1.0 for windows(下载地址:http://opencv.org/)
(2) 安装好VS和OpenCV,OpenCV的安装其实就是把官方下载的exe解压的自己制定目录(如我的实际地址,D:\opencv)
(3)配置OpenCV的 相关环境变量。安装完成后在系统的环境里找到“Path”,编辑并在后边加入自己的OpenCV目录,如:D:\opencv\build\x64\vc14\bin
(4)新建一个C++的win32控制台项目
opencv_world310d.lib
/*************************************************************************************
如何图片可以正常出现在小窗口中的,则环境搭建好了。
需要注意的几点:
<1> 如果依赖项中配 opencv_world310.lib,模式为debug,就会报
LNK1104: 无法打开文件opencv_world310.lib。这是附加依赖项配置的有问题。 。 opencv_world310d.lib后面的小d对应debug模式,没有d对应release模式。所以如果模式为debug,需要将 opencv_world310.lib换成 opencv_world310d.lib。
<2>图片的存放位置,需要将图片放到项与生成的可执行文件在同一个目录。
如果不想将图片放到可执行文件同目录,可以在代码中给定绝对路径。如下,注意要用\\进行分割
char *srcImageFile = "D:\\ccc.jpg";
也可以通过参数进行传入,通过 项目属性页设置
opencv3.x版本与opencv2.x版本在模块的构成上有很大的差别。 opencv3.1将人脸识别、matlab调用、RGB加工、深层神经网络等内容放到了 OpenCV_contrib库中,想使用其中的功能,则需要自行编译。
(1)准备
vs2015,win10操作系统,opencv3.1我们不需要变动。除此之外,我们还需要准备以下内容。
<1>CMake, 这里我选用cmake-3.4.3-win32-x86版本。
下载地址:http://download.csdn.net/detail/haoyizhi/9837313
注意:之所以使用cmake-3.4.3-win32-x86这个版本,是因为我在之后使用vs2015生成解决方案时,如果 cmake版本过高,会出现 {errorMSB6006:"cmd.exe" 已退出,代码为:-1073741571}这个错误。我尝试了3.4以上到目前最新的所有版本都出现了这个问题,只有3.4.3这个版本可以正常通过。
需要的文件地址:http://download.csdn.net/detail/haoyizhi/9837320
将ffmpeg_version.cmake,opencv_ffmpeg.dll,opencv_ffmpeg_64.dll文件放到
D:\opencv3.1.0\sources\3rdparty\ffmpeg目录(D:\opencv3.1.0\为我的opencv3.1.0安装主目录)
将ippicv_win文件夹放到D:\opencv3.1.0\sources\3rdparty\ippicv目录
<3>下载opencv_contrib-master库
下载地址:http://download.csdn.net/detail/haoyizhi/9836388
解压后的目录结构如下
<4>新建一个目录用来存放cmake编译之后的文件,如我在D盘建立了一个opencv_my的目录
(2) Cmake配置与编译
<1>打开cmake-gui
在where is the source code 处选择opencv3.1的源代码文件夹
在where is build the binaries 处选择cmake编译产生的文件存放文件夹,如我在上一步创建的opencv_my
<2>点击configure按钮 选择 visual studio 14 2015 win64编译器
注意:这里一定要根据自己的实际情况准确的选择
因为我的vs是2015版本,所有选择visual studio 2015
操作系统为64位,所有选择win64
这里的14是vc编辑器
补充:vc与vs的对应关系
<3>点击finish
成功完成,会出现Configuring Done。第一次编译结束。
<4>在搜索框中输入 OPENCV_EXTRA_MODULES_PATH,找到该变量。
值为下载好的 opencv_contrib-master库主目录下的modules目录,如下图为我的modules目录
注意:这里最好 点击值后面的“...”一步步选择文件夹的添加, 因为直接复制过来的分隔符为"\",实际上应该是向前的“/”。如果为"\",会出现如下错误信息
CMake Error at cmake/OpenCVModule.cmake:260 (foreach):
Syntax error in cmake code at
<5>在次点击 configure按钮,进行二次编译。
成功会出现 Configuring done
<6>点击generate
完成出现Generating done
最终,opencv_my中生成的文件如下
(3) vs2015生成解决方案与安装文件
<1> 找到opencv_my文件夹里的OpenCV.sln文件,并双击,用vs2015打开
<2>生成解决方案
这个过程时间比较长,需要耐心等待。
注:这里再提一下之前提到的问题,cmake最好用3.4.3版本,以上版本会出现 {errorMSB6006:"cmd.exe"已退出,代码为:-1073741571}错误。
成功结果如下
<3>生成安装文件
找到 CMakeTargets文件夹中的INATALL项目右键,依次选择仅用于项目->仅生成INSTALL(B)
完成后opencv_my文件夹里多了一个install文件夹
到此,所有的编译以及生成工作完成
(4) 重新配置环境与测试
这里找一个项目名为guangfangDemo,并创建一个test.cpp的源文件, 来进行验证
/***********************************test.cpp**************************************\
#include "stdafx.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
using namespace cv;
using namespace std;
int main()
{
//Create SIFT class pointer
Ptr<Feature2D> f2d = xfeatures2d::SIFT::create();
//读入图片
Mat img_1 = imread("aaa.jpg");
Mat img_2 = imread("bbb.jpg");
//Detect the keypoints
vector<KeyPoint> keypoints_1, keypoints_2;
f2d->detect(img_1, keypoints_1);
f2d->detect(img_2, keypoints_2);
//Calculate descriptors (feature vectors)
Mat descriptors_1, descriptors_2;
f2d->compute(img_1, keypoints_1, descriptors_1);
f2d->compute(img_2, keypoints_2, descriptors_2);
//Matching descriptor vector using BFMatcher
BFMatcher matcher;
vector<DMatch> matches;
matcher.match(descriptors_1, descriptors_2, matches);
//绘制匹配出的关键点
Mat img_matches;
drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);
imshow("【match图】", img_matches);
//等待任意按键按下
waitKey(600000);
}
\********************************************************************************/
<1>环境变量path配置
<2>项目 guangfangDemo属性->VC++目录->包含目录
D:\opencv_my\install\include
D:\opencv_my\install\include\opencv
D:\opencv_my\install\include\opencv2
<3> 项目 guangfangDemo属性->VC++目录->库目录
D:\opencv_my\install\x64\vc14\lib
<4> 项目 guangfangDemo属性->链接器->输入->附加依赖项
opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_bioinspired310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_datasets310d.lib
opencv_dnn310d.lib
opencv_dpm310d.lib
opencv_face310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_fuzzy310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_line_descriptor310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_optflow310d.lib
opencv_photo310d.lib
opencv_plot310d.lib
opencv_reg310d.lib
opencv_rgbd310d.lib
opencv_saliency310d.lib
opencv_shape310d.lib
opencv_stereo310d.lib
opencv_stitching310d.lib
opencv_structured_light310d.lib
opencv_superres310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib
<5>重新生成项目并运行
opencv3.1官网下载提取后会得到两个文件夹:build和sources。 build里的内容是官网已经编译好的。
(1)我的环境介绍:
操作系统:Windows 10 64位
IDE: Microsoft Visual Studio Professional 2015
OpenCV: OpenCV 3.1.0 for windows(下载地址:http://opencv.org/)
(2) 安装好VS和OpenCV,OpenCV的安装其实就是把官方下载的exe解压的自己制定目录(如我的实际地址,D:\opencv)
(3)配置OpenCV的 相关环境变量。安装完成后在系统的环境里找到“Path”,编辑并在后边加入自己的OpenCV目录,如:D:\opencv\build\x64\vc14\bin
(4)新建一个C++的win32控制台项目
(5)修改项目的相关配置。
具体为:项目--属性-- 配置属性-- VC++ 目录
--Include path(包含目录):
D:\opencv\build\include
D:\opencv\build\include\opencv
D:\opencv\build\include\opencv2
--Lib path(库目录):
D:\opencv\build\x64\vc14\lib
opencv_world310d.lib
/*************************************************************************************
- //显示图像文件
- #include <opencv2/opencv.hpp>
- using namespace std;
- #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
- int main()
- {
- const char *pstrImageName = "aaa.JPG";
- const char *pstrWindowsTitle = "OpenCV第一个程序";
- //从文件中读取图像
- IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
- //创建窗口
- cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);
- //在指定窗口中显示图像
- cvShowImage(pstrWindowsTitle, pImage);
- //等待按键事件
- cvWaitKey();
- cvDestroyWindow(pstrWindowsTitle);
- cvReleaseImage(&pImage);
- return 0;
- }
如何图片可以正常出现在小窗口中的,则环境搭建好了。
需要注意的几点:
<1> 如果依赖项中配 opencv_world310.lib,模式为debug,就会报
LNK1104: 无法打开文件opencv_world310.lib。这是附加依赖项配置的有问题。 。 opencv_world310d.lib后面的小d对应debug模式,没有d对应release模式。所以如果模式为debug,需要将 opencv_world310.lib换成 opencv_world310d.lib。
char *srcImageFile = "D:\\ccc.jpg";
也可以通过参数进行传入,通过 项目属性页设置
opencv3.x版本与opencv2.x版本在模块的构成上有很大的差别。 opencv3.1将人脸识别、matlab调用、RGB加工、深层神经网络等内容放到了 OpenCV_contrib库中,想使用其中的功能,则需要自行编译。
(1)准备
vs2015,win10操作系统,opencv3.1我们不需要变动。除此之外,我们还需要准备以下内容。
<1>CMake, 这里我选用cmake-3.4.3-win32-x86版本。
下载地址:http://download.csdn.net/detail/haoyizhi/9837313
注意:之所以使用cmake-3.4.3-win32-x86这个版本,是因为我在之后使用vs2015生成解决方案时,如果 cmake版本过高,会出现 {errorMSB6006:"cmd.exe" 已退出,代码为:-1073741571}这个错误。我尝试了3.4以上到目前最新的所有版本都出现了这个问题,只有3.4.3这个版本可以正常通过。
补充:cmake3.6版本开始有x86与x64之分,要根据自己的操作系统来进行选择。3.5版本以下包括3.5版本只有X86,所以不用在乎操作系统,只选择x86版本。下载cmake时,一定要搞清楚自己的操作系统是32位的还是64位的。
<2> 在用CMake编译opencv源码时,需要提前下载好几个文件,由于cmake的官网是国外的,下载速度十分缓慢,如果不提前下载,在用cmake做第一次编译时,会报错。
需要的文件地址:http://download.csdn.net/detail/haoyizhi/9837320
将ffmpeg_version.cmake,opencv_ffmpeg.dll,opencv_ffmpeg_64.dll文件放到
D:\opencv3.1.0\sources\3rdparty\ffmpeg目录(D:\opencv3.1.0\为我的opencv3.1.0安装主目录)
将ippicv_win文件夹放到D:\opencv3.1.0\sources\3rdparty\ippicv目录
<3>下载opencv_contrib-master库
下载地址:http://download.csdn.net/detail/haoyizhi/9836388
解压后的目录结构如下
<4>新建一个目录用来存放cmake编译之后的文件,如我在D盘建立了一个opencv_my的目录
(2) Cmake配置与编译
<1>打开cmake-gui
在where is the source code 处选择opencv3.1的源代码文件夹
在where is build the binaries 处选择cmake编译产生的文件存放文件夹,如我在上一步创建的opencv_my
<2>点击configure按钮 选择 visual studio 14 2015 win64编译器
注意:这里一定要根据自己的实际情况准确的选择
因为我的vs是2015版本,所有选择visual studio 2015
操作系统为64位,所有选择win64
这里的14是vc编辑器
补充:vc与vs的对应关系
vc6 - VC6.0
vc7 - VS2002
vc7.1 - VS2003
vc8 - VS2005
vc9 - VS2008
vc10 - VS2010
vc11 - VS2012
vc12 - VS2013
vc13 - VS2014
vc14 - VS2015
<3>点击finish
成功完成,会出现Configuring Done。第一次编译结束。
<4>在搜索框中输入 OPENCV_EXTRA_MODULES_PATH,找到该变量。
值为下载好的 opencv_contrib-master库主目录下的modules目录,如下图为我的modules目录
注意:这里最好 点击值后面的“...”一步步选择文件夹的添加, 因为直接复制过来的分隔符为"\",实际上应该是向前的“/”。如果为"\",会出现如下错误信息
CMake Error at cmake/OpenCVModule.cmake:260 (foreach):
Syntax error in cmake code at
<5>在次点击 configure按钮,进行二次编译。
成功会出现 Configuring done
<6>点击generate
完成出现Generating done
最终,opencv_my中生成的文件如下
(3) vs2015生成解决方案与安装文件
<1> 找到opencv_my文件夹里的OpenCV.sln文件,并双击,用vs2015打开
<2>生成解决方案
这个过程时间比较长,需要耐心等待。
注:这里再提一下之前提到的问题,cmake最好用3.4.3版本,以上版本会出现 {errorMSB6006:"cmd.exe"已退出,代码为:-1073741571}错误。
成功结果如下
<3>生成安装文件
找到 CMakeTargets文件夹中的INATALL项目右键,依次选择仅用于项目->仅生成INSTALL(B)
完成后opencv_my文件夹里多了一个install文件夹
到此,所有的编译以及生成工作完成
(4) 重新配置环境与测试
这里找一个项目名为guangfangDemo,并创建一个test.cpp的源文件, 来进行验证
/***********************************test.cpp**************************************\
#include "stdafx.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
using namespace cv;
using namespace std;
int main()
{
//Create SIFT class pointer
Ptr<Feature2D> f2d = xfeatures2d::SIFT::create();
//读入图片
Mat img_1 = imread("aaa.jpg");
Mat img_2 = imread("bbb.jpg");
//Detect the keypoints
vector<KeyPoint> keypoints_1, keypoints_2;
f2d->detect(img_1, keypoints_1);
f2d->detect(img_2, keypoints_2);
//Calculate descriptors (feature vectors)
Mat descriptors_1, descriptors_2;
f2d->compute(img_1, keypoints_1, descriptors_1);
f2d->compute(img_2, keypoints_2, descriptors_2);
//Matching descriptor vector using BFMatcher
BFMatcher matcher;
vector<DMatch> matches;
matcher.match(descriptors_1, descriptors_2, matches);
//绘制匹配出的关键点
Mat img_matches;
drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);
imshow("【match图】", img_matches);
//等待任意按键按下
waitKey(600000);
}
\********************************************************************************/
<1>环境变量path配置
<2>项目 guangfangDemo属性->VC++目录->包含目录
D:\opencv_my\install\include
D:\opencv_my\install\include\opencv
D:\opencv_my\install\include\opencv2
<3> 项目 guangfangDemo属性->VC++目录->库目录
D:\opencv_my\install\x64\vc14\lib
<4> 项目 guangfangDemo属性->链接器->输入->附加依赖项
opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_bioinspired310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_datasets310d.lib
opencv_dnn310d.lib
opencv_dpm310d.lib
opencv_face310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_fuzzy310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_line_descriptor310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_optflow310d.lib
opencv_photo310d.lib
opencv_plot310d.lib
opencv_reg310d.lib
opencv_rgbd310d.lib
opencv_saliency310d.lib
opencv_shape310d.lib
opencv_stereo310d.lib
opencv_stitching310d.lib
opencv_structured_light310d.lib
opencv_superres310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib
<5>重新生成项目并运行
出现如下结果则成功,图片内容自定。