服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Qt利用ImageWatch实现图片查看功能

Qt利用ImageWatch实现图片查看功能

2022-11-11 14:50libaineu2004 C/C++

Visual Studio有专门针对OpenCV开发的插件,名叫ImageWatch,图片放大之后可以查看RGB的像素值。本文将利用这一查件实现图片查看功能,需要的可以参考一下

使用Qt实现ImageWatch图片查看功能,图片放大可见RGB像素值。支持打开大图片,即打开一个几百MB甚至几GB的大图片。

1、什么是ImageWatch

Visual Studio有专门针对OpenCV开发的插件,名叫ImageWatch,图片放大之后可以查看RGB的像素值。

Image Watch 2019 - Visual Studio Marketplace

Image Watch Help

Qt利用ImageWatch实现图片查看功能

Qt利用ImageWatch实现图片查看功能

2、得空自己用Qt仿照实现了一下这个功能:

纯粹Qt写的,没有使用Halcon和OpenCV库。

(1)打开8位的灰度图

Qt利用ImageWatch实现图片查看功能

鼠标滚轮放大之后,可以查看灰度值;鼠标中键下压可以拖动图片;

Qt利用ImageWatch实现图片查看功能

(2)打开24位的彩色图

Qt利用ImageWatch实现图片查看功能

鼠标放大之后可以查看RGB三通道的数值;鼠标中键下压可以拖动图片;

Qt利用ImageWatch实现图片查看功能

3、怎么使用Qt打开一个几百MB甚至几GB的大图片?

Qt官方文档建议使用QImageReader,直接上源码:

bool MainWindow::readBigImage(const QString &path)
{
  QImageReader reader(path);
  reader.setAutoTransform(true);
  if (!reader.canRead())
  {
      return false;
  }

  QSize originSize = reader.size(); //原始的分辨率
  qDebug() << originSize;
  QSize newSize = originSize.scaled(800, 600, Qt::KeepAspectRatio); //缩放后的分辨率,保持纵横比
  qDebug() << newSize;
  QRect clipRt(500, 0, 1000, 1000);

//读取的方式
#if 1
  reader.setScaledSize(newSize); //按照指定的缩放大小来读取
#else
  reader.setClipRect(clipRt); //按照指定的矩形区域来读取
#endif

  QImage image = reader.read();
  if (image.isNull())
  {
      QFile file(path);
      file.open(QIODevice::ReadOnly);
      QByteArray data = file.readAll();
      image = QImage::fromData(data).scaled(newSize, Qt::KeepAspectRatio);

      if (image.isNull())
      {
          return false;
      }
  }

  ui->graphicsView->addCADBackgroundImage(image);

  //一次性定时器
  QTimer::singleShot(10, this, [=]() {
      slotViewZoomAuto();
  });

  return true;
}

到此这篇关于Qt利用ImageWatch实现图片查看功能的文章就介绍到这了,更多相关Qt ImageWatch图片查看内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/libaineu2004/article/details/124217848?

延伸 · 阅读

精彩推荐
  • C/C++浅谈CMake配置OpenCV 时静态链接与动态链接的选择

    浅谈CMake配置OpenCV 时静态链接与动态链接的选择

    下面小编就为大家带来一篇浅谈CMake配置OpenCV 时静态链接与动态链接的选择。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过...

    C语言教程网4792021-04-28
  • C/C++C语言中栈的两种实现方法详解

    C语言中栈的两种实现方法详解

    栈只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但是限定这种线性表只能在某一端进行插入和删除操作,这篇文章主要介绍了C语言对...

    __山顶洞人__6812021-12-20
  • C/C++详解C语言 三大循环 四大跳转 和判断语句

    详解C语言 三大循环 四大跳转 和判断语句

    这篇文章主要介绍了详解C语言 三大循环 四大跳转 和判断语句的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...

    xunxun5234392021-04-08
  • C/C++QT实现提示右下角冒泡效果

    QT实现提示右下角冒泡效果

    这篇文章主要为大家详细介绍了QT实现提示右下角冒泡效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    swartz_lubel9542021-09-24
  • C/C++C++交换指针实例

    C++交换指针实例

    这篇文章主要介绍了C++交换指针实例,针对C与C++交换指针的方法进行了较为详细的对比分析,非常具有实用价值,需要的朋友可以参考下...

    C++教程网11932021-02-04
  • C/C++C指针原理教程之编译原理-小型计算器实现

    C指针原理教程之编译原理-小型计算器实现

    本文给大家分享的是如何使用C语言编写一个小型计算器的实例代码,有需要的小伙伴可以参考下...

    myhaspl10052021-07-21
  • C/C++详解QTreeWidget隐藏节点的两种方式

    详解QTreeWidget隐藏节点的两种方式

    本文主要介绍了QTreeWidget隐藏节点的两种方式,一种是直接隐藏,一种是间接隐藏,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小...

    前行中的小猪7602022-10-21
  • C/C++C++与C的差异分析

    C++与C的差异分析

    这篇文章主要介绍了C++与C的差异分析,非常实用,需要的朋友可以参考下...

    C++教程网3782021-01-28