windows下QT如何集成OpenCV

news2024/12/1 8:41:14

说明

我在windows下使用QT Creator12创建的CMake项目,需要OpenCV的一些功能。由于安装的时候我选择的QT组件都是MInGW的,所以无法使用VS studio版本的dll库。

为什么vs的版本不能用

我安装QT选择的是MinGW版本,本地编译QT工程只能选择MinGW编译方式。选择vs的两个版本无法构建。

在这里插入图片描述

根据参考资料里《mingw如何链接vs方式编译生成的动态库?》中的说法,vs的c++ abi是stdcall, 而mingw使用的调用方式是cdecl。也就是说两个编译器的c++ abi不兼容的,故而无法识别对方导出的符号完成链接。

我一开始下载的opencv官方预编译的包,结果一直显示“error: undefined reference to”这样的错误。后来换了MinGW的Opencv库就可以了。

如何下载MinGW编译的Opencv库

首先可以下代码本地编译,如果不想这么麻烦,可以从这里下载:github-huihut/OpenCV-MinGW-Build

如何将OpenCV集成到Qt的工程

我是在windows下创建的Cmake类型的Qt工程。

添加头文件

解压上面下载的Opencv库的包。将include\opencv2目录复制到自己的QT源码目录下
在这里插入图片描述

然后在“Header Files”菜单右击,点“Add Existing Directory”, 选择刚刚复制过来的opencv2目录。
在这里插入图片描述
然后在CmakeLists.txt中添加opencv2目录的父目录:

target_include_directories (TextFinder PRIVATE ./sdk/inc)
添加库

在解压opencv后找到x64\mingw\bin目录,复制需要的dll模块到自己的工程下,如果没有特别需要,复制三个最常用的就够了。我是复制到我的工程下的sdk目录,复制后如下:
在这里插入图片描述
然后在CmakeLists.txt中添加这三个dll的父目录:

target_link_directories(TextFinder PRIVATE ./sdk/)

VS版本的OpenCV预编译库如何下载

我没用,这里仅仅记录下。下载地址在:
https://opencv.org/releases/

选择windows版下载
在这里插入图片描述

解压开就有一个build目录,下面有一个opencv_world490.dll。
这个是包含了所有opencv模块的单一库,你需要的就是它。

参考资料Cmake

MinGW编译的Opencv库下载地址:github-huihut/OpenCV-MinGW-Build

mingw如何链接vs方式编译生成的动态库?

How to setup Qt and openCV on Windows

Windows上Qt配置OpenCV(最简单版本无需自己编译-避坑必看)

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

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

相关文章

HarmonyOS实战开发-如何实现一个简单的电子相册应用开发

介绍 本篇Codelab介绍了如何实现一个简单的电子相册应用的开发,主要功能包括: 实现首页顶部的轮播效果。实现页面跳转时共享元素的转场动画效果。实现通过手势控制图片的放大、缩小、左右滑动查看细节等效果。 相关概念 Swiper:滑块视图容…

Matlab-写入mhd和raw医学图像处理格式文件

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 mhd和raw是什么? MHD(MetaImage)和RAW(Raw Image Data)是用于医学图像…

数字化坚鹏:小熊电器面向数字化转型的大数据顶层设计实践培训

小熊电器面向数字化转型的大数据顶层设计实践培训圆满结束 ——努力打造“数据技术营销”三轮驱动的数字化领先企业 小熊电器股份有限公司由李一峰创立于2006年,是一家专业从事创意小家电研发、设计、生产和销售的实业型企业。2019年8月23日正式在深交所挂牌上市。…

