Mingw32编译opencv库

2024-01-12 00:04
文章标签 编译 opencv mingw32

本文主要是介绍Mingw32编译opencv库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 准备工作
  • 2. 编译
    • cmake构建程序
    • mingw32-make编译
  • 3. 安装
  • 4. 安装完的结果

注意:
mingw32-make编译的库和MSVC编译的库不兼容,MSVC和mingw-make生成的动态库使用的是不同的ABI(Application Binary Interface),不能混合使用由这两个编译器生成的库。例如,如果你的程序使用了由MSVC编译的库,那么你的程序也必须使用MSVC来编译。另外mingw32-make编译的库的库文件是.a后缀,MSVC编译的库的库文件是.lib。

1. 准备工作

  • 安装cmake
    参考

  • 安装mingw32
    参考

  • 下载opencv源码
    下载地址:https://codeload.github.com/opencv/opencv/zip/refs/tags/4.6.0
    下载后解压。

2. 编译

cmake构建程序

  • 进入opencv源码目录
  • 新建build目录
  • 进入build目录
  • 执行cmake命令
D:\myApp\opencv460\opencv-4.6.0>mkdir buildD:\myApp\opencv460\opencv-4.6.0>cd buildD:\myApp\opencv460\opencv-4.6.0\build>cmake .. -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=D:\myApp\opencv460\opencv-4.6.0\build -D BUILD_opencv_world=ON
-- The CXX compiler identification is GNU 13.2.0
-- The C compiler identification is GNU 13.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/myApp/mingw64/bin/c++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/myApp/mingw64/bin/gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- ocv_init_download: OpenCV source tree is not fetched as git repository. 3rdparty resources will be downloaded from github.com by default.
-- Detected processor: AMD64
CMake Warning (dev) at cmake/OpenCVUtils.cmake:144 (find_package):Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modulesare removed.  Run "cmake --help-policy CMP0148" for policy details.  Usethe cmake_policy command to set the policy and suppress this warning.Call Stack (most recent call first):cmake/OpenCVDetectPython.cmake:64 (find_host_package)cmake/OpenCVDetectPython.cmake:271 (find_python)CMakeLists.txt:628 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.-- Found PythonInterp: D:/myApp/anaconda3/python.exe (found suitable version "3.11.5", minimum required is "2.7")
CMake Warning at cmake/OpenCVDetectPython.cmake:81 (message):CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:PYTHON_EXECUTABLE=D:/myApp/anaconda3/python.exePYTHON_VERSION_STRING=3.11.5Consider providing the 'PYTHON2_EXECUTABLE' variable via CMake command lineor environment variablesCall Stack (most recent call first):cmake/OpenCVDetectPython.cmake:271 (find_python)CMakeLists.txt:628 (include)。。。。。。。。。。。。。。。。。。。。

上面关键的指令是这一句:

cmake .. -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=D:\myApp\opencv460\opencv-4.6.0\build -D BUILD_opencv_world=ON

解释一下:

  • … 表示上一级目录,即opencv源码目录
  • -G “MinGW Makefiles” 表示生成MinGW Makefiles工程
  • -D CMAKE_BUILD_TYPE=RELEASE 表示编译类型为RELEASE
  • -D CMAKE_INSTALL_PREFIX=D:\myApp\opencv460\opencv-4.6.0\build 表示安装目录
  • -D BUILD_opencv_world=ON 表示编译opencv_world库

mingw32-make编译

  • 执行mingw32-make命令
mingw32-make -j8

输出如下:

D:\myApp\opencv460\opencv-4.6.0\build>mingw32-make -j 8
[  0%] Built target opencv_videoio_plugins
[  0%] Building C object 3rdparty/openjpeg/openjp2/CMakeFiles/libopenjp2.dir/thread.c.obj
[  0%] Built target opencv_highgui_plugins
[  0%] Building CXX object CMakeFiles/ade.dir/3rdparty/ade/ade-0.1.1f/sources/ade/source/alloc.cpp.obj
[  0%] Building C object 3rdparty/quirc/CMakeFiles/quirc.dir/src/decode.c.obj
[  0%] Building C object 3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.obj
[  0%] Building C object 3rdparty/libjpeg-turbo/CMakeFiles/libjpeg-turbo.dir/src/jcapimin.c.obj
[  0%] Building C object 3rdparty/libwebp/CMakeFiles/libwebp.dir/src/dec/alpha_dec.c.obj
[  0%] Building C object 3rdparty/openjpeg/openjp2/CMakeFiles/libopenjp2.dir/bio.c.obj
[  0%] Building C object 3rdparty/quirc/CMakeFiles/quirc.dir/src/quirc.c.obj

note: -j8 表示8个线程编译,可以根据自己的电脑配置来设置。
如果报错如下

