在Windows下配置C, C++编译OpenCV

OPENCV是一个很棒的机器学习和机器视觉的开源库,支持众多编程语言和操做系统平台,主要应用在人工智能和图像处理上,再也不说费话了,直接重点。这里使用OPENCV是2.49,操做系统是WIN10,理论上3.2, 3.3使用一样的方法也是能够的,我这边使用3.2没有成功,多是GCC和CMAKE不是最新吧,后面会使用新版本开发。

OPENCV原始语言是使用C和C++开发,支持PYTHON和java.。因此要想学好OPENCV,差很少要能读懂C和C++,最好有一些PYTHON知识,由于我发现PYTHON的示例和DEMO是仅次于C++的,主要是资源质量也至关不错,写教程的人也多。html

在WIN下使用OPENCV,最好的工具多是.net吧,看源码中有很多.net的配置文件,这样你将会节省不少配置时间。
java

固然.net不是惟一选择,毕竟OPENCV支持不少种语言开发,.也支持各类平台,学习一门技术,最好能把他应用在工做中的各个方面,这时GCC+cmake是个很好的选择,这时你再配上一个本身喜欢的跨平台的编译器就完美了,我这里使用QT,eclipse应该也能够,不过感受他对C语言不是特别友好,固然其余的ECMACS或者VIM。
android

其实码源的编译并非必须的。若是只是但愿研究算法的应用,而不想去关心算法实现的过程,这时使用opencv发布的库文件就够了,能够免去编译。若是但愿对他扩展,改进,裁剪,有跨平台,跨语言研究的更深刻一些,须要根据平台和须要来编译源码。这里因为我须要要解决android和java方面的一些应用问题,而JAVA方面的库好像不是很齐全,并且JAVA样例代码也不是很全,有时经常须要深刻了解C,C++和PYTHON代码,而在我看来可以运行的代码老是要比不能运行的代码阅读研究起来速度要快,而我因为电脑配置缘由,没法安装十分庞大的.net工具,这时gcc ,CMAKE这些轻量级工具就很好使用,WIN平台须要加上mingw。算法

GCC在WIN下编绎须要依赖mingw环境,并且编绎时的条件选项也须要选择mingw条件。cmake会把OPENCV的源码组织成mingw环境GCC支持的项目配置,GCC全终完成编绎,这两个文件缺一不可,若是你使用.net,就须要用cmake生成.net工程的配置文件。QT是个弱选项,你选择记事本也能够完成写代码工做,不过效率不高。编程


1.首先是下载OPENCV,最新版本已经到了3.3,可能须要最新的工具才能编绎成功,若是选择这个版本,建议工具也升到最新,也能够下2.4X版本,目前国内的不少教程和代码资源都是这个版本,也能够多下几个版本研究,不一样版本之间架构和API都有不小的变化,须要根据公司须要选择。网络

最新版本,首页最下面就能够下载:架构

http://opencv.org/eclipse

要下载其余版本,能够在这里下载,选择winpack或者source,两个区别在于,后者只是源码,前者除了源码外还包括已经编绎好的支持各平台和语言的对应库文件。对不会编绎的或者懒于编绎的人有必定帮助,windpack是一个能够自解压的压缩包。找个解压位置解压就可安装。
机器学习

http://opencv.org/releases.html编程语言

2.下载并安装CMAKE

http://www.cmake.org/

3.下载并安装mingw和gcc

在MinGW官网中下载“mingw-get-setup.exe”
官网传送门:http://www.mingw.org/

mingw,安装完成后点击“continue”,打开MinGW Installation Manager。
如图,在含有gcc字样的那行右键,选择”Mark for Installtion”
而且,选择“Installtion”-> “Apply Changes”
而后,点击“Apply”确认操做
最后,在肯定安装完成后点击“Close”关闭对话框

若是没有网络,能够百度高线安装包安装

安装完成后,把F:\Program Files\minGW\bin和F:\Program Files\minGW\msys\1.0\bin设置到环境变量

4.可选。安装QT,这里有不少版本QT,能够选择最新的稳定版本

下载地址https://download.qt.io/archive/qt/

QT完成后要设置路径,加到WIN环境变量里,要不CMAKE建立配置文件时会出错

make路径     D:\Qt\Qt5.4.2\Tools\mingw491_32\bin

qmake路径   D:\Qt\Qt5.4.2\5.4\mingw491_32\bin


5.使用CMAKE生成GCC和QT配置文件

打开cmake的GUI版本cmake-gui.exe,选择路径;第一个为解压出来的OpenCV所在的路径,第二个是你指定的用于放置生生成的库的路径,也就是目标目录(我使用的是E:\opencv249\debug,下面图片是E:OpenCV2,抱歉,借别人的图,有些不许);

点击configure,这时会弹出编译器选择界面,好比咱们用的是qt是mingw的,则选择mingw,

若是你是在VS下的,则能够选择VS类编译器。以下图:


这时,会在目标目录下生产一些文件。cmake界面出来了一些可选项

勾选QT和OPENGL,其余不用改,再次点击configure。



点击Generate,这时会在目标目录下生成makefile文件。

win+r输入cmd进入控制台

1)进入makefile所在的目录 :

cd xxx

2)编绎源码

mingw32-make  

3)拷贝生成的库到install  目录

mingw32-make install

这时会在目标目录下生成一个install文件夹,库和bin和头文件都在里面:

进入install目录下面,找到bin文件夹,将其路径加入系统环境变量


至此,OPENCV编绎完毕,能够试验一下咱们编的库是否能够正常使用,在opencv的E:\opencv249\opencv\sources\samples\cpp下任选一个文件使用GCC编绎

cd进入E:\opencv249\opencv\sources\samples\cpp,执行g++

g++ -o edge edge.cpp -IE:\opencv249\debug\install\include -L E:\opencv249\debug\install\x86\mingw\lib -llibopencv_core249 -llibopencv_highgui249 -llibopencv_imgproc249 -llibopencv_legacy249 -llibopencv_ml249
edge.cpp是要编绎的C++文件,紧跟着是引用的头文件位置,接着是库文件位置,你OPENCV安装位置和库的位置可能和我不同,须要修改后才能运行,成功运行,说明库是好了,可使用这条命令试着编写本身的本身的OPENCV C++代码或者调试别人的

6.若是须要一个好用的IDE,能够配置QT

1打开先前安装好的QT,建立一个GUI工程。

2打开.pro文件,加入如下配置,一样要改为本身的路径,注意路径中的斜杠

INCLUDEPATH+=E:/opencv249/debug/install/include

LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_calib3d249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_contrib249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_core249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_features2d249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_flann249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_gpu249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_highgui249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_imgproc249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_legacy249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_ml249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_nonfree249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_objdetect249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_photo249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_stitching249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_superres249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_ts249.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_video249.dll.a
LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_videostab249.dll.a

而后在main.c加入一下代码,或者从opencv\sources\samples\cpp里复制一个文件过来编绎。
高版本的工具编低版的OPENCV很容易成功,我就几乎没出现什么错误,一鼓作气,低版本工具编高版本OPENCV可能会出错。

参考:

http://blog.csdn.net/guo8113/article/details/17799463

http://blog.csdn.net/kaychangeek/article/details/52303949

http://blog.sina.com.cn/s/blog_74a459380101oort.html

http://www.cnblogs.com/findumars/p/6021602.html

http://blog.csdn.net/qq_36731677/article/details/54608772