XUbuntu22.04之Typora快捷键Ctrl+5不生效问题(二百二十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Discourse 最多允许有几个分类级别

和 DISCUZ 不同,DISCUZ 可以允许分类下面还有分类,再继续分类这种嵌套式分类。 Discourse 最多只允许有 2 个分类。 如果你在已有的分类下再继续分类的话,系统会提示错误: 意思就是子分类不能再分子分类。 Discourse 尽量采取了…

Web前端—(原生JS)歌词滚动效果

歌词滚动效果实现 歌词滚动效果HTML部分CSS部分JS部分解析歌词字符串,得到歌词的对象数组计算在当前情况下,播放器播放到第几秒的情况创建歌词元素设置ul元素的偏移量最后对时间变化的事件进行监听完整JS代码 歌词滚动效果 实现效果如图所示&#xff1a…

PyCharm中配置PyQt5并添加外部工具

Qt Designer、PyUIC和PyRcc是Qt框架下的三个重要工具,总的来说,这三个工具各司其职,相辅相成,能显著提升Qt开发的速度与效率。 Qt Designer:是一个用于创建图形用户界面的工具,可轻松构建复杂的用户界面。…

Photoshoot 2(Java)

Photoshoot 2 题目描述 在一个似曾相识的场景中,Farmer John 正在将他的 N 头奶牛(1≤N≤10^5)排成一排(为了方便将它们按 1⋯1⋯N 编号),以便拍照。 最初,奶牛从左到右按照 a1,a2,⋯,aN 的顺…

Facebook轮播广告是什么?投放过程中有哪些需要注意的吗?

轮播广告是Facebook广告形式中的一种,可以把3—5个广告合并到一个可滚动的广告单元中。轮播广告会出现在新鲜事即News Feed中,是独立站卖家常用的一种广告形式 为什么选择轮播广告? 转化率更高:相较于单图广告,轮播广…

2024 ccfcsp认证打卡 2022 06 01 归一化处理

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 输入数字的个数int[] a new int[1010]; // 创建一个数组来存储输入的数字double sum 0; // 用于计算所有输入数字的总…

Linux基础命令篇:操作系统服务管理(systemctl service)

Linux基础命令篇:操作系统服务管理(systemctl & service) service和systemctl是两个用于管理Linux系统服务的命令。它们分别属于SysV init和systemd系统,这两个系统是Linux中用于初始化和管理服务的不同框架。在许多现代Linux…

四、Yocto创建静态IP和VLAN(基于raspiberrypi 4B)

Yocto创建VLAN配置 在车载域控中很多时候需要创建VLAN,本小节记录如何为yocto构建出来的image自动化创建静态IP以及VLAN。 关于各种VLAN的配置参考:VLAN 1. ubuntu系统中使用netplan创建VLAN 正常情况下我们在ubuntu系统中可以通过netplan来自动化创建…

《数据结构学习笔记---第七篇》---栈和队列的OJ练习

1. 括号匹配问题。OJ链接 step1:思路分析 : 1.括号匹配,我们首先考虑用栈实现,我们通过符号栈帧的思想知道,求前中后缀表达式的时候用的就是栈帧,操作数栈和符号栈。 2.根据常见的情况 考虑怎么使用栈,首先…

【Qt】:信号与槽(二)

信号与槽 一.带参数的信号和槽二.信号与槽的多对多连接三.信号与槽的断开四.lamda表达式定义槽函数 一.带参数的信号和槽 Qt的信号和槽也⽀持带有参数,同时也可以⽀持重载.此处我们要求,信号函数的参数列表要和对应连接的槽函数参数列表⼀致.(一致指的是类型一致&a…

微信小程序【从入门到精通】——服务器的数据交互

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

LoRA 及其衍生技术总览:An Overview of the LoRA Family

编者按: 对于大语言模型的微调训练来说,传统的全参数微调方法需要处理数百万甚至数十亿级别的参数,计算量和显存占用都非常大。而 LoRA 这种技术方案,通过引入少量的可训练矩阵来调整预训练模型的行为,极大降低了训练所…

EasyRecovery2024中文版数据恢复软件功能全面介绍

EasyRecovery2024是世界著名数据恢复公司 Ontrack 的技术杰作,它是一个威力非常强大的硬盘数据恢复工具。能够帮你恢复丢失的数据以及重建文件系统。 EasyRecovery不会向你的原始驱动器写入任何东东,它主要是在内存中重建文件分区表使数据能够安全地传输…

基于DCT(离散余弦变换)的图像水印算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

【LeetCode: 面试题 16.05. 阶乘尾数 + 阶乘】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Android 12.0 mtp模式下连接pc后显示的文件夹禁止删除copy重命名功能实现

1.前言 在12.0的系统rom定制化开发中,usb连接pc端的时候有好几种模式,在做otg连接pc端的时候,改成mtp模式的时候,在pc端可以看到产品设备 的显示的文件夹的内容,对于产品设备里面的文件在pc端禁止做删除重命名拷贝等操作功能的实现 2.mtp模式下连接pc后显示的文件夹禁止删…