首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Qt C++中绘制HSV色轮

在Qt C++中绘制HSV色轮,可以使用QPainter类和QConicalGradient类来实现。

首先,我们需要创建一个继承自QWidget的自定义窗口类,例如MyWidget。在该类的构造函数中,设置窗口的大小和标题。

接下来,在MyWidget类中重写paintEvent函数,用于绘制HSV色轮。在paintEvent函数中,创建一个QPainter对象,并设置绘制的目标为窗口本身。

然后,创建一个QConicalGradient对象,并设置其起始角度为0,结束角度为360。这样就创建了一个完整的圆形渐变。

接着,使用setCenter函数将渐变的中心点设置为窗口的中心点。这样,渐变的中心点就位于窗口的中心。

然后,使用setAngle函数将渐变的角度设置为0。这样,渐变的颜色将从起始角度开始。

接下来,使用setColorAt函数设置渐变的颜色。根据HSV色彩模型,我们可以通过改变色相(H)的值来获得不同的颜色。因此,我们可以使用循环来遍历0到360的色相值,并将对应的颜色设置到渐变中。

最后,使用QPainter的drawEllipse函数绘制一个圆形,并使用setBrush函数将渐变设置为画刷。然后,使用drawEllipse函数绘制一个内切圆形,以形成色轮的效果。

以下是完整的代码示例:

代码语言:txt
复制
#include <QtWidgets>

class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent)
    {
        setFixedSize(400, 400);
        setWindowTitle("HSV Color Wheel");
    }

protected:
    void paintEvent(QPaintEvent *event) override
    {
        Q_UNUSED(event);

        QPainter painter(this);

        QConicalGradient gradient;
        gradient.setAngle(0);
        gradient.setCenter(width() / 2, height() / 2);

        for (int hue = 0; hue <= 360; ++hue)
        {
            QColor color;
            color.setHsv(hue, 255, 255);
            gradient.setColorAt(hue / 360.0, color);
        }

        painter.setBrush(gradient);
        painter.drawEllipse(rect().adjusted(10, 10, -10, -10));
        painter.drawEllipse(rect().adjusted(70, 70, -70, -70));
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MyWidget widget;
    widget.show();

    return app.exec();
}

这段代码创建了一个窗口,绘制了一个HSV色轮。通过循环遍历0到360的色相值,将对应的颜色设置到渐变中,然后使用QPainter绘制圆形并设置渐变为画刷,最后绘制一个内切圆形以形成色轮的效果。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云计算服务:https://cloud.tencent.com/product
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器:https://cloud.tencent.com/product/cvm
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网:https://cloud.tencent.com/product/iot
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobile
  • 腾讯云存储:https://cloud.tencent.com/product/cos
  • 腾讯云区块链:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙:https://cloud.tencent.com/product/virtual-world
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

分享一个基于HSV的调色板应用

前言 上一篇文章介绍了HSV,这次分享一个基于HSV的调色板应用,应用地址:ColorfulBox - Microsoft Store ? 2....功能 ColorfulBox是Adobe 的简单模仿,只实现了最基本的功能,UI也没那么好看,也没用MVVM框架。...2.1 HSV 这个应用最好玩的地方在于分布于HSV轮上的各个点(ColorPoint)以及可以通过拖动它们改变颜色。...2.3 已知的问题 Hsv各个ColorPoint拖动并不是太平滑,这是因为Hsv颜色只能表示360 * 100 = 36000 种颜色,而Hsv轮上有πr^2 个像素点,它们之间做不到完全匹配...题外话,UWP一直缺少一个ColorPicker控件,而微软将在Fall Update (1709)中提供新的控件ColorPicker,同样基于HSV。等了这么久终于等到了。 ? 4.

1.3K40

使用Writeable​Bitmap创建HSV

1.2.1 从RGB到HSL或HSV的转换 (r, g, b)分别是一个颜色的红、绿和蓝坐标,它们的值是0到1之间的实数。设max等价于r, g和b的最大者。...1.2.2 从HSV到RGB的转换 给定在HSV (h, s, v)值定义的一个颜色,带有如上的h,和分别表示饱和度和明度的s和v变化于0到1之间,RGB空间中对应的 (r, g, b)三原色可以计算为...1.3 HSV的应用 HSV模型通常用于计算机图形应用。在用户必须选择一个颜色应用于特定图形元素各种应用环境,经常使用HSV 。 ?...1.4 HSV 很多设计方面的书籍都有介绍使用色轮为UI配色,由于篇幅较大这里就不在论述了,具体可以参考以下链接:网页设计怎么配色 2....使用WriteableBitmap创建HSV 前面介绍了Hsv,也介绍了如何使用WriteableBitmap,那么用WriteableBitmap实现一个HSV是一件很简单的事,只需要计算每个像素点距离中心点的角度

