QT中引入OpenCV库总结(qmake方式和cmake方式)

embedded/2025/1/12 21:09:58/

文章目录

  • 前言
  • opencv环境配置
    • 一、opencv库获取的两种方式
    • 二、qmake和cmake配置
      • 2.1、 qmake
      • 2.2、cmake
    • 三、qtopencv对应关系
    • 四、问题

前言

我的软件环境,写在前面

  • Windows10
  • QT5.12.12
  • VS2017
  • OpenCV4.5.4

opencv_7">opencv环境配置

opencv_8">一、opencv库获取的两种方式

  1. 直接下载编译好的库
    最简单版本无需自己编译,但是要注意opencv和VS的版本对应关系
  • 参考:Windows上Qt配置OpenCV(最简单版本无需自己编译-避坑必看)
  1. 源码编译
  • 参考:Windows下Visual Studio 编译OpenCV详细教程(win10+vs2017+opencv4.5.2)(OpenCV最新版)(特别适合无法科学上网的童鞋们)

二、qmake和cmake配置

2.1、 qmake

  • 引入外部库
    两种方式:参考:详解Qt添加外部库

2.2、cmake

opencv_21">2.2.1、引入opencv示例
cmake_minimum_required(VERSION 3.5)
project(commandset_cmake LANGUAGES CXX)# 检查是否使用 MSVC 编译器
if(MSVC)# 添加 /utf-8 编译选项add_compile_options(/utf-8)
endif()# 设置C++标准
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 查找Qt5包
find_package(Qt5 COMPONENTS Core Gui WebEngineWidgets WebSockets Sql MultimediaWidgets Widgets REQUIRED)# 包含子项目
add_subdirectory(model)
add_subdirectory(view)
add_subdirectory(utilities)set(OpenCV_DIR "D:/OpenCV/OpenCV4.5.4/opencv/build")
find_package(OpenCV REQUIRED)# 包含 OpenCV 头文件目录
include_directories(${OpenCV_INCLUDE_DIRS}${OpenCV_DIR}/include
)
# 设置可执行文件的输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)
# 添加可执行文件
add_executable(${PROJECT_NAME} ${ALL_SOURCES}mainwindow.hmainwindow.cppmain.cpp)
# 链接Qt5模块
target_link_libraries(commandset_cmake PRIVATEQt5::CoreQt5::GuiQt5::WebEngineWidgetsQt5::WebSocketsQt5::SqlQt5::MultimediaWidgets${OpenCV_LIBS}  # 关联OpenCV库
)
# 添加资源文件
set(RESOURCES res.qrc)
qt5_add_resources(QRC_SOURCES ${RESOURCES})# 将资源文件添加到可执行文件
target_sources(${PROJECT_NAME} PRIVATE ${QRC_SOURCES})

qtopencv_83">三、qtopencv对应关系

VC版本号VS对应版本
vc6VC6.0
vc7VS2002
vc7.1VS2003
vc8VS2005
vc9VS2008
vc10VS2010
vc11VS2012
vc12VS2013
vc13VS2014
vc14VS2015
vc15VS2017
vc16VS2019

四、问题

LNK2019	无法解析的外部符号 "void __cdecl cv::error(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,char const *,char const *,int)" (?error@cv@@YAXHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD1H@Z),函数 "public: class cv::Size_<int> __cdecl cv::MatSize::operator()(void)const " (??RMatSize@cv@@QEBA?AV?$Size_@H@1@XZ) 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
LNK2019	无法解析的外部符号 "class cv::debug_build_guard::_InputOutputArray const & __cdecl cv::noArray(void)" (?noArray@cv@@YAAEBV_InputOutputArray@debug_build_guard@1@XZ),函数 main 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
LNK2019	无法解析的外部符号 "public: __cdecl cv::Mat::Mat(void)" (??0Mat@cv@@QEAA@XZ),函数 "public: __cdecl cv::MatExpr::operator class cv::Mat(void)const " (??BMatExpr@cv@@QEBA?AVMat@1@XZ) 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
LNK2019	无法解析的外部符号 "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ),函数 main 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
......
如果你的qt程序opencv库配置都没问题,报这个错的原因就是库版本的问题,查看opencv库中build下的x64文件夹下是vc14、vc15还是vc16,这很重要

