在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++的,主要是资源质量也相当不错,写教程的人也多。

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

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

其实码源的编译并不是必须的。如果只是希望研究算法的应用,而不想去关心算法实现的过程,这时使用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/

要下载其他版本,可以在这里下载,选择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,抱歉,借别人的图,有些不准);

在Windows下配置C, C++编译OpenCV_第1张图片

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

如果你是在VS下的,则可以选择VS类编译器。如下图:


在Windows下配置C, C++编译OpenCV_第2张图片

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

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


在Windows下配置C, C++编译OpenCV_第3张图片


点击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



你可能感兴趣的:(智能家具,一些工具使用,开发工具研发)