本文目录导读:

使用 Python + Pillow(推荐)
import os
from PIL import Image
import colorsys
def adjust_hue(image, hue_shift):
"""调整图片色相"""
# 转换为RGBA模式以保留透明度
if image.mode != 'RGBA':
image = image.convert('RGBA')
# 获取像素数据
pixels = list(image.getdata())
new_pixels = []
for pixel in pixels:
r, g, b, a = pixel
# 转换为HSV
h, s, v = colorsys.rgb_to_hsv(r/255, g/255, b/255)
# 调整色相
h = (h + hue_shift) % 1.0
# 转回RGB
r, g, b = colorsys.hsv_to_rgb(h, s, v)
new_pixels.append((int(r*255), int(g*255), int(b*255), a))
# 创建新图像
new_image = Image.new('RGBA', image.size)
new_image.putdata(new_pixels)
return new_image
def batch_adjust_hue(input_folder, output_folder, hue_shift=0.1):
"""批量调整色相"""
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 支持的图片格式
supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff')
# 遍历文件夹中的所有图片
for filename in os.listdir(input_folder):
if filename.lower().endswith(supported_formats):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, filename)
try:
# 打开图片
img = Image.open(input_path)
# 调整色相
adjusted_img = adjust_hue(img, hue_shift)
# 保存图片
adjusted_img.save(output_path)
print(f"已处理: {filename}")
except Exception as e:
print(f"处理 {filename} 时出错: {e}")
# 使用示例
if __name__ == "__main__":
input_folder = "images_input" # 输入文件夹
output_folder = "images_output" # 输出文件夹
hue_shift = 0.2 # 色相偏移量(0-1之间,0.2表示偏移72度)
batch_adjust_hue(input_folder, output_folder, hue_shift)
使用 OpenCV
import cv2
import numpy as np
import os
from pathlib import Path
def adjust_hue_cv2(image, hue_shift):
"""使用OpenCV调整色相"""
# 转换为HSV
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 调整色相
hsv[:, :, 0] = (hsv[:, :, 0] + hue_shift) % 180
# 转回BGR
return cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
def batch_adjust_hue_cv2(input_folder, output_folder, hue_shift=30):
"""批量调整色相(OpenCV版本)"""
Path(output_folder).mkdir(parents=True, exist_ok=True)
supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff')
for path in Path(input_folder).glob('*'):
if path.suffix.lower() in supported_formats:
try:
# 读取图片
img = cv2.imread(str(path))
if img is not None:
# 调整色相
adjusted = adjust_hue_cv2(img, hue_shift)
# 保存
output_path = Path(output_folder) / path.name
cv2.imwrite(str(output_path), adjusted)
print(f"已处理: {path.name}")
except Exception as e:
print(f"处理 {path.name} 时出错: {e}")
# 使用示例
if __name__ == "__main__":
input_folder = "images_input"
output_folder = "images_output"
hue_shift = 30 # 色相偏移(0-180,30表示偏移30度)
batch_adjust_hue_cv2(input_folder, output_folder, hue_shift)
批处理脚本(Windows)
创建 adjust_hue.bat 文件:
@echo off
echo 正在批量调整图片色相...
echo 请确保已安装 ImageMagick
:: 设置参数
set INPUT_FOLDER=images_input
set OUTPUT_FOLDER=images_output
set HUE_SHIFT=30
:: 创建输出文件夹
if not exist "%OUTPUT_FOLDER%" mkdir "%OUTPUT_FOLDER%"
:: 使用 ImageMagick 批量处理
echo 处理中...
for %%f in ("%INPUT_FOLDER%\*.jpg" "%INPUT_FOLDER%\*.png") do (
echo 正在处理: %%~nxf
magick "%%f" -modulate 100,100,%HUE_SHIFT% "%OUTPUT_FOLDER%\%%~nxf"
)
echo 处理完成!
pause
使用 Bash 脚本(Linux/Mac)
#!/bin/bash
# 批量调整图片色相的Bash脚本
# 需要安装 ImageMagick
INPUT_FOLDER="images_input"
OUTPUT_FOLDER="images_output"
HUE_SHIFT=30 # 色相偏移值(0-200)
# 创建输出文件夹
mkdir -p "$OUTPUT_FOLDER"
# 处理图片
for img in "$INPUT_FOLDER"/*.{jpg,jpeg,png,bmp,tiff}; do
if [ -f "$img" ]; then
filename=$(basename "$img")
echo "处理中: $filename"
# 使用 ImageMagick 调整色相
convert "$img" -modulate 100,100,$HUE_SHIFT "$OUTPUT_FOLDER/$filename"
fi
done
echo "批量处理完成!"
安装依赖
Python 依赖安装:
pip install Pillow # 或 pip install opencv-python
ImageMagick 安装:
- Windows: 下载安装包 https://imagemagick.org/script/download.php
- Linux:
sudo apt-get install imagemagick - Mac:
brew install imagemagick
使用建议
-
选择合适的工具:
- 简单任务:ImageMagick 批处理
- 需要精细控制:Python + Pillow
- 视频处理:OpenCV
-
色相值说明:
- Pillow(HSV):0-1之间的值
- OpenCV:0-180之间的值
- ImageMagick:0-200之间的值
-
备份原图:批量处理前建议先备份原始图片
-
测试:先处理少量图片测试效果,再批量处理全部
选择最适合你的方法,有任何问题随时问我!