从0到机器视觉工程师(六):配置OpenCV和Qt环境

CMake配置OpenCV

CMakeLists.txt文件的编写

cmake_minimum_required(VERSION 3.20)
project(test_opencv LANGUAGES CXX)
#寻找Opencv库
FIND_PACKAGE(OpenCV REQUIRED)
include_directories(test_opencv ${OpenCV_INCLUDE_DIRS})
add_executable(test_opencv main.cpp)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

可能出现的错误

错误原因分析

CMake Error at CMakeLists.txt:4 (FIND_PACKAGE):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.

Could not find a package configuration file provided by "OpenCV" with any
of the following names:

OpenCVConfig.cmake
opencv-config.cmake

Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
 

Configuring incomplete, errors occurred!

这个错误信息表明 CMake 在尝试找到 OpenCV 库时遇到了问题。具体来说,CMake 无法找到 OpenCV 的配置文件 OpenCVConfig.cmakeopencv-config.cmake。这些配置文件通常包含 OpenCV 库的路径和其他相关信息,CMake 需要这些信息来正确地配置和链接 OpenCV。

解决方案

方案一

在CMakeLists.txt文件中直接设置 OpenCV_DIR 变量

cmake_minimum_required(VERSION 3.20)
project(MyProject)

set(OpenCV_DIR "/path/to/opencv/build")
find_package(OpenCV REQUIRED)

修改后的CMakeLists.txt文件

cmake_minimum_required(VERSION 3.20)
project(test_opencv LANGUAGES CXX)
set(OpenCV_DIR "D:\\opencv\\build")
#寻找OpenCv库
FIND_PACKAGE(OpenCV REQUIRED)
include_directories(test_opencv ${OpenCV_INCLUDE_DIRS})
add_executable(test_opencv main.cpp)

#链接OpenCv静态库
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

方案二

在 Windows 系统上,在命令提示符中设置环境变量:

打开cmd输入以下内容

set OpenCV_DIR=C:\path\to\opencv\build

然后重新运行 CMake即可

CMake配置Qt+OpenCV

CMakeLists.txt文件的编写

cmake_minimum_required(VERSION 3.20)
project(test_qt LANGUAGES CXX)

#QT需要额外配置开启这三个参数
set(CMAKE_AUTOMOC ON)#元编译,如果类中使用了Q_OBJECT宏,则必须启用自动元编译
set(CMAKE_AUTORCC ON)#资源qrc
set(CMAKE_AUTOUIC ON)#qt自动处理UIC

#寻找qt库
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)

#不设置OpenCV_DIR会出现找不到OpenCVConfig.cmake或opencv-config.cmake的错误
set(OpenCV_DIR "D:\\opencv\\build")
#寻找OpenCv库
FIND_PACKAGE(OpenCV REQUIRED)

#添加文件树
file(
GLOB _SRCS
main.cpp
MainWindow.h
MainWindow.cpp
)

#不设置OpenCV_DIR会出现找不到OpenCVConfig.cmake或opencv-config.cmake的错误

include_directories(${PROJECT_NAME} ${OpenCV_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} ${_SRCS})
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets ${OpenCV_LIBS})

点击配置、生成、打开项目,就可以成功运行啦!!!

提醒

使用CMake成功生成项目打开后运行可能会出现运行不成功的问题,这时候很大可能是CMakeLists.txt文件编写上的错误,切记注意字母大小写,大部分问题都出在这上面。

qmake配置OpenCV

打开Qt Creator,使用qmake来构建一个项目,构建完成后打开.pro文件

添加如下代码:

#配置opencv
INCLUDEPATH += D:/opencv/build/include \
               D:/opencv/build/include/opencv2
Debug: {
LIBS += -lD:/opencv/build/x64/vc15/lib/opencv_world455d
}
Release: {
LIBS += -lD:/opencv/build/x64/vc15/lib/opencv_world455
}

代码解释:

INCLUDEPATH

  • INCLUDEPATH += D:/opencv/build/include \ D:/opencv/build/include/opencv2
    • 作用INCLUDEPATH 是一个变量,用于指定编译器在编译时搜索头文件的路径。
    • 路径
      • D:/opencv/build/include:这是 OpenCV 的主头文件目录,通常包含一些通用的头文件。
      • D:/opencv/build/include/opencv2:这是 OpenCV 的模块头文件目录,包含 OpenCV 的各个模块的头文件,如 coreimgproc 等。
    • 目的:通过将这些路径添加到 INCLUDEPATH,编译器可以在编译时找到 OpenCV 的头文件,从而避免编译错误。

