Qt利用QLabel组件来显示图片

Qt OpenCV
0 717
suoniao 2021-04-23
需要:0索币

//打开图片文件

void OpenCVTestSf::OpenImageFile()

{

  QString fileName = QFileDialog::getOpenFileName(this, "open Image", "", "Image File(*.bmp *.jpg *.jpeg *.png)");

  QTextCodec* code = QTextCodec::codecForName("gb18030");

  std::string name = code->fromUnicode(fileName).data();

  m_srcImage = imread(name);

  if (m_srcImage.data)

  {

    cvtColor(m_srcImage, m_srcImage, COLOR_BGR2RGB);//BGR转化为RGB  

    QImage::Format format = QImage::Format_RGB888;

    switch (m_srcImage.type())

    {

    case CV_8UC1:

      format = QImage::Format_Indexed8;

      break;

    case CV_8UC3:

      format = QImage::Format_RGB888;

      break;

    case CV_8UC4:

      format = QImage::Format_ARGB32;

      break;

    }

    QImage img = QImage((const uchar*)m_srcImage.data, m_srcImage.cols, m_srcImage.rows,

      m_srcImage.cols * m_srcImage.channels(), format);

    ui.labImgShow->clear();

    m_nImgWidth = m_srcImage.cols;//图像宽

    m_nImgHeight = m_srcImage.rows;//图像高

    QPixmap pixmap = QPixmap::fromImage(img);

    pixmap = pixmap.scaled(ui.labImgShow->size());

    ui.labImgShow->setAutoFillBackground(true);

    QPalette palette;

    palette.setBrush(ui.labImgShow->backgroundRole(), QBrush(pixmap));

    ui.labImgShow->setPalette(palette);

    ui.labImgShow->repaint();

}

打开图片,转换成OpenCV中的Mat数据类型的m_srcImage图片,将其图片转成Qt中的QImage和QPixmap,再根据显示图片组件的大小,将图片数据压缩进图片显示组件中去,这样图片就能完全的显示出来

    特别说明

        OpenCV中的图片数据是按BGR顺序排列的,而Qt中的图片数据是按RGB顺序排列的,所以就有了一个将OpenCV图片数据转换格式的代码

    cvtColor(m_srcImage, m_srcImage, COLOR_BGR2RGB);//BGR转化为RGB  

3、实际效果如下

原文地址 https://mp.weixin.qq.com/s/5-Bp4BGyDVpgLtJ1fkKpxw

回帖
  • 消灭零回复
相关主题
Qt利用QLabel组件来显示图片 0
TableView自定义代理QStyledItemDelegate实现ComboBox 0
Qt利用QGraphicsView类实现图片放大缩小平移显示 0
Qt实现非阻塞延迟方法sleep 0
Qt实现webdav客户端功能支持https协议的webdav客户端 0
Qt操作windows注册表的方法 bat从注册表中将键值删除 0
重写QSqlQueryModel实现QTableView显示图片 0
QLocalServer基于本地套接字socket的服务端server 0
Qt使用动态库的方法 QLibrary库的典型用法 0
QT实现视频播放器界面开发 0
QTableview实现鼠标放上面显示不同颜色 0
Qt的QTableView自定义委托详解 0
QTableView利用自定义委托实现日期显示下拉菜单文字颜色等 0
Qt利用QApplication::sendEvent和QMouseEvent模拟鼠标点击事件 0
Qt获取父进程路径和父进程ID代码 0
QStyledItemDelegate和QItemDelegate区别在于绘制和向视图提供编辑器的方式 0
Qt实现全局快捷键功能利用QxtGlobalShortcut库 0
利用QSS去掉QListWidget选中时的虚线框 0
如何自己使用 QEventLoop解决窗口一闪而过的问题 0
Qt 为什么没有提供跨平台的 sleep 函数? 0
相关主题
打印机USB驱动开发之实现打印服务器 0
Qt利用QLabel组件来显示图片 0
TableView自定义代理QStyledItemDelegate实现ComboBox 0
Qt利用QGraphicsView类实现图片放大缩小平移显示 0
Qt实现非阻塞延迟方法sleep 0
海康相机SDK的C++对应的接口 0
Qt实现webdav客户端功能支持https协议的webdav客户端 0
CHKDSK解决 移动硬盘只能看见盘符其它信息都看不见另外双击也打不开 0
gogs一直报errror:dial tcp xxx.xxx.xxx.xxx 宿主机的ip 0
索鸟快传2.1.2发布 0
索鸟快传2.1.1发布 0
Qt操作windows注册表的方法 bat从注册表中将键值删除 0
重写QSqlQueryModel实现QTableView显示图片 0
QLocalServer基于本地套接字socket的服务端server 0
Qt使用动态库的方法 QLibrary库的典型用法 0
QT实现视频播放器界面开发 0
QTableview实现鼠标放上面显示不同颜色 0
Qt的QTableView自定义委托详解 0
QTableView利用自定义委托实现日期显示下拉菜单文字颜色等 0
Qt利用QApplication::sendEvent和QMouseEvent模拟鼠标点击事件 0