将RGB图像转换为红外图像是一种图像处理技术,旨在模拟红外摄影的效果。红外摄影是利用相机或传感器捕捉红外光谱范围内的光线,而不是可见光谱范围内的光线。红外图像通常显示出与可见光摄影不同的特征和效果。 在RGB图像转换为红外图像的过程中,通常会采用一些简单的转换规则来模拟红外效果。
常见的转换方法包括:
1.通道混合:通常使用RGB通道的加权组合来生成红外效果。这些权重可以根据需要进行调整,以产生不同的效果。
2.灰度化:将RGB图像转换为灰度图像是常见的第一步。这可以通过简单地对RGB通道的值进行加权平均来实现。
3.色彩调整:根据红外摄影的特点,可能需要对颜色进行调整,使得图像更符合红外摄影的特征。 4.滤波效果:添加一些滤波效果,如模糊或纹理增强,以增强红外图像的效果。
以下为简单的实现代码:
"""
Create on August 30, 2024
@author: Dehuan
"""
from PIL import Image
import os
def rgb_to_infrared_batch(input_folder, output_folder):
#确保输出文件夹存在
if not os.path.exists(output_folder)
os.makedirs(output_folder)
#获取输入文件夹中所有的文件名
file_list = os.listdir(input_folder)
for file_name in file_list:
if file_name.endswith(".jpg") or file_name.endswith(".jpeg") or file_name.endswith(".png"):
#打开RGB图像
img = Image.open(os.path.join(input_folder, file_name))
#获取图像尺寸
width, height = img.size
#创建一个新的图像对象,模拟红外效果
infrared_img = Image.new('RGB', (width, height))
#遍历每个像素,并将RGB值转换为红外效果的值
for x in range(width):
for y in range(height):
r, g, b = img.getpixel((x, y))
#简单的变换规则,你可以根据需要调整为红外效果的值
infrared_r = int(0.299 * r + 0.587 * g + 0.114 * b)
infrared_g = int(0.299 * r + 0.587 * g + 0.114 * b)
infrared_b = int(0.299 * r + 0.587 * g + 0.114 * b)
infrared_img.putpixel((x, y), (infrared_r, infrared_g, infrared_b))
#保存红外图像到输出文件夹
infrared_img.save(os.path.join(output_folder, file_name))
print("批量转换完成")
#调用函数并传入RGB图像文件夹路径和输出路径
rgb_to_infrared_batch("input_folder", "output_folder")
结果展示: