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

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.dtcms.com/a/357474.html

相关文章:

  • 引力场能量为负,物质能量为正,这是在存在物质的空间中说的,如果是空无一物的空间呢,引力场能量还是负吗(或者说引力场还存在吗)
  • 2025年09月计算机二级Java选择题每日一练——第十一期
  • Vue3 kkfileview 的使用
  • Hal aidl 模板
  • Django开发规范:构建可维护的AWS资源管理应用
  • 第八章 惊喜01 测试筹备会
  • 【Flask】测试平台开发,产品管理实现编辑功能-第六篇
  • 对接连连支付(七)-- 退款查询
  • CSS设置滚动条显示时机及样式
  • R 语言 + 卒中 Meta 分析(续):机器学习 Meta 与结构方程 Meta 完整实现
  • STM32之IIC详解
  • GY-BMP280压强传感器完整工程stm32控制
  • 嵌入式滤波算法模块
  • 换公司如何快速切入软件项目工程
  • vant Overlay 遮罩层内元素无法滚动解决方案
  • 命令扩展与重定向
  • 【完整源码+数据集+部署教程】硬币分类与识别系统源码和数据集:改进yolo11-SWC
  • 【序列晋升】20 Spring Cloud Function 函数即服务(FaaS)
  • 明远智睿 RK3568 核心板:以硬核性能解锁多领域应用新可能
  • java_web 日志配置
  • KNN算法(K近邻算法)
  • leetcode 191 位1的个数
  • Maven 从 0 到 1:安装、配置与依赖管理一站式指南
  • Ubuntu下的压缩及解压缩
  • 基于SpringBoot的高校科研项目管理系统【2026最新】
  • 《生成式AI消费级应用Top 100——第五版》| a16z
  • Redis-分布式缓存
  • LBM——大型行为模型助力波士顿人形Atlas完成多任务灵巧操作:CLIP编码图像与语义,之后DiT去噪扩散生成动作
  • 中级统计师-统计实务-第二章 统计调查设计
  • 鸿蒙FA/PA架构:打破设备孤岛的技术密钥