Python RGB数组转换为HSL再还原
我看到有一些代码可以把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格式。如果你需要修改后的版本,告诉我一声就行。