当前位置: 首页 > java >正文

win11中Qt5.14.0+msvc2019+opencv4.9配置

本文主要研究由msvc编译的opencv在QT中的配置,opencv可以是官网直接下载的版本,也可以是msvc(例如vs2019)通过cmake编译 contrib功能的opencv版本,这2种版本对qt版本没有严格要求,但是若在cmake中选择了with_qt功能,那么配置时的qt版本就要和编译时选择的qt版本一样或相近了。

下载官方opencv4.9并解压,将bin路径添加到系统变量

打开Qt5.14.0新建项目

.pro文件设置以下内容

#win32:CONFIG(release, debug|release): LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490
#else:win32:CONFIG(debug, debug|release): LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490dCONFIG(debug,debug|release){
LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490d
}
else{
LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490
}INCLUDEPATH += E:/opencv4.9/build/include
DEPENDPATH += E:/opencv4.9/build/include

这里注意如果有多个opencv文件,可以后面添加

LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490 -lopencv_shape490

添加点击事件

输入按钮点击事件的代码,头文件也要添加

#include <QFileDialog>
#include <QMessageBox>
#include <QPixmap>#include <opencv2/opencv.hpp>
#include <opencv2/imgproc.hpp>using namespace cv;  // 引入opencv的命名空间
using namespace std;
void MainWindow::on_pushButton_clicked()
{QString filename = QFileDialog::getOpenFileName(this, "打开图像文件", "C:/Users", "Image Files (*.bmp;*.png;*.jpg)");if (filename.isEmpty()) {QMessageBox::information(this, "提示", "文件打开失败1!");return;}Mat img_input;img_input = imread(filename.toLocal8Bit().toStdString());if (img_input.empty()) {QMessageBox::information(this, "提示", "文件打开失败2!");return;}cv::Mat temp;cv::cvtColor(img_input, temp, cv::COLOR_BGR2RGB);namedWindow("Display window",WINDOW_AUTOSIZE);imshow("Display window",img_input);waitKey(0);MainWindow w;w.show();
}

选择一张图片

这里需要注意的是,opencv如果只针对msvc进行编译,而没有针对qt进行编译,opencv就像在Visual Studio中使用一样,如果也针对qt进行了编译,显示的图片窗口会带有qt特色的功能按钮

http://www.xdnf.cn/news/17396.html

相关文章:

  • Linux中的内核同步源码相关总结
  • GPT-5 is here
  • BUG调试案例十七:ENC424J600以太网掉线问题案例
  • Python实现点云PCA配准——粗配准
  • 板卡如何安装在主机系统(刀片服务器或计算节点)
  • 用browse实现菜单功能的方法
  • 数据结构--哈希表与排序、选择算法
  • 力扣-53.最大子数组和
  • 库函数版独立按键用位运算方式实现(STC8)
  • 解决阿里云盘不能分享压缩包【7-zip工具】(详细)
  • Linux多线程——生产者消费者模型
  • C/C++二维数组创建内存分配
  • 大模型——部署体验gpt-oss-20b
  • 云原生时代的 Linux:容器、虚拟化与分布式的基石
  • 复杂路况误报率↓78%!陌讯轻量化模型在车辆违停识别的边缘计算优化​
  • 抖音AI分身:帮助每个抖音创作者,打造自己的AI分身
  • Kotlin 数据容器 - MutableList(MutableList 概述、MutableList 增删改查、MutableList 遍历元素)
  • STM32学习笔记5-TIM定时器-1
  • cuda算子--softmax算子与优化
  • 如何将视频转为GIF格式,3大视频转为GIF工具
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第八天(Vue框架及其安装)(完结篇) 重点 ! ! !
  • AWS 云小白学习指南 (一)
  • 生产管理ERP系统|物联及生产管理ERP系统|基于SprinBoot+vue的制造装备物联及生产管理ERP系统设计与实现(源码+数据库+文档)
  • 【网络自动化】利用Python脚本与计划任务,实现H3C/HPE设备配置无人值守备份
  • 综合项目记录:自动化备份全网服务器数据平台
  • 多级缓存架构:新品咖啡上线引发的数据库压力风暴与高并发实战化解方案
  • 时序数据库-涛思数据库
  • hive-日期拆分为多行
  • 力扣热题100------287.寻找重复数
  • LeetCode快乐数问题