1.1K30

C++ Qt开发:Charts折线图绘制详解

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,Qt我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts折线图的常用方法及灵活运用...数据点: 图表上表示具体的数据值的点。 折线: 将数据点连接起来的线,形成变化趋势。 Qt,可以使用图表库来创建折线图。...之前的文章笔者简单创建了一个折线图,由于之前的文章只是一个概述其目的是用于让读者理解绘图组件是如何被引用到项目中的,以及如何实际使用,本章我们将具体分析折线图的绘制功能,详细介绍图表各个部分的设置和操作...例如,设置图例图标的上下左右四个方位,以下枚举常量代表了对齐方式,可以用于设置控件或绘图元素在其父元素的位置。 Qt::AlignTop(顶部对齐): 控件或元素将与其父元素的顶部对齐。...,并且居右侧对齐了,颜色则是紫色,如下图所示; 1.1.4 边距设置 边距的设置多数时候是用不到的,因为Qt默认的边距已经就很合理了,但是某些时候边距也需要被调整,调整边距可以通过调用setMargins

58510

【图形学】探秘图形学奥秘:区域填充的解密与实战

区域填充中最常用的是多边形填,本节我们就以此为例讨论区域填充算法。 填算法分为两大类: 扫描线填(Scan-Line Filling)算法。...这类算法建立多边形边边界的矢量形式数据之上,可用于程序填,也可用交互填。 种子填(Seed Filling)算法。这类算法建立多边形边边界的图象形式数据之上,并还需提供多边形界内一点的坐标。...多边形被扫描完毕后,填也就完成。 2.5 实验步骤 新建工程,绘制几何图形,同时进行扫描线添。...这使我对C++的制图能力更加自信,也为我图形学领域的兴趣提供了更多的可能性。...学习过程的挑战和成长: 实验过程,我花费了较多的时间控制图像生成方面,包括输出面板的底色、图像初始位置的控制以及输出框的大小控制。

11510

颜色空间RGB与HSV(HSL)的转换

