
MinGW-w64 编译 OpenCV 过程记录
准备
确保已具有:
- MinGW-w64(或其它 C++ 编译器)
- CMake
- OpenCV src
在终端键入 g++ -v 确认有 MinGW-w64 环境,键入 cmake --version 确认有 CMake 环境。请确保正确下载了 OpenCV 源码,找个干净目录 git clone https://gh-proxy.com/github.com/opencv/opencv.git 下来即可。
确认所需模块
根据项目需求确定所需模块,就我自己而言,所需要的功能与对应模块如下:
| 功能 | 模块 |
|---|---|
| 基础结构 | core |
| 图像变换 | imgproc |
| 图像读写 | imgcodecs |
| 视频读取 | videoio |
| imshow | highgui |
有一个需要考虑的选项:BUILD_opencv_world。默认情况下,OpenCV 是模块化构建,一个模块一个库。这样在项目编译链接的时候就需要指定所有的模块,即加上这些编译选项:
-lopencv_core |
但是,如果启用了 BUILD_opencv_world,则会生成一个聚合库,包含了所有启用的模块,就只需要:
-lopencv_world |
缺点是体积增大。
因为我不喜欢有一堆模块,所以我启用了 BUILD_opencv_world(默认关闭)。
- 我的选择仅供参考,请根据你的具体需求选择需要的模块和选项。
生成 Makefile
可以用命令行,或用 CMake-GUI,两种做法挑一种就行。这里推荐用命令行。
命令行
- 进入 OpenCV 源码目录,创建存放结果的
build目录并进入:
cd E:\opencv-4.12.0 |
- 先挂个梯子(涉及 GitHub 上文件的下载),然后在
powershell中键入如下命令(视需求更改相应选项):
cmake -G "MinGW Makefiles" ` |
如果使用 cmd,那就把续行符从 ` 换成 ^,或者改用下面的单行命令:
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBUILD_opencv_world=ON "-DBUILD_LIST=core,imgproc,imgcodecs,videoio,highgui" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOCS=OFF -DWITH_IPP=OFF -DWITH_MSMF=OFF -DWITH_DSHOW=OFF -DWITH_OPENCL=OFF -DWITH_TBB=OFF .. |
需要等一会儿。
如果发现下载失败:
-- FFMPEG: Downloading opencv_videoio_ffmpeg_64.dll from https://raw.githubusercontent.com/opencv/opencv_3rdparty/ea9240e39bc0d6a69d2b1f0ba4513bdc7612a41e/ffmpeg/opencv_videoio_ffmpeg_64.dll |
手动下载,然后拷贝进对应目录,比如这个就要放到 build\3rdparty\ffmpeg\ 下。应确保具备所有第三方依赖项。
CMake-GUI
懒得从头到尾自己写一遍了,可以先参考这篇文章。
这里讲一下上面这篇文章里没讲的。我们需要自己设置 BUILD_LIST:
- 点击
Add Entry按钮; - Name:填入
BUILD_LIST; - Type:选择
STRING; - Value:填入
core,imgproc,imgcodecs,videoio,highgui(根据你的需求填写); - Description:随便写,直接放空吧。
如果要启用 BUILD_opencv_world,就搜索一下,勾上即可。
其它项同理,参考命令行部分的命令选项进行勾选。
编译
- 在终端(
build目录里)键入如下命令:
mingw32-make -j8 |
8 是线程数,根据你的 CPU 线程数(用命令 wmic cpu get NumberOfLogicalProcessors 查看)调整。
编译需要一定时间,请坐和放宽。(我 32 线程 2 分钟就编译完了)
报一堆 Warning 是正常现象,忽视即可。
- 安装。编译完成后,键入如下命令安装:
mingw32-make install |
结束后,build 目录下又会出现一个 install 目录,里面就是编译好的 OpenCV 库。
设置 Include Path
以 VSCode 的 C++ 扩展为例。在扩展设置里找到 Include Path 设置项,新建 ...\build\install\include 条目,如下图所示。

然后,就可以在 VSCode 里愉快使用 OpenCV 库了。
- 标题: MinGW-w64 编译 OpenCV 过程记录
- 作者: Coast23
- 创建于 : 2026-02-24 12:38:50
- 更新于 : 2026-02-24 20:23:33
- 链接: https://coast23.github.io/2026/02/24/MinGW-w64-编译-OpenCV-过程记录/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。