目录
1.将一个文件中的所有图片进行尺度归一化
2. 查看一张图片的每个像素的RGB值
3.将指定颜色切换成其他颜色(代码中将红色切换为白色)
4.将一个文件中所有图片从png到jpg的切换
5.将一个文件夹中的所有图像重命名从1开始
1.将一个文件中的所有图片进行尺度归一化
实例中,本代码是将图像全部归一为352*352,可以调整参数,也需要将文件地址切换所要处理的文件地址。
from PIL import Image
import os
def resize_images(folder_path, output_size):
# 获取文件夹中的所有文件
file_list = os.listdir(folder_path)
for file_name in file_list:
# 检查文件是否为图片文件(可根据需要修改条件)
if file_name.endswith(('.jpg', '.jpeg', '.png')):
file_path = os.path.join(folder_path, file_name)
# 打开并调整图片大小
image = Image.open(file_path)
resized_image = image.resize(output_size)
# 保存调整大小后的图片
resized_image.save(file_path)
print(f"Resized image: {file_name}")
# 指定要处理的文件夹路径和输出大小
folder_path = './TrainDate/masks' # 替换为实际的文件夹路径
output_size = (352, 352) # 替换为想要的输出大小
# 调用函数进行图片大小归一化
resize_images(folder_path, output_size)
2. 查看一张图片的每个像素的RGB值
from PIL import Image
def get_image_rgb_values(image_path):
# 打开图片
image = Image.open(image_path)
# 将图片转换为RGB模式(忽略透明度)
image = image.convert('RGB')
# 获取图片的像素数据
pixels = image.load()
width, height = image.size
# 遍历每个像素
for x in range(width):
for y in range(height):
r, g, b = pixels[x, y]
# 输出RGB值
print(f"Pixel at ({x}, {y}): R={r}, G={g}, B={b}")
# 关闭图片
image.close()
# 指定图片路径
image_path = '1.png'
# 调用函数查看图片RGB值
get_image_rgb_values(image_path)
3.将指定颜色切换成其他颜色(代码中将红色切换为白色)
换成指定颜色需要修改 以下部分代码参数:
# 判断是否为红色区域(阈值可根据需要进行调整)
if r > 100 and g >100 and b <100:
# 将红色区域替换为白色0
pixels[x, y] = (255, 255, 255, a)
from PIL import Image
import os
def replace_red_with_white(folder_path):
# 获取文件夹中的所有文件名
filenames = os.listdir(folder_path)
# 选取所有PNG图片文件
image_files = [filename for filename in filenames if filename.endswith('.png')]
# 遍历每个图片文件并进行处理
for image_file in image_files:
image_path = os.path.join(folder_path, image_file)
# 打开图片
image = Image.open(image_path)
# 将图片转换为RGBA模式
image = image.convert('RGBA')
# 获取图片的像素数据
pixels = image.load()
width, height = image.size
# 遍历每个像素
for x in range(width):
for y in range(height):
r, g, b, a = pixels[x, y]
# 判断是否为红色区域(阈值可根据需要进行调整)
if r > 100 and g >100 and b <100:
# 将红色区域替换为白色0
pixels[x, y] = (255, 255, 255, a)
# 保存修改后的图片
new_image_path = os.path.join(folder_path, image_file)
image.save(new_image_path)
# 关闭图片
image.close()
print(f"Processed {image_file} and saved as {os.path.basename(new_image_path)}")
# 指定文件夹路径
folder_path = './TrainData/masks'
# 调用函数进行处理
replace_red_with_white(folder_path)
效果图如下所示:
4.将一个文件中所有图片从png到jpg的切换
from PIL import Image
import os
def convert_png_to_jpg(input_folder, output_folder):
# 遍历输入文件夹中的所有文件
for filename in os.listdir(input_folder):
if filename.endswith(".png"):
# 构建输入和输出文件的路径
input_path = os.path.join(input_folder, filename)
output_filename = os.path.splitext(filename)[0] + ".jpg"
output_path = os.path.join(output_folder, output_filename)
# 打开PNG图像并保存为JPG格式
image = Image.open(input_path)
image.convert("RGB").save(output_path, "JPEG")
print(f"Converted {input_path} to {output_path}")
# 指定输入文件夹和输出文件夹的路径
input_folder = "input_folder"
output_folder = "output_folder"
# 调用函数进行转换
convert_png_to_jpg(input_folder, output_folder)
5.将一个文件夹中的所有图像重命名从1开始
import os
def rename_images(folder_path):
# 获取目标文件夹中的所有文件
file_list = os.listdir(folder_path)
image_extensions = ['.jpg', '.jpeg', '.png', '.gif'] # 支持的图片文件扩展名
# 过滤出图片文件
image_files = [file for file in file_list if os.path.splitext(file)[1].lower() in image_extensions]
# 重命名图片文件
for i, image_file in enumerate(image_files):
extension = os.path.splitext(image_file)[1]
new_name = str(i + 1) + extension
old_path = os.path.join(folder_path, image_file)
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
print(f"{image_file} 重命名为 {new_name}")
# 调用示例
folder_path = "./TrainDataset/image"
rename_images(folder_path)