我正在尝试自动增强一些图像,以便将它们传输到数字相框中。我已经编写了代码来调整大小,在图像的最不显著(最少细节)的角落添加日期/时间,并将纵向拍摄的图像成对粘贴在一起,以避免在数字相框的41:20低分辨率屏幕上显示单个纵向图像。
对于那些照明不太好的图片,我使用colorsys.rgb_to_hsv
函数计算H、S、V通道并对V通道进行亮度拉伸滤镜,然后将其转换回RGB格式并保存为JPEG格式以供数字相框使用。显然,转换需要很长时间,即使使用itertools
技巧;我通过使用psyco
成功地提高了效率。
然而,我注意到PIL Image.convert
有一个示例,其中RGB可以使用4×4矩阵作为第二个参数转换为XYZ颜色空间,于是我想知道:
如何在convert
方法调用中使用自定义矩阵将RGB转换为HSV(然后再将其转回RGB)?(在这种情况下,小的舍入误差并不重要,因此我不介意每个通道都以0…255整数的形式表示)
提前感谢您。
ImageOps.autocontrast
函数也可以完成我所做的工作,但我希望能够根据需要扩展滤镜(例如,可能稍微增加一些饱和度),这就是为什么我想要一个快速的 RGB↔HSV 方法。 - tzot