一、前言
QT项目需要使用到OpenCV作为图像处理,需要导入静态库,这样可以避免最后导出的exe文件放到其他没有OpenCV环境的电脑当中出现无法使用的情况。记录一下自己编译整个OpenCV的流程。
二、步骤
1、前置条件
- Windows 操作系统
- Visual Studio 2022 (含C++开发工具) y
- 由于我的QT项目是使用MSVC_2022编译的,所以OpenCV所需的编译器也需要保持一致。
- CMake 3.16+
- Git (用于克隆源码)
2、目录结构
- D:\DeskTop\QT_Program\ # 主工作目录
- │
- ├── opencv\ # OpenCV源码目录
- ├── opencv_build\ # 构建目录
- └── opencv_static\ # 静态库安装目录
复制代码 3、完整编译流程
3.1 获取OpenCV源码
通过git获取源码仓库,然后切换到需要的版本(这里以4.10.0为例子)- cd D:\DeskTop\QT_Program
- git clone https://github.com/opencv/opencv.git
- cd opencv
- git checkout 4.10.0
复制代码 3.2 创建构建目录
- # 创建构建目录
- mkdir D:\DeskTop\QT_Program\opencv_build
- mkdir D:\DeskTop\QT_Program\opencv_static
复制代码 3.3 配置CMake项目
进入构建目录- cd D:\DeskTop\QT_Program\opencv_build
复制代码 使用CMake配置OpenCV静态库 (PowerShell命令)- cmake -G "Visual Studio 17 2022" -A x64 `
- -DCMAKE_INSTALL_PREFIX=D:/DeskTop/QT_Program/opencv_static `
- -DBUILD_SHARED_LIBS=OFF `
- -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded `
- -DWITH_OPENCL=OFF `
- -DWITH_CUDA=OFF `
- -DWITH_IPP=OFF `
- -DBUILD_TESTS=OFF `
- -DBUILD_PERF_TESTS=OFF `
- -DBUILD_EXAMPLES=OFF `
- -DBUILD_DOCS=OFF `
- -DBUILD_JAVA=OFF `
- -DBUILD_opencv_apps=OFF `
- -DBUILD_opencv_python2=OFF `
- -DBUILD_opencv_python3=OFF `
- -DBUILD_opencv_world=ON `
- -DWITH_FFMPEG=OFF `
- -DWITH_GTK=OFF `
- -DWITH_MSMF=OFF `
- -DWITH_QUIRC=OFF `
- -DWITH_TIFF=OFF `
- -DBUILD_JPEG=ON `
- -DBUILD_PNG=ON `
- -DBUILD_WEBP=OFF `
- D:\DeskTop\QT_Program\opencv
复制代码 Cmake配置选项说明
选项说明值CMAKE_INSTALL_PREFIX安装目录静态库目标路径BUILD_SHARED_LIBS是否构建动态库OFF(生成静态库)CMAKE_MSVC_RUNTIME_LIBRARY运行时库MultiThreaded(静态运行时/MT)WITH_OPENCL/CUDA/IPP扩展功能OFF(减少依赖)BUILD_TESTS/EXAMPLES测试和示例OFF(减少构建内容)BUILD_opencv_python*Python绑定OFF(不需要)BUILD_opencv_world合并库ON(生成单个静态库)WITH_FFMPEG/GTK多媒体支持OFF(减少依赖)BUILD_JPEG/PNG图像格式ON(内置支持)3.4 编译与安装
编译Release版本- cmake --build . --config Release --parallel 8
复制代码 安装到指定目录- cmake --install . --config Release
复制代码 3.5 验证安装结果
检查静态库文件- dir D:\DeskTop\QT_Program\opencv_static\x64\vc17\staticlib\*.lib
复制代码 检查头文件- dir D:\DeskTop\QT_Program\opencv_static\include\opencv2
复制代码 3.6预期结果:
- PS D:\DeskTop\QT_Program\opencv_build> dir D:\DeskTop\QT_Program\opencv_static\x64\vc17\staticlib\*.lib
- 目录: D:\DeskTop\QT_Program\opencv_static\x64\vc17\staticlib
- Mode LastWriteTime Length Name
- ---- ------------- ------ ----
- -a---- 3/7/2025 7:04 PM 15118518 IlmImf.lib
- -a---- 3/7/2025 7:04 PM 209632 ittnotify.lib
- -a---- 3/7/2025 7:04 PM 1207842 libjpeg-turbo.lib
- -a---- 3/7/2025 7:04 PM 877228 libopenjp2.lib
- -a---- 3/7/2025 7:04 PM 668674 libpng.lib
- -a---- 3/7/2025 7:04 PM 12700048 libprotobuf.lib
- -a---- 3/7/2025 7:04 PM 1556710 libwebp.lib
- -a---- 3/7/2025 7:07 PM 155537580 opencv_world4100.lib
- -a---- 3/7/2025 7:04 PM 190618 zlib.lib
- PS D:\DeskTop\QT_Program\opencv_build> dir D:\DeskTop\QT_Program\opencv_static\include\opencv2
- 目录: D:\DeskTop\QT_Program\opencv_static\include\opencv2
- Mode LastWriteTime Length Name
- ---- ------------- ------ ----
- d----- 3/7/2025 7:08 PM calib3d
- d----- 3/7/2025 7:08 PM core
- d----- 3/7/2025 7:08 PM dnn
- d----- 3/7/2025 7:08 PM features2d
- d----- 3/7/2025 7:08 PM flann
- d----- 3/7/2025 7:08 PM highgui
- d----- 3/7/2025 7:08 PM imgcodecs
- d----- 3/7/2025 7:08 PM imgproc
- d----- 3/7/2025 7:08 PM ml
- d----- 3/7/2025 7:08 PM objdetect
- d----- 3/7/2025 7:08 PM photo
- d----- 3/7/2025 7:08 PM stitching
- d----- 3/7/2025 7:08 PM video
- d----- 3/7/2025 7:08 PM videoio
- -a---- 3/7/2025 5:44 PM 229234 calib3d.hpp
- -a---- 3/7/2025 5:44 PM 160674 core.hpp
- -a---- 3/7/2025 7:03 PM 3355 cvconfig.h
- -a---- 3/7/2025 5:41 PM 3425 dnn.hpp
- -a---- 3/7/2025 5:41 PM 74648 features2d.hpp
- -a---- 3/7/2025 5:41 PM 28705 flann.hpp
- -a---- 3/7/2025 5:44 PM 38359 highgui.hpp
- -a---- 3/7/2025 5:44 PM 28977 imgcodecs.hpp
- -a---- 3/7/2025 5:44 PM 262300 imgproc.hpp
- -a---- 3/7/2025 5:41 PM 94590 ml.hpp
- -a---- 3/7/2025 5:41 PM 43966 objdetect.hpp
- -a---- 3/7/2025 5:41 PM 3558 opencv.hpp
- -a---- 3/7/2025 7:03 PM 782 opencv_modules.hpp
- -a---- 3/7/2025 5:44 PM 38991 photo.hpp
- -a---- 3/7/2025 5:44 PM 15077 stitching.hpp
- -a---- 3/7/2025 5:41 PM 2574 video.hpp
- -a---- 3/7/2025 5:44 PM 70639 videoio.hpp
- -a---- 3/7/2025 5:41 PM 2383 world.hpp
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |