首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSV的PyQt5 QColor转换

HSV的PyQt5 QColor转换
EN

Stack Overflow用户
提问于 2020-03-03 09:50:11
回答 2查看 549关注 0票数 0

我正在为Krita做一个HSV色选择器,它有PyQt5。我想使用QColor类来处理显示颜色的转换,但是我无法成功地转换颜色。

我使用这个颜色选择器作为输出的参考:

代码语言:javascript
复制
https://www.google.com/search?sxsrf=ACYBGNR9_2R1jGyxkqbdM8DVZfU-8hogYg%3A1583142187803&source=hp&ei=K9VcXqrKLuyMlwTorLH4Dg&q=color+picker+hex&oq=color+picker&gs_l=psy-ab.3.0.35i39l2j0l8.3060.6761..8026...2.0..0.310.1102.11j3-1......0....1..gws-wiz.....10..35i362i39j0i10.C-faeoukSfM

一种随机选择的颜色是:

代码语言:javascript
复制
HEX=(#eb4034)
HSV=(7, 78, 92)

当我试图用以下代码转换它时:

代码语言:javascript
复制
from PyQt5.QtGui import QColor

hsv = QColor.fromHsv(7,78,92,255)
color = str(hsv.redF()*255)+" | "+str(hsv.greenF()*255)+" | "+str(hsv.blueF()*255)

print(str( color ))

我的产出是:

代码语言:javascript
复制
92.0 | 67.14007782101167 | 63.85992217898833
[Finished in 0.168s]

而不是:

代码语言:javascript
复制
235, 64, 52

如何将HSV颜色输入到QColor中,然后将其转换为RGB以供显示?

先谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-03 10:17:13

HVS颜色(即(7, 78, 92))的参考值分别以单位度、百分比和百分比为单位,而QColor.fromHSV则希望值在0-255范围内。要将引用值转换为QColor可以使用的值,您可以尝试如下所示

代码语言:javascript
复制
HSV=(7, 78, 92)
hue, sat, value = HSV
hue = int(hue*255/360)
sat = int(sat*255/100)
value = int(value*255/100)

hsv = QColor.fromHsv(hue, sat, value, 255)
color = str(hsv.redF()*255)+" | "+str(hsv.greenF()*255)+" | "+str(hsv.blueF()*255)

print(str( color ))

# output: 234.0 | 64.42023346303502 | 52.307392996108945
票数 1
EN

Stack Overflow用户

发布于 2020-03-03 10:07:42

您可以使用getRgb()方法获得一个包含以下值的元组:

代码语言:javascript
复制
>>> hsv = QColor.fromHsv(7,78,92,255)
>>> hsv.getRgb()
(92, 67, 64, 255)

您将注意到值与您预期的不同,这是因为十六进制#eb4034与HSV (7、78、92)不一样。

代码语言:javascript
复制
>>> hsv.name()
'#5c4340'
>>> QColor('#eb4034').getHsv()
(3, 199, 235, 255)

确保您正在使用正确的HSV值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60504405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档