Debug 配置

  • Debug: { LIBS += -lD:/opencv/build/x64/vc15/lib/opencv_world455d }
    • 作用:在调试模式下,将 OpenCV 的调试库添加到项目的链接库中。
    • LIBS:这是一个变量,用于指定链接器在链接时需要链接的库文件。
    • -l:这是链接器的选项,用于指定要链接的库文件。通常后面紧跟库文件的名称。
    • D:/opencv/build/x64/vc15/lib/opencv_world455d
      • 路径D:/opencv/build/x64/vc15/lib/ 是 OpenCV 的调试库文件所在的目录。
      • 库文件opencv_world455d 是 OpenCV 的调试库文件。d 后缀表示调试版本。
    • 目的:在调试模式下,使用调试版本的 OpenCV 库,以便进行调试和错误跟踪。

Release 配置

  • Release: { LIBS += -lD:/opencv/build/x64/vc15/lib/opencv_world455 }
    • 作用:在发布模式下,将 OpenCV 的发布库添加到项目的链接库中。
    • LIBS:与调试配置相同,用于指定链接器需要链接的库文件。
    • -l:与调试配置相同,用于指定要链接的库文件。
    • D:/opencv/build/x64/vc15/lib/opencv_world455
      • 路径:与调试配置相同,是 OpenCV 的发布库文件所在的目录。
      • 库文件opencv_world455 是 OpenCV 的发布库文件。没有 d 后缀表示发布版本。
    • 目的:在发布模式下,使用发布版本的 OpenCV 库,以便生成最终的可执行文件。

.pro文件完整代码

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

#配置opencv
INCLUDEPATH += D:/opencv/build/include \
               D:/opencv/build/include/opencv2
Debug: {
LIBS += -lD:/opencv/build/x64/vc15/lib/opencv_world455d
}
Release: {
LIBS += -lD:/opencv/build/x64/vc15/lib/opencv_world455
}


# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

如此一来,在Qt中OpenCV就已经配置完成啦!!!

使用时可能出现的问题

原因分析

编译器无法找到 QMainWindow 头文件。这通常是因为 Qt 的安装路径或配置不正确导致的。

解决方案

在.pro文件中加入以下代码

QMAKE_PROJECT_DEPTH = 0

这行代码设置 QMAKE_PROJECT_DEPTH = 0 是为了确保你的项目文件在构建系统中的路径解析是正确的。这通常用于避免在处理路径时产生意外的行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CDA数据分析师一级经典错题知识点总结(3)

1、SEMMA 的基本思想是从样本数据开始,通过统计分析与可视化技术,发现并转换最有价值的预测变量,根据变量进行构建模型,并检验模型的可用性和准确性。【强调探索性】 2、CRISP-DM模型Cross Industry Standard Process of Data Mi…

【Uniapp-Vue3】v-for列表渲染的用法

如果我们想要重复渲染多个元素,就可以使用v-for进行渲染。 比如我们想要将元素渲染5次: 如果我们想要知道当前元素是渲染的第几个,可以在v-for的时候添加参数index,并在差值表达式中填入index: 则index会以0开始进行渲…

《新闻大厦抢先版》V0.18.105+Dlcs官方学习版

《新闻大厦抢先版》官方版https://pan.xunlei.com/s/VODaeUn3v-ZWVvvmUMfo5AqWA1?pwdnhpz# 建造并不断优化新闻大楼,保障员工权益并及时赶上周日的印刷交期! 招募并管理不同职业以登上成功的阶梯:记者、摄像师、勤杂工,除此以外…

解锁3D模型转换:STL转OBJ全攻略

一、3D模型转换的基石:STL与OBJ格式概览 在3D模型的世界里,STL和OBJ格式犹如两大基石,支撑着模型创建、编辑、转换与应用的方方面面。了解它们的特性,是深入探究3D模型转换的关键第一步。 1.1 STL格式深度剖析 STL 全称为Stereo…

RK3568 Android 13 内置搜狗输入法小计

