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

ubuntu24.04 QT中配置opencv4.12

假如生成的opencv路径是:/usr/local/opencv4.12

QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += 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.0SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target# 以下是opencv的引用INCLUDEPATH +=  /usr/local/opencv4.12/include\/usr/local/opencv4.12/include/opencv4 \/usr/local/opencv4.12/include/opencv4/opencv2LIBS += /usr/local/opencv4.12/lib/libopencv_*.so \# /home/hwiki/OpenCV/install/lib/libopencv_core.so    \# /home/hwiki/OpenCV/install/lib/libopencv_imgproc.so \# /home/hwiki/OpenCV/install/lib/libopencv_imgcodecs.so

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QFileDialog>
#include <QMessageBox>
#include <QPixmap>#include <opencv2/opencv.hpp>
#include <opencv2/imgproc.hpp>using namespace cv;  // 引入opencv的命名空间
using namespace std;// 全局变量,用于存储原始图像
cv::Mat g_img_input;MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QString filename = QFileDialog::getOpenFileName(this,"打开图像文件",".","Image Files (*.bmp *.png *.jpg *.jpeg)");if (filename.isEmpty()) {QMessageBox::information(this, "提示", "未选择文件或文件打开失败!");return;}// 2. 使用 OpenCV 读取图像g_img_input = cv::imread(filename.toStdString()); // 在Ubuntu上,toStdString() 通常足够if (g_img_input.empty()) {QMessageBox::information(this, "提示", "无法读取图像文件,请检查文件路径和格式!");return;}// 3. 转换颜色空间 (OpenCV 读取的是 BGR, Qt 显示需要 RGB)cv::Mat img_rgb;cv::cvtColor(g_img_input, img_rgb, cv::COLOR_BGR2RGB);// 4. 将 cv::Mat 转换为 QImage// 注意:img_rgb 的数据必须是连续的,通常 imread 读取的是连续的QImage qimg(img_rgb.data,img_rgb.cols,img_rgb.rows,static_cast<int>(img_rgb.step), // 每行字节数QImage::Format_RGB888);// 5. 将 QImage 转换为 QPixmap 并显示在 QLabel 上QPixmap pixmap = QPixmap::fromImage(qimg);// 缩放图片以适应 QLabel 大小,同时保持原始比例QPixmap scaledPixmap = pixmap.scaled(ui->imageLabel->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);ui->imageLabel->setPixmap(scaledPixmap); // 假设您的 QLabel 名为 imageLabel// 设置 QLabel 的对齐方式,使图片居中显示ui->imageLabel->setAlignment(Qt::AlignCenter);// 6. 清理 (Mat 对象在函数结束时会自动释放)// img_input, img_rgb 会自动析构
}void MainWindow::on_pushButton_gray_clicked()
{// 直接写在这里// 检查是否有已加载的图像if (g_img_input.empty()) {QMessageBox::information(this, "提示", "请先打开一个图像文件!");return;}// 将图像转换为灰度图cv::Mat img_gray;cv::cvtColor(g_img_input, img_gray, cv::COLOR_BGR2GRAY);// 将灰度图转换为 QImage (灰度格式)QImage qimg(img_gray.data,img_gray.cols,img_gray.rows,static_cast<int>(img_gray.step),QImage::Format_Grayscale8);// 将 QImage 转换为 QPixmap 并显示在 QLabel 上QPixmap pixmap = QPixmap::fromImage(qimg);// 缩放图片以适应 QLabel 大小,同时保持原始比例QPixmap scaledPixmap = pixmap.scaled(ui->imageLabel->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);ui->imageLabel->setPixmap(scaledPixmap);// 设置 QLabel 的对齐方式,使图片居中显示ui->imageLabel->setAlignment(Qt::AlignCenter);
}

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

相关文章:

  • FreeRTOS基础知识记录
  • MySQL 中有哪些锁类型?
  • 华为交换机S5700设置acl
  • 衡石SENSE 6.0技术解析:Workflow到Agent模式如何重塑计算框架
  • ADC模数转换
  • Android init 进程部分理论
  • 解决使用OSS的multipartUpload方法上传大文件导致内存溢出的问题
  • 设计模式-行为型模式-命令模式
  • 【编号513】2025年全国地铁矢量数据
  • 从混乱到高效:ITSM软件如何重塑企业IT管理的新格局
  • 淘宝四个月造了一个超越美团的“美团”
  • 对接印度股票市场 数据源API
  • 逻辑漏洞 跨站脚本漏洞(xss)
  • 滚珠导轨如何赋能精密制造?
  • 【技术分享】系统崩溃后产生的CHK文件如何恢复?完整图文教程(附工具推荐)
  • 采用机器学习的苗期棉株点云器官分割与表型信息提取
  • DINOv3:自监督视觉模型的新里程碑!
  • Matlab实现基于CPO-QRCNN-BiGRU-Attention注意力多变量时间序列区间预测
  • Rust:所有权
  • 音视频学习(五十九):H264中的SPS
  • 使用STM32CubeMX使用CAN驱动无刷电机DJI3508
  • VisualStudio 将xlsx文件嵌入到资源中访问时变String?
  • HTML 和 JavaScript 关联的基础教程
  • LeetCode 刷题【56. 合并区间】
  • Linux - 中文显示乱码问题解决方法(编码查看及转换)- 学习/实践
  • 【Spring Cloud微服务】6.通信的利刃:深入浅出 Spring Cloud Feign 实战与原理
  • 智能体开发:学习与实验 ReAct
  • web端播放flv视频流demo(flv.js的使用)
  • API 月度更新汇总:ONLYOFFICE 协作空间文档
  • 【RAG Agent实战】告别“单线程”RAG:用查询理解与LangGraph构建能处理复杂意图的高级代理