QCustomplot实现灰度曲线图

从 QCustomplot官网 https://www.qcustomplot.com/index.php/download 下载支持文件。首页有些demo可以进行参考学习。

在这里插入图片描述

新建一个Qt工程,将下载得到的qcustomplot.h和qcustomplot.cpp文件加入到当前工程。pro文件中加上 printsupport

在这里插入图片描述

在ui界面中,添加一个Widget,将其提升为QCustomplot类型。

在这里插入图片描述

qt配置opencv,可见此篇文章 https://blog.csdn.net/bangtanhui/article/details/135583311


本次获取了一张图片的某一行的所有像素点灰度值,并以曲线的形式展现。

具体实现,见以下代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <opencv2/imgcodecs.hpp>
#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/core/hal/interface.h>
#include <opencv2/features2d/hal/interface.h>
#include <opencv2/imgproc/hal/interface.h>
#include "qcustomplot.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QString imgPath = "D:\\Qt\\File\\open_test\\background.PNG";
//    cv::Mat imgMat = cv::imread(imgPath.toLatin1().data(), cv::IMREAD_GRAYSCALE);
//    cv::cvtColor(imgMat, imgMat, cv::COLOR_BGR2RGB);
//    QImage img((const unsigned char*)(imgMat.data), imgMat.cols, imgMat.rows, QImage::Format_RGB888);ui->wid_curve->xAxis->setLabel(tr("Pixel"));ui->wid_curve->yAxis->setLabel(tr("GrayVal"));// 设置坐标轴的结束箭头ui->wid_curve->xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);ui->wid_curve->xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);//设置背景色QLinearGradient plotGradient;plotGradient.setStart(0,0);//背景颜色起始点,从图左上角开始,y方向0~400之间为红色渐变,开始位置为红色plotGradient.setFinalStop(0,400);//y方向 >400 为绿色渐变,结束位置为绿色plotGradient.setColorAt(0,QColor(200,200,200));//黑色,透明度从 0 ~ 1,plotGradient.setColorAt(1,QColor(120,120,120));ui->wid_curve->setBackground(plotGradient);//添加图形ui->wid_curve->addGraph();ui->wid_curve->graph(0)->setPen(QPen(Qt::yellow)); // line color blue for first graphui->wid_curve->addGraph();//读取测试图片cv::Mat testMat;testMat = cv::imread(imgPath.toStdString(), CV_8UC1);if(testMat.empty()){return;}int rows = testMat.rows;int cols = testMat.cols;int maxGrayVal = 255;// 设置坐标轴的范围ui->wid_curve->xAxis->setRange(0,cols);  // 下边ui->wid_curve->xAxis2->setRange(0,cols); // 上边ui->wid_curve->yAxis->setRange(0,maxGrayVal);  // 左边ui->wid_curve->yAxis2->setRange(0,maxGrayVal); // 右边ui->wid_curve->xAxis2->setVisible(true);ui->wid_curve->xAxis2->setTickLabels(false);ui->wid_curve->yAxis2->setVisible(true);ui->wid_curve->yAxis2->setTickLabels(false);//获取200行的灰度值,更新x,y值QVector<double> x(cols),y(cols);for(int i=0; i<cols; i++){x[i] = i;//指定图片第200行的像素点int grayVal = (int)testMat.at<uchar>(200,i);y[i] = grayVal;}ui->wid_curve->graph(0)->setData(x,y);ui->wid_curve->graph(0)->rescaleAxes();ui->wid_curve->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);ui->wid_curve->replot();
}MainWindow::~MainWindow()
{delete ui;
}

效果如图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

THM学习笔记——枚举

复制以下内容时注意中英文符号区别 在枚举之前我们要将shell升级为完全交互式的tty。 这涉及以下几条命令 python -c import pty;pty.spawn("/bin/bash") stty raw -echo export TERMxterm rlwrap nc -lvnp 443 从以上选一条即可 手动枚举 以下命令只需了解即可&…

git 使用 (备查)

