Python RGB数组转换为HSL再还原

3 投票
3 回答
6913 浏览
提问于 2025-04-16 12:30

我看到有一些代码可以把RGB颜色转换成HSL颜色,但我想知道在Python中怎么能快速做到这一点。

让我觉得奇怪的是,比如说Photoshop在处理一张图片时能在一秒内完成这个转换,而在Python中,这个过程常常要花很长时间。至少我用的代码是这样的,所以我觉得我可能用错了代码。

在我的情况下,我的图片是一个简单但很大的原始数组,格式是[r,g,b,r,g,b,r,g,b……]

我希望能把它转换成[h,s,l,h,s,l,h,s,l……]

另外,我也想能把HSL转换回RGB。

这张图片的尺寸实际上是640x480像素;要想快速完成这个转换,是否需要一些库或者是C语言的封装(我从来没有创建过封装)呢?

3 个回答

1

一个选择是使用OpenCV。它的Python接口还不错(虽然不是特别完美)。好处是,这个库功能非常强大,所以这只是冰山一角。

你也可以用numpy来高效地完成这个任务。

6

在处理图像数据时,很多人会使用 Python图像库。不过,这个库不支持HSL颜色模式。幸运的是,Python自带了一个叫做 colorsys 的库。下面是一个使用 colorsys 在每个像素上进行颜色模式转换的例子:http://effbot.org/librarybook/colorsys.htm

colorsys 还提供了一个函数,可以把HSL颜色转换成RGB颜色:http://docs.python.org/library/colorsys.html

4

我之前写了一个RGB转HSV的转换器。这个转换器是从一个PIL图像开始的,但它用numpy来高效地处理数组操作。其实它也很容易改成HSL格式。如果你需要修改后的版本,告诉我一声就行。

撰写回答