python - 交换图像目录中的 R 和 B 颜色 channel 值? Python

标签 python colors python-imaging-library image-manipulation

我有一个很大的屏幕截图目录。愚蠢的我,我没有检查它们是否正常,发现 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/

相关文章:

javascript - 尝试使用盒子制作渐变

python - 在 Tkinter 中悬停后如何更改多个小部件的颜色?

python - 如何将 24 帧编码为一张 24 位 RGB 图像?

python - 为什么 ImageFont.getsize() 在使用等宽字体时会不一致地测量字符?

python - 使用python requests模块获取验证码图像的问题

python - Python中的命令行输入

jquery - 如何在 HTML/jquery 中为 Linux 终端生成 256 色调色板

python - 枕头图像类型错误: an integer is required (got type tuple)

python - Windows错误 : [Error 193] %1 is not a valid Win32 application in Python

python - cuBLAS Dgemm 产品与 python