问:为什么写? 答:网上搜出来的都试过了,不行!下面直接上代码和注意事项! 首先到这个目录(/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall&#xff09…

windows10下安装Microsoft SQL Server 2016

一、下载安装包 网站:MSDN, 我告诉你 - 做一个安静的工具站 选择需要的版本,点击详细信息,复制ed2k链接,打开eMule或迅雷,新建下载,粘贴链接,开始下载。 下载好的文件是一个.iso镜像文件。 二、…

探索图像编辑的无限可能——Adobe Photoshop全解析

文章目录 前言一、PS的历史二、PS的应用场景三、PS的功能及工具用法四、图层的概念五、调整与滤镜六、创建蒙版七、绘制形状与路径八、实战练习结语 前言 在当今数字化的世界里,视觉内容无处不在,而创建和编辑这些内容的能力已经成为许多行业的核心技能…

IDEA Maven构建时报错:无效的目标发行版17

报错分析 报错原因:Maven 构建时,Java 版本配置不匹配 我安装的JDK版本是1.8,但由于种种原因,Maven构建时指定了 Java 17 作为目标发行版,从而导致错误 解决方案 首先,java -version,查看环…

西电-神经网络基础与应用-复习笔记

此为24年秋研究生课程复习笔记 导论 神经网络的研究方法分为 连接主义,生理学派,模拟神经计算。高度的并行、分布性,很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义,心理学派,基于符号…

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务,如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信,接收作业并提交到执行队列,Gitlab-Runner从队列中获取作业,并允许在不同环境下进行作…

LLM 智能视频字幕助手,支持生成、断句、优化、翻译、视频合成全流程

卡卡字幕助手(VideoCaptioner)是一款功能强大的视频字幕配制软件。操作简单且无需高配置,利用大语言模型进行字幕智能断句、校正、优化、翻译,一键为视频配上效果惊艳的字幕。 🎯 可使用强大的语音识别引擎&#xff0c…

GitLab本地服务器配置ssh和克隆项目

1. 本地安装好git git链接:https://git-scm.com/downloads/win 无脑点击下一步安装即可,打开Git Bash命令终端如下: 2. 配置本地用户名和邮箱 git config --global user.name "你的名字" git config --global user.email "你的邮箱&quo…

Unity热更新 之 Addressables(2) 本地/远端打包 流程测试

基础篇:Unity热更新 之 Addressables(1) 资源基础加载-CSDN博客 基础方法来源于唐老狮,我也是初学热更这一块,所有不保证步骤完全正确,如有不足还请斧正 目录 0.前提 1.本地打包 1.1.资源放入包 1.2.简化路径名称给出标签(如有需要的话) …

HDFS架构原理

一、HDFS架构整体概述 HDFS是Hadoop Distribute File System 的简称,意为:Hadoop分布式文件系统。HDFS是Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。HDFS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件…

Qiskit快速编程探索(进阶篇)

五、量子电路模拟:探索量子世界的虚拟实验室 5.1 Aer模拟器:强大的模拟引擎 在量子计算的探索旅程中,Aer模拟器作为Qiskit的核心组件之一,宛如一座功能强大的虚拟实验室,为开发者提供了在经典计算机上模拟量子电路运行的卓越能力。它打破了硬件条件的限制,使得研究者无…

rust学习——环境搭建

rust安装:https://kaisery.github.io/trpl-zh-cn/ch01-01-installation.html 1、vscode装插件: toml语法支持 依赖管理 rust语法支持 2、创建demo 3、查看目录 4、执行文件的几种方式: rust安装:https://www.rust-lang.org/z…

继承(7)

大家好,今天我们继续来学习一下继承的知识,这方面需要大家勤动脑才能理解,那么我们来看。 1.9 protected关键字 在类和对象章节中,为了实现封装特性,java中引入访向限定符,主要限定:类或者类中成员能否在类外和其他包中被访问. …

玩转大语言模型——langchain调用ollama视觉多模态语言模型

系列文章目录 玩转大语言模型——ollama导入huggingface下载的模型 langchain调用ollama视觉多模态语言模型 系列文章目录前言使用Ollama下载模型查找模型下载模型 测试模型ollama测试langchain测试加载图片加载模型 模型回复 前言 视觉多模态语言模型由预训练的多模态编码器…

J-LangChain - 复杂智能链流式执行

系列文章索引 J-LangChain 入门 介绍 j-langchain是一个Java版的LangChain开发框架,具有灵活编排和流式执行能力,旨在简化和加速各类大模型应用在Java平台的落地开发。它提供了一组实用的工具和类,使得开发人员能够更轻松地构建类似于LangC…

【翻译】2025年华数杯国际赛数学建模题目+翻译pdf自取

保存至本地网盘 链接:https://pan.quark.cn/s/f82a1fa7ed87 提取码:6UUw 2025年“华数杯”国际大学生数学建模竞赛比赛时间于2025年1月11日(周六)06:00开始,至1月15日(周三)09:00结束&#xff…