一、前言

Qt的QGraphicsView类具有强大的视图功能,与其一起使用的还有QGraphicsScene类和QGraphicsItem类。大体思路就是通过构建场景类,然后向场景对象中增加各种图元,最后利用QGraphicsView类对场景进行显示。

二、绘制光谱曲线

实现功能主要有:

1 传递点击图像行列号,然后绘制曲线,代码如下:

 void SpectralProfileDialog::AddPressSlot()
{
//setModal(0);
HyperProcess *ptr = (HyperProcess*)parentWidget();
curFileName = ptr->curFileName;
currentRow = ptr->curRow;
currentCol = ptr->curCol; if(curFileName == "")
{
QMessageBox::information(this,"Message Error","Current Scene IS NULL!");
return;
} if(currentCol == - || currentRow == -)
{
QMessageBox::information(this,"Message Error","please Select A Pixel");
return;
} cv::Mat curImg = GDALOpenCV::GDAL2Mat(curFileName);
if(currentCol > curImg.cols || currentRow > curImg.rows)
return; int count = curImg.channels(); std::vector<cv::Mat> curImgMat(count);
cv::split(curImg,curImgMat); QVector<QPointF> pixSpectralData(count);
double tmpMaxValue;
double tmpMinValue;
double maxValue = ;
for(int c = ;c<count;c++)
{
cv::minMaxIdx(curImgMat[c],&tmpMinValue,&tmpMaxValue);
if(maxValue < tmpMaxValue)
maxValue = tmpMaxValue;
pixSpectralData[c].setX(curImgMat[c].at<float>(currentCol,currentRow));
pixSpectralData[c].setY(c+);
} float x_scale = 1.0*(ui->spectralGraphicsView->height()-)/maxValue;
float y_scale = 1.0*(ui->spectralGraphicsView->width()-)/count; QPen pen;
pen.setWidth();
QColor qc=QColor::fromHsl(rand()%,rand()%,rand()%);
pen.setColor(QColor(qc.red(),qc.green(),qc.blue())); for(int c = ;c<curImg.channels()-;c++)
{
myScene->addLine(pixSpectralData[c].y()*y_scale,-1.0*(pixSpectralData[c].x()*x_scale),
pixSpectralData[c+].y()*y_scale,-1.0*(pixSpectralData[c+].x()*x_scale),pen);
}
ui->spectralGraphicsView->setScene(myScene);
}

三、效果图

4. 绘制光谱曲线QGraphicsView类的更多相关文章

  1. [转载] MFC绘制动态曲线,用双缓冲绘图技术防闪烁

    转载的原文地址 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线 所谓动画,都是一帧一帧的图像连续呈现在用户面前形成的.所以如果你掌握了如何绘制静态曲线,那 ...

  2. 【MFC】MFC绘制动态曲线,用双缓冲绘图技术防闪烁

    摘自:http://zhy1987819.blog.163.com/blog/static/841427882011614103454335/ MFC绘制动态曲线,用双缓冲绘图技术防闪烁   2011 ...

  3. C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码

    原文:C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(Syst ...

  4. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  5. Matlab 如何绘制复杂曲线的包络线

    Matlab 如何绘制复杂曲线的包络线 http://jingyan.baidu.com/article/aa6a2c14d36c710d4c19c4a8.html 如果一条曲线(比如声音波形)波动很 ...

  6. IDL绘制黑体辐射曲线

    普朗克定律是热红外遥感中常常使用的三大定律之一,描述了黑体辐射能量的情况.绝对黑体的辐射光谱对于研究一切物体的辐射规律具有根本的意义.1900年普朗克引进量子概念,将辐射当做不连续的量子发射,成功地从 ...

  7. canvas绘制贝塞尔曲线

    原文:canvas绘制贝塞尔曲线 1.绘制二次方贝塞尔曲线 quadraticCurveTo(cp1x,cp1y,x,y); 其中参数cp1x和cp1y是控制点的坐标,x和y是终点坐标 数学公式表示如 ...

  8. 使用python和pygame绘制繁花曲线

    前段时间看了一期<最强大脑>,里面展示了各种繁花曲线组合成的非常美丽的图形,一时心血来潮,想尝试自己用代码绘制繁花曲线,想怎么组合就怎么组合. 真实的繁花曲线使用一种称为繁花曲线规的小玩意 ...

  9. Matlab绘图基础——绘制三维曲线

    %% 绘制三维曲线 %plot3函数,其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同. %1.当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线. x0 = 0 ...

随机推荐

  1. Android实现程序前后台切换效果

    本文演示如何在Android中实现程序前后台切换效果. 在介绍程序实现之前,我们先看下Android中Activities和Task的基础知识. 我们都知道,一个Activity 可以启动另一个Act ...

  2. Windows Server 2008搭建域控制器《转载51CTO.com》

    Windows Server 2008搭建域控制器 引入 在小型网络中,管理员通常独立管理每一台计算机,如最为常用的用户管理.但当网络规模扩大到一定程度后,如超过 10 台计算机,而每台计算机上有 1 ...

  3. Easyui 排序时 自动向后排传sort order 你妹真坑爹

    request 的时候 发现 sort 竟然是个数组!

  4. Jsp request

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030" ...

  5. Mysql学习(慕课学习笔记6)修改数据表(上)

    添加单列 Alter table tb1_name ADD[column] col_name column_definition [first | after col_name] 列名称       ...

  6. win7 去除桌面快捷方式小箭头

    二手入了个 sony 的本子 vgn-sz780 拿手上,感觉真心不错,然后装系统,装好xp后发现怎么折腾都没声音,由于我的硬盘是SSD的虽然有点小只有60G,但是速度还是蛮不多的,于是一横心就装了 ...

  7. 如何查看linux版本

    1. 查看内核版本命令: 1) [root@q1test01 ~]# cat /proc/version   Linux version 2.6.9-22.ELsmp (bhcompile@crowe ...

  8. Qt Creator快捷键大全,附快捷键配置方法

    一.快捷键配置方法:   进入“工具->选项->环境->键盘”即可配置快捷键.   二.常用默认快捷键:   编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助( ...

  9. linux type 命令和Linux的五个查找命令

    type命令用来显示指定命令的类型.一个命令的类型可以是如下之一 alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令,Shel ...

  10. 03_Elasticsearch如何安装以及相关插件的介绍

    03_Elasticsearch如何安装以及相关插件的介绍 elasticsearch -d (-d参数是为了让服务后台运行) Elasticsearch 目录结构: 文件夹 作用 /bin 运行El ...