将 [0-255] 整数范围转换为 [0.0-1.0] 浮点范围 [英] Converting a [0-255] integer range to a [0.0-1.0] float range

查看:34
本文介绍了将 [0-255] 整数范围转换为 [0.0-1.0] 浮点范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 WxWidget 中,颜色由 RGB 整数三元组表示.要使用 [0.0-1.0] 浮点三元组表示与其他库进行交互,需要进行转换.

WxPython、Numpy 或 Python 中是否已经存在这样的转换函数?

解决方案

您可以将每个元素除以 255(或 256,具体取决于您希望上限包含还是排除 1):

pax>蟒蛇3Python 3.5.2(默认,2016 年 11 月 17 日,17:05:23)[GCC 5.4.0 20160609] 在 linux 上输入帮助"、版权"、信用"或许可"以获取更多信息.>>>rgbvar1 = [80,160,240];rgbvar1[80, 160, 240]>>>rgbvar2 = [x/255.0 for x in rgbvar1] ;rgbvar2[0.3137254901960784, 0.6274509803921569, 0.9411764705882353]>>>rgbvar3 = [round(x * 255) for x in rgbvar2] ;rgbvar3[80, 160, 240]

正如您从 rgbvar3 中看到的,您可以使用类似的方法将它们转换回来.

要检查这是否有效,以下方法可能会有所帮助:

<预><代码>>>>对于我在范围内(256):... j = i/255.0... k = 轮(j * 255)...如果我 != k:... print('在 %d 处不好'%(i))...>>>

对于预期的可能输入值(整数 0255)没有显示错误这一事实意味着反向操作应该可以正常工作.

In WxWidget colors are represented by a RGB integer triplet. To interact with other libraries using a [0.0-1.0] float triplet representation, a conversion is needed.

Is there such a conversion function already existing in WxPython, Numpy or Python ?

解决方案

You can just divide each element by 255 (or 256 depending on whether you want the upper range to include or exclude 1):

pax> python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> rgbvar1 = [80,160,240] ; rgbvar1
[80, 160, 240]

>>> rgbvar2 = [x / 255.0 for x in rgbvar1] ; rgbvar2
[0.3137254901960784, 0.6274509803921569, 0.9411764705882353]

>>> rgbvar3 = [round(x * 255) for x in rgbvar2] ; rgbvar3
[80, 160, 240]

As you can see from rgbvar3, you can use a similar method to convert them back.

To check that this works, the following may help:

>>> for i in range(256):
...     j = i / 255.0
...     k = round(j * 255)
...     if i != k:
...         print('Bad at %d'%(i))
... 
>>>

The fact that it shows no errors for the expected possible input values (integers 0 through 255) means that the reverse operation should work okay.

这篇关于将 [0-255] 整数范围转换为 [0.0-1.0] 浮点范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