codeblocks17.12 + opencv3.4.0 开发环境搭建

一、codeblocks + opencv

主要参考了这篇博客,中间出现了一些问题,但都一一解决,我写下这篇博客记录一下。

二、安装环境

  1. Windows 10 64位,
  2. codeblocks 17.12(带mingw32位编译器),
  3. opencv 3.4.0,
  4. cmake-3.10.3-win64-x64,
  5. mingw-w64 gcc-7.3.0离线包

三、安装过程的重点

  1. 根据参考博客,mingw 64位编译器是在线安装的,不知原因,我的电脑不能完成下载,就找了个离线包。

  2. 使用cmake编译opencv前,要先配置mingw64和opencv的环境变量,一开始我没有配置好,造成很多错误,然后找了好久才发现这个问题,还有就是cmake路径不能含中文,最好相关的软件路径都不含中文。

  3. 点击configure后,需要等待配置,会出现一大片红色选项,要将ENABLE_PRECOMPILED_HEADERS选项取消,否则后面编译会出现invalid option – W这样的错误,再次点击configure,等红色消失,显示configure done。再点击Generate,显示Generate done。就结束配置,生成了codeblock的项目文件。

  4. 在mingw32-make install 编译到36%时,出现了windres.exe: unknown option – W这样的错误,解决方法如上,重新configure。还有就是据网上查资料,cmake 3.9及以上会出现这种问题。

  5. 在mingw32-make install 编译到41%时,出现No such file or directory这样的错误,这是因为编译的路径包含空格,会找不到文件或目录。解决方法就是:检查opencv路径是否包含空格,去掉或者将空格换成_,重新configure。

  6. 在mingw32-make install 编译到98%时,会出现error: ‘::hypot’ has not been declared这样的错误,这是由于我的电脑配有python,编译python项目会出现这种问题,解决方法,在我的机子上就是进入安装的mingw64目录下面,进到mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/cmath文件里,在1135行将using ::hypot;这行修改为using ::_hypot;或者在前面加#define hypot _hypot。

  7. 如果还是不能编译成功,可以下载我编译好的install文件夹压缩包。

  8. 关于opencv_contrib,需要下载源码,并配置OPENCV_EXTRA_MODULES_PATH为opencv_contrib源码包中的modules目录,opencv_contrib_install文件夹压缩包。

四、新建一个codeblocks的opencv项目

  1. 将编译好的install文件夹下的include文件夹复制到install/x64/mingw下面,和lib,bin一共就是三个文件夹。

  2. 在codeblocks要先新建一个64位的编译器,先选择Settings->Compiler,接着点击copy,重命名一个编译器,例如GNU GCC Compiler(x64),接着在Toolchain executables选项卡下,配置编译器位置等等,参考博客那样配置编译器。

  3. 配置编译器的opencv的库文件位置,在linker setting下,add所有lib下的文件,再在Search directiries下add include和include\opencv,include\opencv2三个文件夹。

  4. 然后新建一个项目project,选择opencv project,下一步后填好项目的名字,开始配置opencv。

  5. 下面的${#cv}是一个可以配置的全局变量,如果配置错误,可以在Settings->Global variable重新配置。选择opencv编译好的那三个文件夹的父目录。
    codeblocks17.12 + opencv3.4.0 开发环境搭建_第1张图片

  6. 再填写版本号
    codeblocks17.12 + opencv3.4.0 开发环境搭建_第2张图片

  7. 接着选择编译器,选择已经新建的64位编译器。
    codeblocks17.12 + opencv3.4.0 开发环境搭建_第3张图片

  8. 运行Sources下的main.cpp,就可以显示arnold schwarzenegger阿诺·施瓦辛格的图片了。

  9. 最后,有一点要注意一下,编译器一定要选择已经配置好的64位编译器,lib和include也要配好,重新配置的项目需要rebuild。否则会出现main.o:main.cpp|| undefined reference to `cv::imread(cv::String const&, int)这样的错误;

五、codeblocks调试opencv

  1. 将Settings->Debugger->GDB/CDB debugger->Create Config,可以命名为gdb64,选择64位编译器安装目录下的mingw64\bin\gdb.exe。
  2. 在Settings->Compiler->选择GNU GCC Compiler(x64),在Compiler Flags下的debugging-> -g打钩。
  3. 在Toolchain executables选项卡下,配置编译器调试器,选择gdb64。
  4. 最后重新rebuild 项目,打断点,就可以调试了。
  5. 不能调试的原因可能有:项目路径含中文、gdb是32位的、编译器没有配置-g,没有rebuild项目。

你可能感兴趣的:(opencv)