本文目录导读:

- 方法一:使用Python + PIL/Pillow
- 方法二:使用OpenCV(更精确的控制)
- 方法三:使用ImageMagick命令行(快速批量处理)
- 方法四:使用Python + rawpy(处理RAW文件)
- 方法五:图形界面工具
- 智能曝光调整脚本
- 安装依赖
- 使用建议
我来介绍几种批量调整图片曝光度的方法,包括使用Python脚本、命令行工具和图像处理软件。
使用Python + PIL/Pillow
from PIL import Image, ImageEnhance
import os
from pathlib import Path
def batch_adjust_exposure(input_dir, output_dir, factor=1.2):
"""
批量调整图片曝光度
Args:
input_dir: 输入图片目录
output_dir: 输出图片目录
factor: 曝光度调整因子 (>1增加曝光, <1减少曝光)
"""
# 创建输出目录
Path(output_dir).mkdir(parents=True, exist_ok=True)
# 支持的图片格式
supported_formats = {'.jpg', '.jpeg', '.png', '.bmp', '.tiff'}
for filename in os.listdir(input_dir):
if Path(filename).suffix.lower() in supported_formats:
try:
# 打开图片
img_path = os.path.join(input_dir, filename)
img = Image.open(img_path)
# 调整曝光度(亮度)
enhancer = ImageEnhance.Brightness(img)
img_adjusted = enhancer.enhance(factor)
# 保存图片
output_path = os.path.join(output_dir, filename)
img_adjusted.save(output_path)
print(f"✅ 已处理: {filename}")
except Exception as e:
print(f"❌ 处理 {filename} 时出错: {e}")
# 使用示例
batch_adjust_exposure(
input_dir="./input_images",
output_dir="./output_images",
factor=1.3 # 增加30%曝光度
)
使用OpenCV(更精确的控制)
import cv2
import numpy as np
import os
from pathlib import Path
def batch_adjust_exposure_opencv(input_dir, output_dir, beta=30):
"""
使用OpenCV批量调整曝光度
Args:
input_dir: 输入目录
output_dir: 输出目录
beta: 亮度调整值 (-255 到 255)
"""
Path(output_dir).mkdir(parents=True, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.lower().endswith(('.jpg', '.jpeg', '.png')):
try:
# 读取图片
img_path = os.path.join(input_dir, filename)
img = cv2.imread(img_path)
# 调整亮度和对比度
# alpha: 对比度 (1.0 表示不变)
# beta: 亮度调整值
adjusted = cv2.convertScaleAbs(img, alpha=1.0, beta=beta)
# 保存图片
output_path = os.path.join(output_dir, filename)
cv2.imwrite(output_path, adjusted)
print(f"✅ 已处理: {filename}")
except Exception as e:
print(f"❌ 处理 {filename} 时出错: {e}")
# 使用示例
batch_adjust_exposure_opencv(
input_dir="./input_images",
output_dir="./output_images",
beta=50 # 增加亮度
)
使用ImageMagick命令行(快速批量处理)
# 安装ImageMagick后使用
# 批量增加30%亮度
for img in ./input_images/*.jpg; do
convert "$img" -brightness-contrast 30x0 "./output_images/$(basename $img)"
done
# 或使用mogrify直接批量处理(注意会覆盖原图)
mogrify -path ./output_images -brightness-contrast 30x0 ./input_images/*.jpg
使用Python + rawpy(处理RAW文件)
import rawpy
import imageio
import os
from pathlib import Path
def batch_adjust_raw_exposure(input_dir, output_dir, exposure_compensation=1.0):
"""
批量调整RAW格式图片曝光度
Args:
input_dir: 输入目录(含RAW文件)
output_dir: 输出目录
exposure_compensation: 曝光补偿值
"""
Path(output_dir).mkdir(parents=True, exist_ok=True)
raw_extensions = {'.cr2', '.nef', '.arw', '.dng', '.orf', '.raf'}
for filename in os.listdir(input_dir):
if Path(filename).suffix.lower() in raw_extensions:
try:
# 读取RAW文件
raw_path = os.path.join(input_dir, filename)
with rawpy.imread(raw_path) as raw:
# 调整曝光
rgb = raw.postprocess(
exposure=exposure_compensation,
use_camera_wb=True,
half_size=False
)
# 保存为JPEG
output_path = os.path.join(output_dir,
Path(filename).stem + '.jpg')
imageio.imwrite(output_path, rgb)
print(f"✅ 已处理: {filename}")
except Exception as e:
print(f"❌ 处理 {filename} 时出错: {e}")
# 使用示例
batch_adjust_raw_exposure(
input_dir="./raw_images",
output_dir="./output_jpg",
exposure_compensation=1.5 # 增加1.5档曝光
)
图形界面工具
如果你更喜欢用图形界面,也可以使用这些工具:
Adobe Lightroom
- 选择所有照片
- 按 Ctrl+A (Windows) 或 Cmd+A (Mac)
- 调整曝光度滑块
- 选择"同步设置"
XnConvert(免费)
- 添加图片
- 添加"调整亮度"动作
- 设置参数
- 选择输出格式和路径
- 转换
FastStone Image Viewer(免费)
- 批量转换功能
- 高级选项中的曝光调整
智能曝光调整脚本
import cv2
import numpy as np
from PIL import Image, ImageStat
import os
def auto_adjust_exposure(image):
"""
自动调整图片到最佳曝光度
"""
# 转换为灰度图分析亮度
if isinstance(image, np.ndarray):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
else:
gray = image.convert('L')
image = np.array(image)
gray = np.array(gray)
# 计算平均亮度
mean_brightness = np.mean(gray)
# 目标亮度(中灰度)
target_brightness = 128
# 计算调整因子
if mean_brightness > 0:
factor = target_brightness / mean_brightness
# 限制调整范围
factor = np.clip(factor, 0.5, 2.0)
else:
factor = 1.0
# 调整曝光
adjusted = cv2.convertScaleAbs(image, alpha=factor, beta=0)
return adjusted, factor
def batch_auto_adjust(input_dir, output_dir):
"""
批量自动曝光调整
"""
Path(output_dir).mkdir(parents=True, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.lower().endswith(('.jpg', '.jpeg', '.png')):
# 读取图片
img_path = os.path.join(input_dir, filename)
img = cv2.imread(img_path)
if img is not None:
# 自动调整曝光
adjusted_img, factor = auto_adjust_exposure(img)
# 保存结果
output_path = os.path.join(output_dir, filename)
cv2.imwrite(output_path, adjusted_img)
print(f"✅ {filename}: 调整因子 {factor:.2f}")
# 使用示例
batch_auto_adjust("./input_images", "./auto_adjusted")
安装依赖
# 基础处理 pip install Pillow opencv-python # 处理RAW文件 pip install rawpy imageio # 系统工具 # Linux: sudo apt-get install imagemagick # macOS: brew install imagemagick # Windows: 下载安装 ImageMagick
使用建议
-
曝光因子参考值:
- 5-0.8:降低曝光(适合过曝照片)
- 8-1.2:微调
- 2-2.0:增加曝光(适合欠曝照片)
-
注意事项:
- 过度调整会导致细节丢失
- 建议先在小批量上测试效果
- 保存原始照片备份
- JPEG格式调整会损失画质,建议用TIFF或PNG
-
批量处理时:
- 使用统一参数可保证一致性
- 自动调整更适合差异较大的照片
- 考虑写一个配置文件来存储不同场景的参数
选择哪种方法取决于你的具体需求、技术水平和使用环境,对于简单的批量处理,Python脚本最灵活;对于大量文件,ImageMagick命令最快;对于RAW文件,rawpy方案最专业。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播