如何反转 Python 中图像的绿色通道?
How to invert the green channel of an image in Python?
如何反转 RGB 图像的一个通道?在这种情况下,我的图像是 3D 引擎的法线贴图,以 JPEG 或 TIFF 等图像格式保存,我想反转绿色通道——也就是说,完全反转绿色波段中的高点和低点。
我假设你有一个 numpy(或 torch 张量)图像——你可以在绿色通道上建立索引(假设通道是你的最后一个维度)
img[:, :, 1] = 255 - img[:, :, 1]
我假设你想要 0 -> 255
和 255 -> 0
T(r) = L – 1 – r
L=256
L-1=255(Max)
r=Each pixel of the image
s=255-r
s= T(r) =255-r
您可以通过安装和使用 Pillow 来完成此操作,它适用于大多数图像格式(JPEG、PNG、TIFF 等)。
from PIL import Image
from PIL.ImageChops import invert
image = Image.open('test.tif')
red, green, blue = image.split()
image_with_inverted_green = Image.merge('RGB', (red, invert(green), blue))
image_with_inverted_green.save('test_inverted_green.tif')
从您的文件中加载图像后,使用 Image.split
, invert the green channel/image with ImageChops.invert
, and then join it together with the original red and blue bands into a new image with Image.merge
分割成其通道。
如果使用以 RGB 以外的格式(例如 PNG,它有一个额外的透明通道)编码的格式,图像开头行可以修改为:
image = Image.open('test.png').convert('RGB')
使用这张图片进行测试:
产生这个:
(ImageChops
, 顺便说一句,看起来很奇怪的术语,但它是“图像通道操作”的缩写。)
如何反转 RGB 图像的一个通道?在这种情况下,我的图像是 3D 引擎的法线贴图,以 JPEG 或 TIFF 等图像格式保存,我想反转绿色通道——也就是说,完全反转绿色波段中的高点和低点。
我假设你有一个 numpy(或 torch 张量)图像——你可以在绿色通道上建立索引(假设通道是你的最后一个维度)
img[:, :, 1] = 255 - img[:, :, 1]
我假设你想要 0 -> 255
和 255 -> 0
T(r) = L – 1 – r
L=256
L-1=255(Max)
r=Each pixel of the image
s=255-r
s= T(r) =255-r
您可以通过安装和使用 Pillow 来完成此操作,它适用于大多数图像格式(JPEG、PNG、TIFF 等)。
from PIL import Image
from PIL.ImageChops import invert
image = Image.open('test.tif')
red, green, blue = image.split()
image_with_inverted_green = Image.merge('RGB', (red, invert(green), blue))
image_with_inverted_green.save('test_inverted_green.tif')
从您的文件中加载图像后,使用 Image.split
, invert the green channel/image with ImageChops.invert
, and then join it together with the original red and blue bands into a new image with Image.merge
分割成其通道。
如果使用以 RGB 以外的格式(例如 PNG,它有一个额外的透明通道)编码的格式,图像开头行可以修改为:
image = Image.open('test.png').convert('RGB')
使用这张图片进行测试:
产生这个:
(ImageChops
, 顺便说一句,看起来很奇怪的术语,但它是“图像通道操作”的缩写。)