git忽略清单 添加忽略清单 SSH免登录 ssh协议可以实现免登录操作&#xff0c;身份验证通过密钥实现。 跨团队写作 解决冲突 拉取 克隆 拉取最新版本 推送 远程仓库别名 直接使用git push推送 多人协作开发 分支命令 合并分支命令在主分支使用&#xff0c;将develop分支合并到…

《向量数据库指南》——Milvus Cloud 「部署」:简化部署一直在路上

“docker-compose 能部署分布式吗?”"单机部署为什么还依赖这么多组件?"“大家 Milvus Cloud 集群部署有没有实践过比较好的方案?” 作为一个开源数据库,是否能够进行快速部署,是所有工作的前提。在简化部署的道路上,社区从来没有停止过脚步。2023 年,社区推…

使用 openpyxl 操作 Excel

由于单位有任务&#xff0c;需要按照名册制作多个工作表。手动复制和修改内容太费事了&#xff0c;所以使用python完成此项工作&#xff0c;为之后的此类工作提供一个通用脚本。 安装依赖库 pip install openpyxl lxml我们需要用到openpyxl。在官方文档中提到&#xff0c;如果…

【Git】07 本地仓库同步到GitHub或Gitee

文章目录 一、远端仓库配置1.1 配置密钥认证1.2 新建仓库 二、本地配置2.1 添加远程库 三、push推送四、拉取合并与推送4.1 拉取fetch4.2 合并merge4.3 推送push 五、总结 一、远端仓库配置 1.1 配置密钥认证 1&#xff09;ssh-keygen 本地端命令行上执行ssh-keygen命令&…

2024-02-06(Sqoop)

1.Sqoop Apache Sqoop是Hadoop生态体系和RDBMS&#xff08;关系型数据库&#xff09;体系之间传递数据的一种工具。 Sqoop工作机制是将导入或者导出命令翻译成MapReduce程序来实现。在翻译出的MapReduce中主要是对inputformat和outputformat进行定制。 Hadoop生态包括&#…

Jmeter 基于Docker 实现分布式测试

基于Docker 实现分布式测试 制作Jmeter基础镜像制作工作节点镜像启动工作节点启动控制节点遇到的问题 使用Docker 部署Jmeter非常方便&#xff0c;可以省略软件的安装以及配置&#xff0c;比如jdk、jmeter。需要部署多个工作节点可以节省时间。 控制节点&#xff08;Master-主节…

数据库触发器

在实际开发中&#xff0c;我们经常会遇到这样的情况&#xff1a;有 2 个或者多个相互关联的表&#xff0c;如 商品信息 和 库存信息 分 别存放在 2 个不同的数据表中&#xff0c;我们在添加一条新商品记录的时候&#xff0c;为了保证数据的完整性&#xff0c;必须同时…

服务器被黑,安装Linux RootKit木马

前言 疫情还没有结束&#xff0c;放假只能猫家里继续分析和研究最新的攻击技术和样本了&#xff0c;正好前段时间群里有人说服务器被黑&#xff0c;然后扔了个样本在群里&#xff0c;今天咱就拿这个样本开刀&#xff0c;给大家研究一下这个样本究竟是个啥&#xff0c;顺便也给…

工业以太网交换机引领现代工厂自动化新潮流

随着科技的飞速发展&#xff0c;现代工厂正迎来一场前所未有的自动化变革&#xff0c;而工业以太网交换机的崭新角色正是这场变革的关键组成部分。本文将深入探讨工业以太网交换机与现代工厂自动化的紧密集成&#xff0c;探讨这一集成如何推动工业生产的智能化、效率提升以及未…

【教学类-47-01】UIBOT+IDM下载儿童古诗+修改文件名

背景需求&#xff1a; 去年12月&#xff0c;我去了其他幼儿园参观&#xff0c;这是一个传统文化德育教育特色的学校&#xff0c;在“古典集市”展示活动中&#xff0c;小班中班大班孩子共同现场念诵《元日》《静夜思》包含了演唱版本和儿歌念诵版本。 我马上也要当班主任了&a…

分享66个行业PPT,总有一款适合您

分享66个行业PPT&#xff0c;总有一款适合您 66个行业PPT下载链接&#xff1a;https://pan.baidu.com/s/1kcUOfR_xtH9CAJC12prcTw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。知…