参考:LNK2019 无法解析的外部符号 “void __cdecl cv::error(int,class std::basic_string<char,struct std::…


http://www.ppmy.cn/embedded/152858.html

相关文章

【前端面试题】前端中的两个外边距bug以及什么是BFC

外边距合并问题 兄弟组件中&#xff0c;如果一个设置margin-bottom&#xff0c;另一个设置margin-top&#xff0c;会导致外边距出现合并的问题&#xff0c;例如box1设置下边距50px&#xff0c;box2设置上边距20px&#xff0c;那么二者之间的外边距进行合并取最大值&#xff0c…

简单易用的PDF工具箱

软件介绍 PDF24 Creator是一款简单易用的PDF工具箱&#xff0c;而且完全免费&#xff0c;没有任何功能限制。既可以访问官网在线使用各种PDF工具&#xff0c;也可以下载软件离线使用各种PDF工具。 软件功能 1、PDF转换 支持将多种文件格式&#xff08;Word、PowerPoint、Exc…

对安全的认知

上班摸鱼&#xff0c;随性写的&#xff0c;原来对安全的看法真的很窄&#xff0c;就觉得网络安全&#xff0c;无非是攻防和研究&#xff0c;就相当于觉得数学是代数和几何&#xff0c;确实是无知和片面的&#xff0c;甲方和乙方&#xff0c;对于安全的定义也是不一样的&#xf…

计算机网络之---有线网络的传输介质

1. 双绞线&#xff08;Twisted Pair Cable&#xff09; 定义&#xff1a;双绞线是一种由两根绝缘铜线按一定螺旋方式绞合在一起的传输介质。常见的类型包括非屏蔽双绞线&#xff08;UTP&#xff09;和屏蔽双绞线&#xff08;STP&#xff09;。特点&#xff1a; UTP&#xff1a…

平安产险安徽分公司携手安徽中医药临床研究中心附属医院 共筑儿童安全防护网

为响应金融知识普及教育号召&#xff0c;平安产险安徽分公司联动安徽中医药临床研究中心附属医院&#xff0c;于近日在朝霞小学举办了一场儿童安全防范与健康守护活动。此次活动旨在提升学生的安全防范意识&#xff0c;守护儿童健康成长&#xff0c;同时有力推动金融知识与传统…

【FTP 协议】FTP主动模式

一、测试工具 服务器&#xff1a;FileZilla_Server-cn-0_9_60_2.exe 中文版本 客户端&#xff1a;FileZilla_3.66.5_win64 客户端IP: 192.168.9.186 服务端 IP: 192.168.9.161 在客户端请求PORT之前&#xff0c;抓包测试的结果跟被动模式流程相同。 二、客户端主动模式命令…

云端 IPv4 VRRP+MSTP多备份组配置实验

SW3和SW4作为核心交换机&#xff0c;SW1和SW2分别有两条链路可做冗余链路连接到核心交换机上。 1、把SW3和SW4配置vrrp虚拟路由器冗余协议&#xff0c;把两台路由器虚拟成一台路由器 2、创建两个备份组&#xff0c;备份组一的虚拟ip做pc6的网关&#xff0c;备份组二的虚拟ip做…

【Qt】控件概述和QWidget核心属性1(enabled、geometry、windowTitle、windowIcon、QRC机制)

一、控件概念 界面上各种元素、各种部分的统称&#xff08;如按钮、输入框、下拉框、单选复选框...&#xff09; Qt作为GUI开发框架&#xff0c;内置了各种的常用控件&#xff0c;并支持自定义控件。 二、控件体系发展 1.没有完全的控件&#xff0c;需要使用绘图API手动绘制…