Win10系统下OpenCV静态库的编译流程

一、前言

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
posted @ 2025-03-07 19:25  笑眯眯办大事  阅读(436)  评论(0)    收藏  举报