我有一个很大的屏幕截图目录。愚蠢的我,我没有检查它们是否正常,发现 VLC 有一个 FRAPS True RGB 错误。幸运的是它似乎可以修复,看起来唯一的问题是 R 和 B channel 被调换了。
我想使用 python 的 PIL 为每个图像的每个像素获取红色和蓝色值,然后重新插入它们。
我知道如何遍历目录,所以我缺少的主要部分是交换值的最佳方式。我想我可以一个像素一个像素地做,但也许有一种更像 pythonic 的方式,也许可以在一个命令中将其全部批处理?
任何示例代码或链接将不胜感激!
最佳答案
基于@veta 的回答,通过处理颜色 channel 而不是单个像素可以大大加快该过程:
在每个文件的循环中, channel 可以这样交换:
r, g, b = im_rgb.split()
im_rgb = Image.merge('RGB', (b, g, r))
只需使用这两行而不是 veta 答案中的嵌套循环。这应该运行得更快。
此解决方案首先使用 Image.split()
创建三个独立的图像,每个 R、G、B channel 一个。然后使用 Image.merge()
创建一个新的 RGB 图像,其中交换了 R 和 B channel 。
关于python - 交换图像目录中的 R 和 B 颜色 channel 值? Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195609/