本文目录导读:

方法1:使用Python + OpenCV
import cv2
import numpy as np
import os
from glob import glob
def adjust_contrast_curve(image, points):
"""
使用曲线调整对比度
points: [(x1,y1), (x2,y2), ...] 控制点坐标(0-255)
"""
# 创建查找表
x = [p[0] for p in points]
y = [p[1] for p in points]
# 插值生成完整的LUT
lut = np.interp(np.arange(256), x, y).astype('uint8')
# 应用查找表
return cv2.LUT(image, lut)
def batch_adjust_contrast(input_folder, output_folder, curve_points):
"""
批量调整对比度曲线
"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 支持的图片格式
extensions = ['*.jpg', '*.jpeg', '*.png', '*.bmp', '*.tiff']
image_files = []
for ext in extensions:
image_files.extend(glob(os.path.join(input_folder, ext)))
for img_path in image_files:
# 读取图片
img = cv2.imread(img_path)
if img is None:
continue
# 调整对比度(分别处理每个通道)
adjusted = np.zeros_like(img)
for i in range(3):
adjusted[:,:,i] = adjust_contrast_curve(img[:,:,i], curve_points)
# 保存结果
filename = os.path.basename(img_path)
output_path = os.path.join(output_folder, filename)
cv2.imwrite(output_path, adjusted)
print(f"处理完成: {filename}")
# 使用示例 - S曲线(增强对比度)
s_curve = [
(0, 0), # 保持黑点
(64, 32), # 压暗阴影
(128, 128), # 保持中间调
(192, 224), # 提亮高光
(255, 255) # 保持白点
]
# 调用函数
batch_adjust_contrast(
input_folder="./input_images",
output_folder="./output_images",
curve_points=s_curve
)
方法2:使用Pillow (PIL)
from PIL import Image, ImageEnhance
import os
from pathlib import Path
def batch_adjust_contrast_curve_pillow(input_dir, output_dir, contrast_factor):
"""
使用Pillow批量调整对比度
"""
input_path = Path(input_dir)
output_path = Path(output_dir)
output_path.mkdir(exist_ok=True)
# 获取所有图片
image_extensions = ['.jpg', '.jpeg', '.png', '.bmp', '.tiff']
for img_file in input_path.iterdir():
if img_file.suffix.lower() in image_extensions:
# 打开图片
img = Image.open(img_file)
# 调整对比度
enhancer = ImageEnhance.Contrast(img)
enhanced = enhancer.enhance(contrast_factor)
# 保存图片
output_file = output_path / img_file.name
enhanced.save(output_file)
print(f"处理完成: {img_file.name}")
# 使用示例
batch_adjust_contrast_curve_pillow(
input_dir="./images",
output_dir="./enhanced_images",
contrast_factor=1.5 # 1.0为原始,>1增强,<1减弱
)
方法3:使用ImageMagick命令行
#!/bin/bash
# 批量调整对比度曲线(使用convert命令)
input_folder="./input"
output_folder="./output"
# 创建输出文件夹
mkdir -p "$output_folder"
# 处理所有图片
for img in "$input_folder"/*.{jpg,jpeg,png,bmp,tiff}; do
if [ -f "$img" ]; then
filename=$(basename "$img")
# 使用S曲线调整对比度
convert "$img" -sigmoidal-contrast 10,50% "$output_folder/$filename"
echo "处理完成: $filename"
fi
done
方法4:图形界面工具批量处理
Lightroom
- 导入所有图片
- 编辑一张图片的对比度曲线
- 同步设置到其他图片
Photoshop + 动作
- 录制调整对比度曲线的动作
- 文件 → 自动 → 批处理
- 选择源文件夹和目标文件夹
常用对比度曲线预设
# 1. 强对比度S曲线
strong_s_curve = [
(0, 0),
(50, 20),
(128, 128),
(200, 235),
(255, 255)
]
# 2. 柔和对比度
soft_contrast = [
(0, 10),
(64, 50),
(128, 128),
(192, 200),
(255, 245)
]
# 3. 复古胶片效果
vintage_curve = [
(0, 20),
(64, 60),
(128, 128),
(192, 200),
(255, 235)
]
# 4. 高对比度黑白效果
high_contrast_bw = [
(0, 0),
(50, 0),
(100, 50),
(155, 205),
(205, 255),
(255, 255)
]
批量处理GUI工具推荐
- FastStone Image Viewer - 支持批量调整曲线
- XnConvert - 免费的批量图片处理工具
- IrfanView - 支持批量处理插件
- BatchPhoto - 专业批量处理工具
选择最适合你需求的方法,Python适合需要精确控制的场景,GUI工具适合简单快速处理,Imagemagick适合命令行批量处理。