您当前的位置: 首页 >  opencv

令狐掌门

暂无认证

  • 2浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ Qt显示OpenCV图片【致敬浅墨_毛星云】

令狐掌门 发布时间:2020-04-19 15:49:42 ,浏览量:2

        先下载opencv sdk, 官网下载链接:Releases - OpenCV  选择相应的版本,本篇博客是用的4.5.4版本,下载解压后,找到相应的include, lib,dll,  类似于平常的SDK在vs下的配置, 包含头文件,lib。

        新建一个Qt GUI项目,用QLabel可以显示OpenCV的Mat图片,  Qt界面如下:

       点击按钮加载图片并显示,代码如下:

#pragma execution_character_set("utf-8")

#include "demo01.h"
#include 
#include "opencv2/opencv.hpp"
#include 

using namespace std;
using namespace cv;


QString str2qstr(const string& str)
{
    return QString::fromLocal8Bit(str.data());
}

string qstr2str(const QString& qstr)
{
    QByteArray cdata = qstr.toLocal8Bit();
    return string(cdata);
}

demo01::demo01(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    ui.label_mat->setText("");
    ui.label_mat->setStyleSheet("background-color:rgb(54,54,54)");
}

void demo01::on_btnSelect_clicked()
{
    QString file = QFileDialog::getOpenFileName(
        this, "选择要播放的文件",
        "/",
        "视频文件 (*.png *.jpg *.jpeg *.PNG);; 所有文件 (*.*);; ");

    if (file.isEmpty())
    {
        return;
    }

    ui.lineEdit->setText(file);

    int wid = ui.label_mat->width();
    int hig = ui.label_mat->height();

    //file.toStdString();  //中文乱码,会导致Mat对象为空
    string file_name = qstr2str(file);  

    cv::Mat src = imread(file_name);
    cvtColor(src, src, COLOR_RGBA2RGB); 

    int channels = src.channels(); //注意通道数,选择合适的QImage格式

    //Mat格式转为QImage
    QImage img = QImage((const unsigned char*)(src.data), src.cols, src.rows, QImage::Format_RGB888);

    //QLabel显示图片
    ui.label_mat->setPixmap(QPixmap::fromImage(img));
}

        OpenCV读取图片后返回的是Mat类对象,该类保存了图像的一些参数,例如行数,列数,图像数据。

//! the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
int rows, cols;

//! pointer to the data
uchar* data;

         Mat可以转化成QImage,  再用QLabel就可以显示了,如下图:

更新于2021-12-14,致敬 浅墨_毛星云  https://blog.csdn.net/poem_qianmo/category_1923021.html

    

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0742s