Windows10在CodeBlocks中安装使用OpenCV2和3
本人参考了网上的一些资料,在CodeBlocks中安装好了OpenCV3.×版本,却发现无法使用OpenCV中的lagacy文件,原因是OpenCV3.0及以上的版本中舍弃了lagacy模块,因此只好重新安装OpenCV2.×版本。我在整个的安装过程中遇到了很多问题,为了方便自己和大家日后的安装使用,将整个安装步骤和注意事项重新梳理了一遍。
由于在Windows10中安装使用OpenCV2.×版本和OpenCV3.×版本所需要的安装环境和安装步骤有所区别,所以下面将拆分成两个板块分别进行说明。
安装使用OpenCV2.×版本
安装环境
- Windows10 64位系统
- CodeBlocks 17.12自带MinGW
- OpenCV 2.4.13
- Cmake 3.9.1-win32
下载链接
- CodeBlocks 17.12 https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/Windows/codeblocks-17.12mingw-setup.exe
- OpenCV 2.4.13 https://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.13/opencv-2.4.13.exe
- Cmake 3.9.1 https://github.com/Kitware/CMake/releases?after=v3.9.5
在此链接中找到cmake-3.9.1-win32-x86.msi文件即可
安装步骤
1. 将下载下来的CodeBlocks、OpenCV、Cmake进行安装,CodeBlock安装标准版即可。安装过程没有难点。
2. 将OpenCV、MinGW、Cmake添加到系统的环境变量中。
环境变量添加方式:此电脑-右键-属性-高级系统设置-环境变量-用户变量中的PATH-编辑-新建,添加完成后再点击确定。具体的路径根据自己的安装路径进行确定,我的全部都安装在了D盘,如下图所示。
3. 运行CMake
双击./cmake/bin/cmake-gui.exe,首先填写source code和build the binaries的路径,build the binaries的路径的文件夹名称是自己临时起的。然后再点击Configure,并在弹框中点击Yes,会自动创建build the binaries的目标文件夹。
建议将build the binaries的路径build_mingw直接放在C盘或者D盘下面,否则可能会出现后面将会提到的编译错误。
接下来按照下图所示选择generator,然后点击Next。
然后选择Compilers的路径,即CodeBlocks/MinGW/bin中的gcc.exe和g++.exe。点击Finish。
等待一分钟左右的时间,当出现Configuring done时,再点击Generate,完成后即可进行下一步了。
建议在点击Generate之前将BUILD_opencv_python这一项的勾去掉,否则可能会出现后面将会提到的编译错误。
4. 编译OpenCV
按下 Win + R 组合键,输入cmd,回车。在弹出的窗口中定位到build_mingw文件夹,如下图所示。然后输入mingw32-make,回车。
如果在编译过程中出现了关于opencv\modules\highgui\src\window_w32.cpp的错误,则打开MinGW中的"commctrl.h"文件,按照下图的方式进行修改,修改完之后重新执行mingw32-make命令。参考链接 http://answers.opencv.org/question/51987/highgui-window_w32cpp-error-tbbuttoninfo-was-not-declared-in-this-scope/
如果在编译的过程中出现了下图与python有关的错误,则在CMake中将BUILD_opencv_python这一项的勾去掉,再重新Generate即可。Generate完成之后,在cmd中重新执行mingw32-make命令。此时一般不会再出现其他错误了。
如果在编译的过程中出现了下图所示的错误,可能是由于你的路径名太长,超出了cmd缓冲区的限制,建议将build_mingw直接放在C盘或者D盘下面,重新执行上面的安装步骤。该问题的解释请查看 https://stackoverflow.com/questions/39287794/opencv-perf-stitching-release-gch-not-generated-by-cmakefiles
大约半个小时后便可完成,然后再输入mingw32-make install并回车,此时开始编译opencv源码,这一步一般只需要几分钟即可,我在执行这一步的过程中也没有出现任何编译问题。
5. 配置CodeBlocks
打开CodeBlocks,选择File–>New–>Project…–>Projects,选择console application,点击Next–>c++–>填写路径和名称->点击Next–>点击Finish,此时会默认生成一个main.cpp文件,打开main.cpp。
然后再将之前编译好的opencv/build_mingw/install文件夹下的include文件夹、x64/mingw/bin和x64/mingw/lib这三个文件夹复制到CodeBlocks刚刚新建的Project的文件夹里。
然后依次点击Project–>Build options…–>选中Debug–>Linker settings–>Link libraries–>Add library,将刚刚复制到Project中的lib文件夹下的所有lib库添加进去。
然后再选择Search directories–>Compiler,将刚刚复制到Project中的include文件夹和include的2个子文件opencv、opencv2添加进去;再选择Search directories–>Linker,将刚刚复制到Project中的bin文件夹添加进去。
至此,恭喜你已经安装完成!安装成功后Cmake、OpenCV这两个文件夹便可以删除了。
6. 运行代码
在main.cpp中输入以下代码,并进行编译和运行。
1 #include<iostream>
2 #include<opencv2/opencv.hpp>
3
4 using namespace cv;
5
6 int main()
7 {
8 Mat img = imread("lena.jpg",0);
9 if(!img.data)
10 return -1;
11 imshow("lena",img);
12 waitKey(0);
13 return 0;
14 }
运行结果如下图:
安装使用OpenCV3.×版本
在安装OpenCV3.×版本时,与安装OpenCV2.×相比,最主要的区别是安装环境的不同。安装OpenCV3.×一定要使用MinGW64而不能用CodeBlocks自带的MinGW,Cmake也需要使用-win64-x64版本的。除此,在编译过程中遇到的错误可能也不尽相同。
安装环境
- Windows10 64位系统
- CodeBlocks 17.12
- MinGW-w64
- OpenCV 3.2.0
- Cmake 3.13.2-win64-x64
下载链接
- CodeBlocks 17.12 https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/Windows/codeblocks-17.12-setup.exe
- MinGW-w64 https://jaist.dl.sourceforge.net/project/mingw-w64/Toolchains targetting Win64/Personal Builds/mingw-builds/4.9.1/threads-posix/seh/x86_64-4.9.1-release-posix-seh-rt_v3-rev0.7z
- OpenCV 3.2.0 https://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/opencv-3.2.0-vc14.exe
- Cmake 3.13.2-win64-x64 https://cmake.org/download/
在此链接中找到cmake-3.13.2-win64-x64.msi文件即可
安装步骤
1. 将下载下来的CodeBlocks、OpenCV、Cmake进行安装,将MinGW64进行解压,CodeBlock安装不带MinGW的标准版即可。安装过程没有难点。
2. 将OpenCV、MinGW64、Cmake添加到系统的环境变量中。
按照与安装OpenCV2.×相同的步骤进行即可。
3. 运行CMake
按照与安装OpenCV2.×相同的步骤进行即可。
在选择Compilers的路径时,一定要选择你刚才解压的mingw64/bin中的gcc.exe和g++.exe。
同理,建议在点击Generate之前将BUILD_opencv_python这一项的勾去掉。
4. 编译OpenCV
按下 Win + R 组合键,输入cmd,回车。在弹出的窗口中定位到build_mingw文件夹。然后输入mingw32-make -j4,回车。
如果在编译的过程中出现了与安装OpenCV2.×类似的关于python的错误,则在CMake中将BUILD_opencv_python这一项的勾去掉,再重新Generate即可。Generate完成之后,在cmd中重新执行mingw32-make -j4命令。此时一般不会再出现其他错误了。
大约半个小时后便可完成,然后再输入mingw32-make install并回车,此时开始编译opencv源码,这一步一般只需要几分钟即可,我在执行这一步的过程中也没有出现任何编译问题。
5. 配置CodeBlocks
打开CodeBlocks,此时会提示找不到编译器,这时选择Settings–>Compiler…–>Toolchain executables,在directory中选择mingw64/bin目录并配置C和C++编译器,如下图所示。
按照与安装OpenCV2.×相同的步骤:
点击File–>New–>Project…–>Projects,选择console application,点击Next–>c++–>填写路径和名称->点击Next–>点击Finish,此时会默认生成一个main.cpp文件,打开main.cpp。
然后再将之前编译好的opencv/build_mingw/install文件夹下的include文件夹、x64/mingw/bin和x64/mingw/lib这三个文件夹复制到CodeBlocks刚刚新建的Project的文件夹里。
点击Project–>Build options…–>选中Debug–>Linker settings–>Link libraries–>Add library,将刚刚复制到Project中的lib文件夹下的所有lib库添加进去。
然后再选择Search directories–>Compiler,将刚刚复制到Project中的include文件夹和include的2个子文件opencv、opencv2添加进去;再选择Search directories–>Linker,将刚刚复制到Project中的bin文件夹添加进去。
至此,恭喜你已经安装完成!
6. 总结
近期本人开始着手使用C++编写图像识别的一些算法如ORB,所以需要将OpenCV库导入到CodeBlocks中进行使用。在查阅了大量的相关资料和解决各种奇葩的问题之后终于把OpenCV3.×版本安装成功。但是OpenCV3.×版本弃用了legacy模块,因此我不得不重新安装OpenCV2.×版本。由于OpenCV2.×与OpenCV3.×相比有很多不同之处,所以在安装环境和安装步骤上不尽相同。为了把方便自己和他人的日后使用,我把OpenCV2.×与OpenCV3.×的安装过程都总结了一下。这是本人的第一篇博客,如有不当之处,也请见谅并及时指出问题,非常感谢!
7. 参考链接
[1] https://blog.csdn.net/lwplwf/article/details/77369930
[2] https://www.cnblogs.com/yongjiuzhizhen/p/4930284.html