本文由@星沉阁冰不语出品,转载请注明作者和出处。
文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/53301987
微博:http://weibo.com/xingchenbing
本文包含以下几个内容,大家可以根据自己的需要自行选取内容观看。至于为什么这么晚才写这么基础的博客,主要是因为没有经过足够多的编译和配置,没有足够的经验实在是不敢写啊。
一、opencv在Visual studio上的配置(只需一分钟,无需添加环境变量)
二、用CMake和Visual studio编译opencv程序(注意不是opencv库,下面才是)。
三、用CMake和Visual studio编译opencv库。
第一部分给那些不需要自己编译opencv,只想知道如何在Visual studio上配置opencv的同学。
第二部分纯属附送,是由于第一部分引发的研究性质的内容。
第三部分是如何利用CMake自己编译包含opencv-contrib在内的opencv。
一、opencv在Visual studio上的配置(只需一分钟,无需添加环境变量)。
如果你已经从官网下载了编译好的opencv,就就是包含build文件夹的。那么不需要添加环境变量,只需两步可以了。我们所用到的有且只有两个路径。
1.第一个路径能让VIsual studio找到opencv的头文件,直接上图。
***注意***
只需要这一个include文件夹就可以,不用再把include文件夹下面的opencv和opencv2文件夹都加进去。
2.让Visual studio能找到opencv的库,也就是添加附加依赖项。仍然看图。
***注意***
(1)不用一个一个lib文件的添加,直接用路径加*.lib。
(2)我这是release模式,如果是debug模式,需要改为*d.lib。不然可能出现一个模式不能用的状况。
最后,按照惯例添加环境变量即可。把opencv\x64\vc14\bin添加到系统变量的path后面即可。
至此,配置完成。添加三个路径,我觉得一分钟应该是够了。
二、用CMake和Visual studio编译opencv程序
在opencv的官方教程中,有一篇是介绍如何用cmake和g++编译包含opencv的程序:Using OpenCV with gcc and CMake,下面的内容与之类似,不同的地方就是用到的不是g++,仍是是自己电脑自带的Visual studio。这里需要自己写CMakeList.txt。这部分内容的目的就是先熟悉一下CMakeList.txt。
这里我们用opencv官网教程中的那个简单的打开图片并显示的程序,这个文件我命名为open_image.cpp如下:
#include
#include
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out \n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
include_directories ("G:/opencv3.1_vc14/include")
link_libraries("G:/opencv3.1_vc14/x64/vc14/lib/*.lib")
add_executable( DisplayImage open_image.cpp )
然后按下Shift的同时右键,在此处打开命令窗口,依次输入以下命令:
cmake -G "Visual Studio 14 2015 Win64" ..
cmake --build . --config Release
displayimage.exe d:/miao.jpg
可以看到编写CMakeList.txt和配置Visual studio其实是一样的。
三、用CMake和Visual studio编译opencv库。
opencv3把很多好玩的东西都转移到了opencv-contrib里面,比如人脸识别和SIFT等。官网给出的openc默认是不包含这些内容的。所以如果要用到这些东西,可能就需要我们自己来进行编译了。
编译需要的内容如下:
1.CMake,如果没有可以去官网下载一个:CMake。
2.opencv和opencv-contrib的源码,可以在github上下载:opencv和opencv-contrib。
3.opencv3.1编译依赖下载项。链接:https://pan.baidu.com/s/1qXT5DxU 密码: 48th
4.Visual studio 2015(2013)。
***注意***
通常我们用cmake自己编译opencv的时候最耗时的就是编译依赖的下载,而且由于国内网的问题经常下载失败。所以这里我们先下载好,然后把ffmpeg和ippicv文件夹分别覆盖opencv/3rdparty文件夹下的同名文件夹。
详细步骤如下:
(1)首先建立一个build文件夹,当然也可以是你喜欢的任何名字都行。
(2)在cmake的bin文件夹打开cmake-gui.exe,然后再下图中1,2出分别选择为opencv-master的路径和刚才新建的build的路径。opencv-master就是包含CMakeList.txt的文件夹。最后点击Configure按钮。
(3)选择编译器,这里选vs 2015 64位,根据自己的实际情况选择。然后点击Finish.
(4)然后等它配置完就会看到一片红。这里我们有两个地方需要修改或者注意。
一是推荐不选BUILD_opencv_world。它的作用就是相比于opencv2的版本添加附加依赖项要一个一个添加的反人类方法,直接生成一个opencv_world310.lib,然后只需要添加这一个就可以了。然后看了上面的第一部分你就知道这个没啥吸引力了。更重要的是,选它特别容易编译出错!默认是不选的,不要勾选,不要勾选,不要勾选!
二是把opencv-contrib加上。在OPENCV_EXTRA_MODULES_PATH,一定要添加到opencv-contrib-master/modules文件夹的路径。
(5)继续点击config按钮,看到一部分还是红色
(6)继续点击config按钮,看到已经没有红色全部变白了。这个时候可以点Generate按钮了。
最后我们可以在最下方看到
Configuring done
Generating done
(7)打开build文件夹,可以看到生成了OpenCV.sln工程文件,用Visual studio 2015打开。设置是debug还是release模式。在Solution ‘OpenCV’上右键-Build Solution。耗费时间较长。等这个完成之后选择INSTALL,然后右键-Project only-build only INSTALL。在build\install文件夹下即可生成我们需要的头文件和库文件。
至此编译完成,关于如何一分钟内在Visual studio上配置opencv,我想你已经知道了。