使用 Qt6-mingw 编译 OpenCV 源码

这篇具有很好参考价值的文章主要介绍了使用 Qt6-mingw 编译 OpenCV 源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

版本

Qt 6.6.0 win11 x86_64

安装 CMake

网址: https://cmake.org/download/
选择对应的版本下载
将 cmake.exe 所在的 bin 目录添加到环境变量中

安装 openCV

网址: https://opencv.org/releases/
选择对应的版本下载 Source资源包
使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

  1. 解压 “opencv-4.9.0.zip”, 将其解压的 “opencv-4.9.0” 存放到指定路径 “Path” (例如在我的电脑上 “Path” 则为 “I:\opencv-4.9.0”)

  1. 在解压的文件夹下新建一个 build 目录

  1. 打开 /cmake/bin/cmake-gui.exe

    在红线处入 “Path”
    使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

    选择将其编译在 build 目录下
    使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++


  1. 点击 configure
    出现配置对话框->在“Specify the generator for this project”内选择“MinGW Makefiles”选项,
    在下边的编译器类型中,选择:
    “Specify native compilers”,单击“Next”->在编译器选择器选择界面,在C后面选择C编译路径(我的为D:\qt\qt6\Tools\mingw1120_64\bin\gcc.exe"),同理选择C++编译器路径,点击 Finshed, 点击 configure

  1. 待配置完成后,点击 Add Entry (若下面的列表中已经有 QT_MAKE_EXECUTABLE这一项则直接双击修改即可)
    使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++
    Name: 处填入 QT_MAKE_EXECUTABLE
    Type: 选择 PATH
    Value: 填入 Qt 的 qmake路径 (我的为 “D:\qt\qt6\6.4.3\mingw_64\bin\qmake.exe”)
    Description: 空使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

  1. 在下面的列表中搜索 WITH_QT WITH_OPENGL,将其勾选;搜索 WITH_IPP,将其取消勾选

  1. 设置 Qt5Concurrent_DIR, Qt5Core_DIR, Qt5Gui_DIR, Qt5Test_DIR,
    Qt5Widgets_DIR, Qt5OpenGL_DIR, CMAKE_BUILD_TYPE (我的是Qt6)
    使用 m i n g w 编译时 使用 mingw 编译时 使用mingw编译时,不要勾选 BUILD_opencv_world ,否则很可能会编译失败

使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

  1. 点击 configure

  1. 进入 “Path”\下的 build 目录, 打开一个 CMakeDownloadLog的文本文件。(我的电脑上是 “I:\opencv-4.9.0\build\CMakeDownloadLog.txt”)
    例如:
    使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

    #do_copy "opencv_videoio_ffmpeg.dll" "9b755ecbbade0a5b78332e9b4ef2dd1b" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fbac408a47977ee4265f39e7659d33f1dfef5216/ffmpeg/opencv_videoio_ffmpeg.dll" "C:/openCV/3rdparty/ffmpeg"
    #missing "C:/openCV/3rdparty/ffmpeg/opencv_videoio_ffmpeg.dll"
    #check_md5 "H:/opencv-4.9.0/opencv-4.9.0/.cache/ffmpeg/9b755ecbbade0a5b78332e9b4ef2dd1b-opencv_videoio_ffmpeg.dll"
    #mismatch_md5 "H:/opencv-4.9.0/opencv-4.9.0/.cache/ffmpeg/9b755ecbbade0a5b78332e9b4ef2dd1b-opencv_videoio_ffmpeg.dll" "d41d8cd98f00b204e9800998ecf8427e"
    #delete "H:/opencv-4.9.0/opencv-4.9.0/.cache/ffmpeg/9b755ecbbade0a5b78332e9b4ef2dd1b-opencv_videoio_ffmpeg.dll"
    #cmake_download "H:/opencv-4.9.0/opencv-4.9.0/.cache/ffmpeg/9b755ecbbade0a5b78332e9b4ef2dd1b-opencv_videoio_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fbac408a47977ee4265f39e7659d33f1dfef5216/ffmpeg/opencv_videoio_ffmpeg.dll"
    #try 1
    # timeout on name lookup is not supported
    # getaddrinfo(3) failed for raw.githubusercontent.com:443
    # Could not resolve host: raw.githubusercontent.com
    # Closing connection 0
    # 
    

    里面提示编译时因网络下载,缺失部分文件

    "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fbac408a47977ee4265f39e7659d33f1dfef5216/ffmpeg/opencv_videoio_ffmpeg.dll" "C:/openCV/3rdparty/ffmpeg"
    第一行带有 raw 的网址则是我们需要下载的文件,将其复制并在浏览器中打开

    #missing 这一行表明了缺失文件应该存储的地方,将下载的文件 复制粘贴到这即可


  1. 点击generate

  1. build 目录下,打开终端,执行 mingw32-make,便开始编译

  1. 编译无错后,在终端中输入 mingw32-make.exe install 会打包编译后的文件,执行完成后, build 目录下会有一个生成一个 install 目录,包含了编译好的 OpenCV

  1. 添加环境变量
    将 install 目录的 x64架构 的 mingw 版本下的 bin 和 lib 添加到环境变量中
    使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

Qt6 下使用 OpenCV

创建 CMake 构建的 Qt6 项目
添加如下语句
所跟的路径如下,请根据自己电脑设定
set(OpenCV_DIR "I:/opencv-4.9.0/build/install/x64/mingw/lib")

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

target_link_libraries(${PROJECT_NAME} PRIVATE ${OpenCV_LIBS}) {PROJECT_NAME} 是项目的名字
例如 project(untitled VERSION 0.1 LANGUAGES CXX) 这里的 {PROJECT_NAME} 就是 untitled

也可根据 CMake Modules 添加的 opencv模块下的 OpenCVConfig.cmke 对 主目录的 CMakeLists.txt 更该
使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++
使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

效果展示

使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++
使用 Qt6-mingw 编译 OpenCV 源码,OpenCV,opencv,qt6.3,c++

我的 主目录 CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

project(untitled VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_MODULE_PATH "I:/opencv-4.9.0/build/install/x64/mingw/bin")
set(OpenCV_DIR "I:/opencv-4.9.0/build/install/x64/mingw/lib")
set(CMAKE_PREFIX_PATH "D:/qt/qt6/6.4.3/mingw_64/lib/cmake")

include_directories(${OpenCV_INCLUDE_DIRS})

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(OpenCV REQUIRED)

set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(untitled
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET untitled APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(untitled SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(untitled
            ${PROJECT_SOURCES}
        )
    endif()
endif()

target_link_libraries(untitled PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(untitled PRIVATE ${OpenCV_LIBS})

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
  set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.untitled)
endif()
set_target_properties(untitled PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)
include(GNUInstallDirs)
install(TARGETS untitled
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(untitled)
endif()

注意事项

使用MSVC编译时可以选择 BUILD_opencv_world 选项,但是使用 mingw64 编译时,选择 BUILD_opencv_world 总会失败,因此在使用mingw64的时候取消该选项。文章来源地址https://www.toymoban.com/news/detail-820573.html

参考

  1. https://juejin.cn/post/7171322133040070686
  2. https://www.cnblogs.com/Alliswell-WP/p/OpenCV_Qt_CMake.html
  3. https://www.weizhiyong.com/archives/1904

到了这里,关于使用 Qt6-mingw 编译 OpenCV 源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv系列(1)--使用opencv和Qt6做一个视频监控器人脸识别

    这个程序是自己的下班之后,看看那个坏东西想来偷看我的电脑。我就随手做的一个程序。 1.能都显示摄像头的内容。 2.如果有人进入摄像头。 3.利用opencv的模型识别人脸,识别到了就保存到自己的电脑里面。 4.并把他的照片显示到界面上一段时间,告诉他,偷窥有罪。 5.程

    2024年02月11日
    浏览(25)
  • QT+opencv源码编译

    时间记录:2024/1/20 QT5.12.7+cmake3.22.0+opencv4.5.4 (1)下载opencv源码,然后安装,opencv的安装即对源码的解压过程,解压后的文件目录如下 (2)opencv安装解压后的目录介绍: build文件夹vs编译源码后的文件,QT项目使用vs套件编译的可以直接使用本文件夹下的文件 sources文件夹ope

    2024年01月21日
    浏览(28)
  • 调用OpenCV库出现: undefined reference to `xxxxx‘ 的解决办法(使用MinGW编译器)

    我的CMakeLists.txt如下: cpp代码如下: 因为我的c++程序采用mingw64编译,所以使用 之后,总是出现undefined reference to cv::Mat::Mat()等一系列的undefined reference to XXX 原因是没有正确链接到动态库。或者之前有安装其他版本的opencv 重新编译一份OpenCV的源码再使用 编译过程参考: https

    2024年02月05日
    浏览(51)
  • 在 msys2/mingw 下安装及编译 opencv

    最简单就是直接安装 脚本中最好使用环境变量 ${MINGW_PACKAGE_PREFIX} 适配 以下记录一下编译的过程 注意:一定要安装 mingw-w64-x86_64-cmake  而不是 cmake,即不要执行 “pacman -S cmake” 否则会产生 “System is unknown to cmake, create 。。。” 报错信息 下载 opencv4 源码并解压  编写脚本

    2024年02月06日
    浏览(62)
  • W11下CMake MinGW配置OpenCV和Qt

    💂 个人主页: 风间琉璃 🤟 版权:  本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、 欢迎关注、 点赞、 收藏(一键三连) 和 订阅专栏 哦 前几天将cuda版本的opencv给编译成功了,当时用的VS的MSVC,然后发现编译后的库文件不能给Qt调用,应

    2024年02月09日
    浏览(25)
  • VS2022编译安装Qt6.5源码

    包括安装VS2022,Windows SDK,Python3,这里就不再一一介绍了,需要说明的一点是如果要编译 QtWebEngine 和 QtPdf 两个组件的依赖问题,当然如果不需要,也可以不管它,则不会编译。 python库 html5lib : 使用 pip install html5lib 安装。 gperf、bison、flex 如果安装有Qt 5的Windows版本,比如

    2024年02月04日
    浏览(56)
  • 搭建 QT6+OpenCv4.7+CMake的环境

    本文主要介绍如何搭建QT6+OpenCv的开发环境,基本流程如下 先安装CMake3.27.3,用来编译适用用QT的OpenCv的源码,安装完成后要配置系统的环境变量 安装Qt6的开发环境,并配置环境变量,注意一定要重启电脑才能生效 下载OpenCv的源码,用于后面的编译 上述环境准备好后,使用

    2024年02月09日
    浏览(30)
  • Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】

    Virtual Box 版本: 7.0.6 r155176 (Qt5.15.2) Ubuntu 版本:20.04.6 (amd64, Desktop LiveDVD) 下载后解压,看一下 README 文件指导安装, 需要安装环境依赖, 或者直接安装 GNU 集合, 报错,这是不同系统编码格式导致, 解决:重置文件编码, 报错 cmake: not found ,需要安装 Cmake,   报错 Could

    2024年02月03日
    浏览(35)
  • QT----opencv4.8.0编译cuda版本,QTcreater使用

    cuda12.1 opencv4.8.0 vs2019 cmake3.29 打开cmake,选择opencv480路径,build路径随意 点击configure后,选择这些选项,opencv_word,cuda全选,with_qt,NONFREE,4.8.0第三方模块的路径 点击config后,添加qt的安装路径,打开两个fast,将arch显卡算力设置为自己显卡的算力,打开with_OPENGL 取消勾选这三个

    2024年04月09日
    浏览(47)
  • QT6安装完成后,再安装低版本的MinGW或其他组件方式

    1,首先登录自己账户 2,然后进入欢迎中,点击“添加和移除组件” 3,然后检索自己需要的安装内容

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包