使用 MinGW 编译 OpenCV 是一个不错的选择,特别是如果您想避免使用 Visual Studio。下面是使用 MinGW 和 CMake 编译 OpenCV 的详细步骤。
准备工作
1. 下载 OpenCV 源代码
从 OpenCV GitHub 仓库下载 OpenCV 源代码。
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.x
2. 下载 OpenCV Contrib 源代码
从 OpenCV Contrib GitHub 仓库下载 Contrib 模块。
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.x
3. 安装 MinGW 和 CMake
- 下载并安装 MinGW。推荐使用 MSYS2 以获得最新的工具链。
- 下载并安装 CMake。
环境设置
确保 MinGW 和 CMake 的路径已添加到系统的环境变量 PATH 中。您可以通过在命令提示符中输入以下命令来验证安装:
mingw32-make --version
cmake --version
编译步骤
1. 创建构建目录
在 OpenCV 源代码目录中创建一个新的构建目录:
mkdir build
cd build
2. 使用 CMake 配置和生成构建文件
在构建目录中运行以下命令:
cmake -G "MinGW Makefiles" .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_PREFIX=./install -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DOPENCV_ENABLE_NONFREE=ON
参数说明:
-G "MinGW Makefiles"
:使用 MinGW 生成 Makefile。-DCMAKE_BUILD_TYPE=Release
:指定构建类型为 Release。-DCMAKE_VERBOSE_MAKEFILE=ON
:启用详细的 Makefile 输出。-DCMAKE_INSTALL_PREFIX=./install
:指定安装目录为当前目录下的 install 文件夹。-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules
:指定额外模块路径。-DOPENCV_ENABLE_NONFREE=ON
:启用非免费模块(如 SIFT)。
3. 编译 OpenCV
运行以下命令进行编译:
mingw32-make -j4
-j4
参数会使用 4 个并行作业进行编译,您可以根据自己的 CPU 核心数调整此参数。
4. 安装 OpenCV
编译完成后,运行以下命令进行安装:
mingw32-make install
这会将编译好的文件安装到 CMAKE_INSTALL_PREFIX
指定的目录中(即 ./install
)。
验证安装
编写一个简单的 C++ 程序来验证 OpenCV 是否成功安装:
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
cv::Mat image = cv::imread("example.jpg");
if (image.empty()) {
std::cerr << "Could not open or find the image!" << std::endl;
return -1;
}
cv::imshow("Display window", image);
cv::waitKey(0);
return 0;
}
编译和运行测试程序
创建一个新的目录,例如 test_opencv
,并在其中创建一个 CMakeLists.txt
文件:
cmake_minimum_required(VERSION 3.10)
project(TestOpenCV)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(TestOpenCV main.cpp)
target_link_libraries(TestOpenCV ${OpenCV_LIBS})
创建 main.cpp
文件,并将上述测试代码粘贴进去。
运行 CMake 和编译程序:
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
mingw32-make
运行生成的可执行文件:
./TestOpenCV
确保 example.jpg
文件在与可执行文件相同的目录中,或者提供正确的路径。
通过这些步骤,您应该能够在 Windows 上使用 MinGW 成功编译和使用 OpenCV。