HSL 颜色空间类似于 HSV某些方面甚至比它还好。 [编辑]用途 HSV 同意用户高速的选择众多颜色。...HSV 模型的圆锥表示适合于一个单一物体展示整个 HSV 色彩空间。 HSV 模型通经常使用于计算机图形应用。...在用户必须选择一个颜色应用于特定图形元素各种应用环境,经常使用 HSV 。在当中,色相表示为圆环;能够使用一个独立的三角形来表示饱和度和明度。...W3C 的 CSS3 规定声称“HSL 的长处是它对称于亮与暗(HSV 就不是这样)…”,这意味着: HSL ,饱和度分量总是从全然饱和变化到等价的灰色( HSV 极大值 V 的时候,饱和度从全饱和变化到白色...HSV 传统上更经常使用。以下是一些样例: GIMP 支持 HSV 色彩空间内的选取颜色的多种方法,包含带有色相滑块的方。

3.2K10

C++ OpenCV基于颜色分割实现源视频上物体追踪

前言 上一篇我们学习了《C++ OpenCV使用InRange对HSV颜色进行分割》,本身通过视频可以看到我们通过颜色把按摩器提取了出来,这次我们基于上一章的成果,在上面实现原视频的物体标识出来,...html 实现思路 对源视频用InRange进行颜色分割 对分割出来的图像进行形态学操作(开操作去燥) 然后再进行N闪的膨胀(N为整数,需要自己把握) 对膨胀后的形态进行查找轮廓 生成轮廓的外接矩形 源图上把外接矩形绘制出来...代码实现 我们还是用上次的那个项目opencv--video2,按照配置属性(VS2017配置OpenCV通用属性),然后原来的基础上增加一个矩形的定义,如下图红框所示: ?...再进行4次的膨胀操作,这一步的作用是因为视频中部门蓝色由于反光的问题会认为是白色,所以颜色提取的时候会变成好几个块,这样我们通过膨胀的操作把分散的块融合到一起,具体的膨胀次数可以自己测试一下。...最后我们源图上绘制出外接矩形并把图像显示出来 ? 这样整个效果就完成了,生成的结果就是文章开始时的视频显示效果,下面是视频的截图 ? -END-

1.5K20

VC++中使用OpenCV进行颜色检测

颜色检测通常可以用于物体检测和跟踪,尤其不同的图像和物体根据特定的颜色去筛选出某个物体。...HSL和HSV色彩空间 HSV色彩空间从心理学和视觉的角度出发,提出人眼的色彩知觉主要包含三要素: HSL和HSV都是将RGB色彩模型的点表示圆柱坐标系的方法。...注意尽管HSL和HSV“色相”指称相同的性质,它们的“饱和度”的定义是明显不同的。...HSV模型的用途 HSV模型通常用于计算机图形应用。在用户必须选择一个颜色应用于特定图形元素各种应用环境,经常使用HSV。在其中,色相表示为圆环;可以使用一个独立的三角形来表示饱和度和明度。...HSV允许用户快速的选择众多颜色。 HSV模型的另一种可视方法是圆锥体。

3900

matlab二维彩图colormap调色_matlab如何自定义颜色

绘制colormap 4 常用颜色图分类 4.1 渐变方式 4.2 温度计式(Diverging) 4.3 条纹式 4.4 其它伪彩色 这个博客是自己的第一篇博客,瞎写实验。。。...例如matlab2014b版本之前colormap的默认值都是jet,但是到了之后的版本被替换为parula。我们通过RGB和HSV曲线来对比两个颜色图的区别差异。...([mycolormap_h',mycolormap_s',mycolormap_v']); 之后我介绍另一个案例,就是怎么绘制一个温度计式的颜色图,可以区分数据的正负值时使用。...这种颜色图呈现明显的3过渡,颜色条两端的颜色分别代表正、负,中间颜色采用过渡。灰度图上,一般温度计式配色呈现正V形状,或者倒V形状。 matlab的温度计式配色只有jet一种。...所以python的为例: 这种colormap需要注意: 1.正负颜色要有所区别,色环上角度相差最好大于90度以上。

4.6K40

C++使用QtSLOT宏须要注意的一个小细节

大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类假设覆写,基类指针或者引用来指向子类的时候会实现动态绑定。...但假设指针去调用非虚函数,这个时候会调用C++的静态绑定,去推断当前的指针是什么类型,就去运行哪个类型的函数。...但在使用Qt的SLOT的时候,会出现一个问题须要注意,就是connect的时候,你给当前的子类对象child设置了SLOT宏,但这个宏也基类实现过,举个样例 Class Base : public...的myConnect,this指针表示你在当前Base类,这个时候非常自然的去调用Base::say(),一開始可能这样写为了自己主动连接和断除比較方便,可是假设你写了继承子类,你非常自然的去覆写了...say这个函数,而且认为既然不是虚函数,没什么须要操心的,你可能会去用Child去连接别的对象,心理还在想着Basesay的实现方法(由于我记得我当初链接信号的时候写是Base写的,而且我如今没实用指针和引用

95420

使用Python+opencv进行图像处理(一) | 视觉入门

它最初是用C/ C++编写的,所以你可能会看到更多用C语言而不是Python编写的教程。但现在它在Python也被广泛用于计算机视觉。首先,让我们为使用OpenCV配置环境。...然而,彩色模型的世界里不仅仅只有这两种颜色模型。众多的颜色模型,灰度(grayscale)、HSV和HLS也是你会在计算机视觉任务中经常看到的。 灰度(grayscale)很简单。...HSV和HLS有一些不同。正如在上图看到的那样,他们有一个三维的表达,更类似于人类的感知方式。HSV代表色调、饱和度和值。HSL代表色调、饱和度和亮度。HSV的中轴是值,HSL的中轴是光量。...计算机视觉任务,我们利用掩膜(masking)进行多模式转换。如果你想了解更多关于图像处理在车道检测任务的应用,可参看这篇文章。...接下来尝试绘制一个矩形。由于cv2.rectangle()函数,矩形需要两个点来表示pt1和pt2,所以我们需要一个额外的步骤来设置第一个点击点为pt1,最后一个点击点为pt2。

18.4K1011

计算机视觉:2.6~4.5 颜色空间、数据结构与绘图

3.1 HSV、HSL、YUV HSV(HSB) OpenCV最常用的色彩空间就是HSV Hue:色相,即色彩,如红色、蓝色。...),颜色的明亮程度; 原理和表现上,HSL 和 HSB 的 H 完全一致,但是二者的 S 、L 和 B 不一样: HSB 的 S 控制纯色混入白色的量,值越大,白色越少,颜色越纯; HSB 的...C++ 语言中用来表示图像数据的一种数据结构, Python 中转化为 numpy 的 ndarray Mat 由 header 和 data 组成,header 记录了图片的维数、大小、数据类型等数据...import cv2 # OpenCV用mat这种数据结构来表示图片 # C++中用mat来保存图片,python把mat转化成了numpy的ndarray cv2.imshow # numpy.ndarray...利用OpenCV一共的绘制图形API可以轻松图像上绘制各种图形,例如:直线、矩形、圆、椭圆等。

86910

使用颜色空间进行图像分割

本文中,您将学习如何使用OpenCV基于Python的颜色从图像简单地分割对象。OpenCV是一个流行的计算机视觉库,用c/c++编写,带有Python绑定,提供了操作颜色空间的简单方法。...HSV颜色空间可视化小丑鱼 我们RGB空间看到尼莫,所以现在让我们HSV空间看到他并进行比较。 正如上面简要提到的,HSV代表色调、饱和度和值(或亮度),是一个圆柱空间。...这里选择的板是浅橙色和深橙色,几乎是红色: >>> light_orange = (1, 190, 200) >>> dark_orange = (18, 255, 255) Python显示颜色的一个简单方法是制作所需颜色的小正方形图像...,并在Matplotlib绘制。...总结 本教程,您已经看到了几个不同的颜色空间,一幅图像是如何分布RGB和HSV颜色空间中的,以及如何使用OpenCV颜色空间之间进行转换和分割范围。

5.9K31

QT学习笔记15绘图和绘图设备

1 QPainter Qt 的绘图系统允许使用相同的 API 屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。...QPainter)不同的设备上进行绘制的统一的接口。...blue); painter.drawEllipse(50, 150, 400, 200); } 构造函数,我们仅仅设置了窗口的大小和标题。...注意看它们的区别:白色的背景QBitmap消失了,而透明QBitmap中转换成了黑色;其他颜色则是使用点的疏密程度来体现的。...自身的绘图引擎,可在不同平台上具有相同的显示效果 由于QImage是独立于硬件的,也是一种QPaintDevice,因此我们可以另一个线程对其进行绘制,而不需要在GUI线程处理,使用这一方式可以很大幅度提高

