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

qt显示图片并转换成灰度图及伪彩图

 

 

 

 写了个程序,可在途图片,并切换成灰度图及伪彩图显示,主要代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);initRGBTable();//初始化颜色表
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_2_clicked()//
{double fMax=0.0;double fMin=0.0;findMaxMin(m_vData,fMax,fMin);double fDifference = fMax - fMin;QVector<quint8> vnData;vnData.resize(m_vData.size());if(fDifference != 0){for(int i = 0;i<m_nHeight;i++){for(int j = 0;j<m_nWidth;j++){vnData[i*m_nWidth+j] = static_cast<int>((m_vData.value(i*m_nWidth+j)-fMin)*1.0f/fDifference*255);}}}QImage img((uchar*)(&vnData[0]),m_nWidth,m_nHeight,QImage::Format_Indexed8);img.setColorTable(m_vecGrayTable);ShowImg(img);
}
void MainWindow::findMaxMin(QVector<double> vData, double &fMax, double &fMin)
{if(vData.size()>1){fMax = vData.value(0);fMin = fMax;for(int i=1;i<vData.size();i++){if(fMax<vData.value(i)){fMax = vData.value(i);}if(fMin>vData.value(i)){fMin = vData.value(i);}}}
}void MainWindow::ShowImg(QImage img)
{QPixmap qPix = QPixmap::fromImage(img);qPix.scaled(ui->label->size(), Qt::KeepAspectRatio);ui->label->setPixmap(qPix);
}
void MainWindow::initRGBTable()
{//核心代码,请下载源码查看
}void MainWindow::on_pushButton_clicked()
{double fMax=0.0;double fMin=0.0;findMaxMin(m_vData,fMax,fMin);double fDifference = fMax - fMin;QVector<quint8> vnData;vnData.resize(m_vData.size());if(fDifference != 0){for(int i = 0;i<m_nHeight;i++){for(int j = 0;j<m_nWidth;j++){vnData[i*m_nWidth+j] = static_cast<int>((m_vData.value(i*m_nWidth+j)-fMin)*1.0f/fDifference*255);}}}QImage img((uchar*)(&vnData[0]),m_nWidth,m_nHeight,QImage::Format_Indexed8);img.setColorTable(m_vecColorTable);ShowImg(img);
}void MainWindow::on_pushButton_3_clicked()//打开图片
{QFileDialog *fileDlg = new QFileDialog(this);fileDlg->setWindowTitle("Choose Pictures");QStringList qstrFilters;qstrFilters<<"Any files (*)";fileDlg->setNameFilters(qstrFilters);//设置文件过滤器fileDlg->setFileMode(QFileDialog::ExistingFiles);//设置能选择多个文件,如果是单个文件就写成QFileDialog::ExistingFileif(fileDlg->exec() == QDialog::Accepted){QStringList strPathList = fileDlg->selectedFiles();if(strPathList.count()>0){qImg.load(strPathList.first());m_nWidth = qImg.width();m_nHeight = qImg.height();ShowImg(qImg);qImg = qImg.convertToFormat(QImage::Format_Grayscale8,Qt::AutoColor);m_vData.resize(m_nWidth*m_nHeight);unsigned char *ImgDataPtr = qImg.bits();for(int i = 0;i<m_nHeight;i++){for(int j = 0;j<m_nWidth;j++){m_vData[i*m_nWidth+j]=*ImgDataPtr;ImgDataPtr++;}}}}fileDlg->close();delete fileDlg;fileDlg = nullptr;
}

源码下载地址:https://download.csdn.net/download/weixin_43935474/88232145

http://www.lryc.cn/news/136249.html

相关文章:

  • oj在线编程输入输出
  • 【LeetCode 算法】Add Two Integers 两整数相加-位运算
  • 企业网络日志安全与 EventLog Analyzer
  • 清风数学建模——拟合算法
  • 单片机 (一) 让LED灯 亮
  • c++——单例模式
  • C# 流Stream详解(2)——FileStream、BinaryReader、MemorySream、SreamReader等之间的关系
  • 【JavaSE】详解final关键字
  • 问道管理:机器人概念走势活跃,新时达涨停,拓斯达、丰立智能等大涨
  • elementui 修改日期选择器el-date-picker样式
  • 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam
  • 数据可视化:图表绘制详解
  • 【中危】Apache Ivy<2.5.2 存在XXE漏洞 (CVE-2022-46751)
  • C#使用自定义的比较器对版本号(编码)字符串进行排序
  • AI在日常生活中的应用:从语音助手到自动驾驶
  • Windows10查看图片的分辨率
  • Spring事务和事务传播机制(2)
  • 计算机视觉 -- 图像分割
  • ubuntu18.04复现yolo v8之CUDA与pytorch版本问题以及多CUDA版本安装及切换
  • Redis三种模式——主从复制,哨兵模式,集群
  • mysql8.0.31新增只读远程普通用户
  • 揭开路由协议隐藏的风险
  • 图片因固定宽高被拉伸了?object-fit:一个神奇的属性
  • 客户案例:中圣科技—CAC2.0防范盗号威胁,加固安全防线
  • pandas数据分析40——读取 excel 合并单元格的表头
  • Java后端开发面试题——微服务篇总结
  • 第十一章MyBatis查询专题
  • 测试驱动开发(TDD)
  • 深度学习|CNN卷积神经网络
  • 【洁洁送书第五期】为什么我们要了解可观测性工程