opencv与qt5GUI融合
win.h
#ifndef WIN_H #define WIN_H #include <QWidget> #include <QDebug> #include <QFileDialog> #include<opencv2/opencv.hpp> #include <QPushButton> #include <QLabel> class win : public QWidget { Q_OBJECT public: win(QWidget *parent = nullptr); ~win(); public slots: void on_openButton_clicked(); private: QString img_name; cv::Mat src; QImage img; QLabel* label; QPixmap p; }; #endif // WIN_H
win.cpp
#include "win.h" win::win(QWidget *parent) : QWidget(parent) { this->resize(500,400); label=new QLabel(this); QPushButton* btn=new QPushButton("打开",this); btn->move(400,350); connect(btn,&QPushButton::clicked,this,&win::on_openButton_clicked); } win::~win() { } void win::on_openButton_clicked() { img_name = QFileDialog::getOpenFileName( this, tr("请选择需要打开的图片"), ".",tr("Image Files(*.png *.jpg *.jpeg *.bmp)")); if(img_name.length()<=0)return; qDebug()<<img_name; //"D:/bb/tu/a.png" //src=cv::imread(img_name); //这是错误的,因为opencv不认识Qstring src=cv::imread(img_name.toUtf8().data()); qDebug()<<img_name.toUtf8().data(); // D:/bb/tu/a.png //data()表示返回QByteArray的指针 cv::namedWindow( "src", cv::WINDOW_NORMAL ); if(!src.empty()){ cv::imshow("src",src);} img = QImage( (const unsigned char*)(src.data), src.cols, src.rows, QImage::Format_RGB888 );//把opencv图像转换成QImage图像 img=img.rgbSwapped();//RGB和BGR格式互换 //QImage是RGB顺序 opencv是BGR顺序 p.convertFromImage(img); //把QImage转换成QPixmap label->setPixmap(p); label->resize(src.cols,src.rows); }
工程下载: 链接:https://pan.baidu.com/s/1xGUo-RdYPPUuGB_cbbtFKA 提取码:6666
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2020-11-03 qt-简单的使用 QStyle 类
2020-11-03 qt--界面外观