1.5K10

Qt源码笔记】深谈 Qt 绘制

结论 Windows 平台 默认的 Qt 绘制,最终到底层,是直接调用指令集指令的,这有别于我最初的猜测,我以为是用 Windows API 。这着实让我吃了一惊。...其实不难发现,所有的绘制中间都必然要经过QPaintEngine。QRasterPaintEngine只不过是它的一个派生,这个后边再说。...当时是研究QWidget的绘制过程,走到了这里。只看代码很难体验它的神奇之处。 pd 在前边是 QWidget 的一个指针,当经过这个 if 语句之后,pd 就变成了一个 QImage 指针。...对于稍微对 Qt 源码有一些理解的同学对 detach() 并不陌生,它本是 Qt 中最常用的 Copy-on-Write 的实现。不过经常用于类的成员方法调用,今天看到它这种用法着实惊艳到了。...这段代码算是研究绘制过程的一个小礼物,这也解开了QWidget绘制的本质。至于QWidget的绘制,也是一个很有意思的东西了,以后有机会详细整理一下。

1.9K50

万字长文,值得收藏参考的OpenCV C++基础代码

,第一个参数表示窗口名称,src表示数据对象Mat //主函数调用之前创建的类对象 QuickDemo qd; qd.colorSpace_Demo(src);...单位ms destroyAllWindows();//销毁前面创建的显示窗口 return 0; } 这节主要介绍了创建一个类对象,然后通过类对象调用函数,main主函数中进行调用实现类对象的功能...index++; imshow("循环播放", dst); } } 伪色彩填充与颜色表匹配 10 图像像素的逻辑操作 本节介绍如何对图像的像素进行操作,包括与、或、非、异或,矩形图像绘制...,为负表示多边形的填充 imshow("多边形绘制", canvas); } 第一种方式,通过标记各个点,然后存储到容器,之后对容器的点进行操作。...填充多边形调用fillPoly,绘制多边形调用polylines。第二种方式,使用一个API接口绘制。通过一个容器的存储的点组成的另一个容器。 17 鼠标操作与响应 鼠标事件响应与绘制

1.2K20

OCR笔记① | 环境配置与简单操作

为了保证和他人写的代码兼容,包含目录多包含几个。 4. 配置时使用属性表,将属性表保存到方便找的路径。之后新建工程只需要载入已有属性表,无需再次配置。 5....颜色空间 图像显示,最常用的颜色空间是RGB模型,显示原理非常容易被理解。而HSV模型,是进行图像分析时常用的颜色空间。...所以进行图像识别时,RGB模型就不是那么合适了。 HSV是指Hue(色相)、Saturation(饱和度)和Value(值)。...RGB和CMY颜色模型都是面向硬件的,而HSV颜色模型是面向用户的。进行颜色判定时,只需查HSV模型的颜色范围表就可以。...实际操作,更多用到的是双边和高斯滤波。这里使用高斯滤波再阀值化来看一下效果。

49010
领券