🗒️opencv使用CMake和MinGW-w64的编译安装
00 分钟
2024-8-8
2024-9-13
type
status
date
slug
summary
password
tags
category
icon

1.安装环境

提前在电脑中安装以下软件或环境
  • Windows-10

2.使用cmake-gui配置编译

1.打开 cmake-gui,设置源码和生成路径:

(第二个路径为自己创建的编译路径:要和第一个同级目录)
  • Where is the source code: E:/opencv_455/opencv/sources
  • Where to build the binaries: E:/opencv_455/opencv_mingw64_build

2.点击 Configure,设置编译器(很关键)

  • Specify the generator for this project: MinGW Makefiles
  • Specify native compilers
  • Next
  • Compilers C: E:\MinGW-w64\x64-4.8.1-release-posix-seh-rev5\mingw64\bin\gcc.exe
  • Compilers C++: E:\MinGW-w64\x64-4.8.1-release-posix-seh-rev5\mingw64\bin\g++.exe
  • Finish

3.编译配置(默认的其它选项不改)

  • 勾选 WITH_OPENGL
  • 勾选 ENABLE_CXX11
  • 不勾选 WITH_IPP
  • 不勾选 ENABLE_PRECOMPILED_HEADERS

4.再次点击 Configure====》》Generate 生成 Makefile

无报错即可

3.编译 OpenCV

打开自己创建的E:/opencv_455/opencv_mingw64_build 的路径终端cmd
进行编译

4.自己出现的编译 OpenCV错误

调用OpenCV库出现: undefined reference to `xxxxx‘ 的解决办法(使用MinGW编译器)

1.程序的CMakeLists.txt文件

2.测试代码

3.mingw64编译运行程序

4.出现的问题:

出现undefined reference to cv::Mat::Mat()等一系列的undefined reference to XXX
原因是没有正确链接到动态库。或者之前有安装其他版本的opencv

5.解决办法

1.方法一(推荐):自己编译一份OpenCV的源码再使用(如图的opencv_mingw64_build就是自己编的)

notion image

2.方法二:

提供了已经有编译好opencv库,使用这个编译好的库的前提是自己的环境和作者的环境一样。所以还是自己编译吧。否则到最后会出现下图这样的问题:
notion image

3.最后还要添加环境变量(防止下图报错)

notion image
将bin(E:\opencv_455\opencv_mingw64_build\bin)目录加到系统的环境变量PATH里,方便程序在运行时能够找到对应的动态库。
将bin(E:\opencv_455\opencv_mingw64_build\bin)目录下的所有.dll文件复制到C:\Windows\System32目录下, 否则会出现无法定位程序输入点…于动态链接库…上
最后程序才能正常运行

5.编译 OpenCV 常见其它错误

  •  MinGW-w64 的 aviriff.h 文件注释错误
  • cap_msmf.cpp capture code 错误【2018年10月13日修改,因编译 OpenCV-4.0.0-alpha 时遇到并解决】
  • ‘M_PI’ was not declared in this scope 错误【2018年10月13日修改,因编译 OpenCV-4.0.0-alpha 时遇到并解决】
  • ‘posix_memalign’ was not declared in this scope 错误【2018年11月17日修改,因编译 OpenCV-4.0.0-rc 时遇到并解决】
  • ‘D3D11_TEXTURE2D_DESC’ was not declared in this scope 错误【2019年4月10日修改,因编译 OpenCV-4.1.0 时遇到并解决】
报错调整参考以下链接:
  1. https://blog.huihut.com/2018/07/31/CompiledOpenCVWithMinGW64/
  1. https://blog.csdn.net/poosdsd/article/details/137482573

6.参考链接: