Windows下编译opencv&opencv_contrib(避坑版)
在 Windows 下编译 opencv&opencv_contrib 需要三个工具:CMake、w64devkit、opencv&opencv_contrib 源码。
文章目录
1、前期准备
在 Windows 下编译 opencv&opencv_contrib 需要以下三个工具:
- CMake
- w64devkit
- opencv&opencv_contrib 源码
作者已成功编译并测试的版本为 opencv 4.7.0
、opencv 4.8.1
、opencv 4.10.0
,且各工具版本信息为(CMake 3.24.4
,w64devkit 2.0.0
)。
1.1 Cmake 下载安装
Cmake 官网:https://cmake.org
CMake:一个强大的软件构建系统;
CMake是构建C++代码事实上的标准,每月下载量超过200万次。这是一个用于管理软件构建过程的强大、全面的解决方案。通过访问我们的资源部分,获得成功利用CMake所需的一切。
[Step 1]: 点击 cmake 版本 进入 CMake 版本信息选择页面,选择合适的版本并点击
[Step 2]: 再根据电脑配置(64位、32位)选择要下载的安装包
[Step 3]: 下载下来解压到一个文件夹(作者为 D:\Software\cmake
),再将 bin
目录添加至环境变量-系统变量(S),打开CMD测试
cmake -version
1.2 w64devkit 下载安装
w64devkit 项目:https://github.com/skeeto/w64devkit
适用于x64和x86 Windows的便携式C、C++和Fortran开发工具包;
w64devkit是一个Dockerfile,它从源代码构建了一个小型的、可移植的开发套件,用于在x64 Windows上创建C和C++应用程序。
[Step 1]: 点击 w64devkit-releases 进入 w64devkit 发布页面,点击下载
[Step 2]: 下载后双击 .exe
文件,解压至某个目录(作者为 D:\Software\w64devkit
),内容如下
[Step 3]: 同样,将 bin
目录添加至环境变量-系统变量(S),打开CMD测试
gcc --version
g++ --version
1.3 opencv&opencv_contrib 源码下载
opencv 官网:https://opencv.org
onpencv_contrib 项目:https://github.com/opencv/opencv_contrib
OpenCV提供了一个实时优化的计算机视觉库、工具和硬件。它还支持机器学习(ML)的模型执行和…
[Step 1]: 点击 opencv-releases 进入 opencv 版本页面,点击 Windows 进行下载
[Step 2]: 双击 .exe
文件并提取至某个目录(作者为 D:\Software\OpenCV\opencv-4.10.0
),内容为(其中,sources
目录要编译)
[Step 3]: 点击 opencv-contrib-tags 进入 opencv_contrib 版本页面,点击 4.10.0
进行源码下载
[Step 4]: 解压至某个目录(作者为 D:\Software\OpenCV\opencv_contrib-4.10.0
),内容为(其中,modules
目录要编译)
2、正式编译
到目前为止,我们已经准备好了所有的编译所需的工具或源码了:
1、CMake:D:\Software\cmake
2、w64devkit:D:\Software\w64devkit
3、opencv 和 opencv_contrib源码:D:\Software\OpenCV\opencv-4.10.0
和 D:\Software\OpenCV\opencv_contrib-4.10.0
2.1 配置编译环境
[Step 1]: 新建一个空文件夹用于存放编译后的内容,作者为 D:\Software\OpenCV\opencv-4.10.0-builds
[Step 2]: 进入 cmake 的 bin
目录下,双击 cmake-gui.exe
或直接在 CMD 输入 cmake-gui
,填入相关信息
[Step 3]: 再点击 Configure
选择如下,点击 FInish
即可开始编译
'Release' build type is used by default. Use CMAKE_BUILD_TYPE to specify build type (Release or Debug)
The CXX compiler identification is GNU 14.2.0
The C compiler identification is GNU 14.2.0
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Check for working CXX compiler: D:/Software/w64devkit/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:/Software/w64devkit/bin/cc.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
...
2.2 离线下载
编译过程中会自动从网上下载一些依赖文件,但由于国内网络环境可能会下载失败,这些需要我们自己下载并放入相应位置,详细信息可见D:\Software\OpenCV\opencv-4.10.0-builds\CMakeDownloadLog.txt
:
具体可参考:VScode搭建Opencv(C++开发环境) 和 CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结
根据上述教程,下载文件并存放到对应位置,再点击 configure
再次查看这个日志文件:
#use_cache "D:/Software/OpenCV/opencv-4.10.0/sources/.cache"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_ADE_HASH_3rdparty_ade_v0_1_2d_zip"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_FFMPEG_HASH_3rdparty_ffmpeg_opencv_videoio_ffmpeg_dll"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_FFMPEG_HASH_3rdparty_ffmpeg_opencv_videoio_ffmpeg_64_dll"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_FFMPEG_HASH_3rdparty_ffmpeg_ffmpeg_version_cmake"
说明,所有因网络原因未下载的文件,都已通过离线下载并已正确放入对应的存放路径。
2.2 修改参数
如下图所示,CMake在编译时会有很多默认的参数,而有些我们是不需要的,需要修改为 OFF
即不要勾选:
具体为:
parameter | value | detail |
---|---|---|
CMAKE_BUILD_TYPE | Release | 构建类型 |
BUILD_SHARED_LIBS | ON | 构建共享库(动态库) |
BUILD_opencv_python_bindings_generator | OFF | 是否生成用于 Python 绑定的代码生成器 |
BUILD_opencv_java_bindings_generator | OFF | 是否生成用于 Java 绑定的代码生成器 |
BUILD_TESTS | OFF | 是否编译 OpenCV 自带的测试套件 |
BUILD_PERF_TESTS | OFF | 是否编译性能测试套件 |
WITH_IPP | OFF | 是否启用 IPP 库(图像处理的优化库) |
WITH_TBB | OFF | 是否使用 TBB 库,以支持多线程并行计算 |
WITH_CUDA | OFF | 是否启用 CUDA 支持 |
WITH_OPENCL | OFF | 是否启用 OpenCL 支持 |
WITH_MSMF | OFF | 是否使用 MSMF 来处理视频 |
CMAKE_CONFIGURATION_TYPES | Release;Debug | 构建的配置类型 |
OPENCV_EXTRA_MODULES_PATH | D:\Software\OpenCV\opencv_contrib-4.10.0\modules | 指定 OpenCV Contrib 模块的路径 |
手动修改完编译参数后再次点击 Configure
,然后最后点击 Generate
:
2.3 编译生成 install
进入刚刚编译存放的文件夹,作者为 D:\Software\OpenCV\opencv-4.10.0-builds
,用 CMD 打开这个目录,输入以下命令:
mingw32-make -j8
-j8
是为了执行的更快,如果电脑性能不太好-j4
也可以
大概需要30分钟左右,再使用如下命令完成最后的步骤:
mingw32-make install
此时,会生成一个 install
目录,作者的为:D:\Software\OpenCV\opencv-4.10.0-builds\install
3、测试运行
项目框架:
CMakeLists.txt
文件内容如下:
cmake_minimum_required(VERSION 3.0)
project(OpenCVTest)
# 指定OpenCV安装目录
set(OpenCV_DIR "D:\\Software\\OpenCV\\opencv-4.10.0-builds\\install") # 将此路径替换为你的OpenCV安装路径
# 查找OpenCV库
find_package(OpenCV REQUIRED)
# 设置包含路径
include_directories(${OpenCV_INCLUDE_DIRS})
# 添加源文件
add_executable(OpenCVTest main.cpp)
# 链接OpenCV库
target_link_libraries(OpenCVTest ${OpenCV_LIBS})
这个配置好后,在 VSCode 中 右击该文件并选择
Configure All Projects
,就会生成build
文件夹。
main.cpp
文件内容如下:
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
cv::Mat image = cv::Mat::zeros(300, 300, CV_8UC3);
cv::putText(image, "Hello, OpenCV", cv::Point(50, 150), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255, 255, 255), 2);
cv::imshow("Test", image);
cv::waitKey(0);
return 0;
}
运行方式如下:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)