D:/myApp/opencv460/opencv-4.6.0/build/3rdparty/ade/ade-0.1.1f/sources/ade/include/ade/typed_graph.hpp:101:10: error:
'uintptr_t' in namespace 'std' does not name a type101 |     std::uintptr_t m_srcGraph;|          ^~~~~~~~~
D:/myApp/opencv460/opencv-4.6.0/build/3rdparty/ade/ade-0.1.1f/sources/ade/include/ade/typed_graph.hpp:22:1: note: 'std::uintptr_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?21 | #include "typed_metadata.hpp"+++ |+#include <cstdint>

这是因为ade库用到了std::uintptr_t,std::uintptr_t在cstdint头文件中。但是它没有包含cstdint头文件,需要手动添加。(编译报错的提示还是很有用的)

3. 安装

mingw32-make install
D:\myApp\opencv460\opencv-4.6.0\build>mingw32-make install
[  0%] Built target opencv_highgui_plugins
[  2%] Built target libopenjp2
[  2%] Built target opencv_videoio_plugins
[  3%] Built target zlib
[  9%] Built target opencv_core
[ 15%] Built target opencv_imgproc
[ 18%] Built target libjpeg-turbo
[ 25%] Built target libwebp
[ 28%] Built target libtiff
[ 29%] Built target libpng
[ 35%] Built target IlmImf
[ 36%] Built target opencv_imgcodecs
[ 37%] Built target opencv_videoio
[ 37%] Built target opencv_highgui
[ 37%] Built target opencv_ts
[ 40%] Built target opencv_test_core
[ 42%] Built target opencv_perf_core
[ 42%] Built target opencv_flann
[ 42%] Built target opencv_test_flann
[ 46%] Built target opencv_test_imgproc
[ 48%] Built target opencv_perf_imgproc
[ 49%] Built target opencv_ml
[ 50%] Built target opencv_test_ml
[ 51%] Built target opencv_photo
[ 52%] Built target opencv_test_photo
[ 53%] Built target opencv_perf_photo
[ 55%] Built target libprotobuf
[ 64%] Built target opencv_dnn
[ 65%] Built target opencv_test_dnn
[ 65%] Built target opencv_perf_dnn
[ 67%] Built target opencv_features2d
[ 68%] Built target opencv_test_features2d
[ 69%] Built target opencv_perf_features2d
[ 69%] Built target opencv_test_imgcodecs
[ 69%] Built target opencv_perf_imgcodecs
[ 70%] Built target opencv_test_videoio
[ 70%] Built target opencv_perf_videoio
[ 73%] Built target opencv_calib3d
[ 75%] Built target opencv_test_calib3d
[ 76%] Built target opencv_perf_calib3d
[ 76%] Built target opencv_test_highgui
[ 77%] Built target quirc
[ 78%] Built target opencv_objdetect
[ 78%] Built target opencv_test_objdetect
[ 78%] Built target opencv_perf_objdetect
[ 79%] Built target opencv_stitching
[ 79%] Built target opencv_test_stitching
[ 79%] Built target opencv_perf_stitching
[ 80%] Built target opencv_video
[ 81%] Built target opencv_test_video
[ 82%] Built target opencv_perf_video
[ 83%] Built target ade
[ 91%] Built target opencv_gapi
[ 97%] Built target opencv_test_gapi
[ 98%] Built target opencv_perf_gapi
[ 98%] Built target gen_opencv_python_source
[ 99%] Built target opencv_python3
[ 99%] Built target opencv_annotation
[ 99%] Built target opencv_visualisation
[ 99%] Built target opencv_interactive-calibration
[100%] Built target opencv_version
[100%] Built target opencv_version_win32
[100%] Built target opencv_model_diagnostics
Install the project...
-- Install configuration: "Release"
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/opencl-headers-LICENSE.txt
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/ade-LICENSE
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/ffmpeg-license.txt
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/ffmpeg-readme.txt
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/include/opencv2/cvconfig.h
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/include/opencv2/opencv_modules.hpp
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/x64/mingw/lib/OpenCVModules.cmake
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/x64/mingw/lib/OpenCVModules-release.cmake
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/x64/mingw/lib/OpenCVConfig-version.cmake
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/x64/mingw/lib/OpenCVConfig.cmake
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/./OpenCVConfig-version.cmake
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/./OpenCVConfig.cmake
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/./LICENSE
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/./setup_vars_opencv4.cmd
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/zlib-README
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libjpeg-turbo-README.md
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libjpeg-turbo-LICENSE.md
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libjpeg-turbo-README.ijg
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libtiff-COPYRIGHT
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libopenjp2-README.md
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libopenjp2-LICENSE
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libpng-LICENSE
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/libpng-README
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/openexr-LICENSE
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/openexr-AUTHORS.ilmbase
-- Installing: D:/myApp/opencv460/opencv-4.6.0/build/install/etc/licenses/openexr-AUTHORS.openexr

4. 安装完的结果

在这里插入图片描述

这篇关于Mingw32编译opencv库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596145

相关文章

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函