Hey,是不是经常遇到批量处理图片尺寸的问题?手动调整效率低,还容易出错?别担心,今天顺亿就来教你用Python和OpenCV批量处理图片尺寸,避开那些常见的坑。
首先,我们得准备好环境。推荐使用Python 3.8+和OpenCV 4.5+,这样稳定性更高。安装OpenCV超简单,只要运行pip install opencv-python就行了。
接下来,我们得了解一些核心概念。比如cv2.resize()是调整图像尺寸的关键函数,你可以直接指定目标尺寸,或者指定缩放比例。常用的插值方法有双线性插值、双三次插值和最近邻插值。记得,对于缩小图像,使用cv2.INTER_AREA通常能获得更好的效果。
基础批量处理脚本实现
我们先来写一个简单的批量图片处理脚本。这个脚本会遍历指定目录下的所有图片文件,将每张图片调整为统一尺寸,并保存到输出目录。
import cv2
import os
def batch_resize(input_dir, output_dir, target_size=(640, 480)):
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)
img = cv2.imread(input_path)
resized_img = cv2.resize(img, target_size)
cv2.imwrite(output_path, resized_img)
if __name__ == '__main__':
batch_resize('input_images', 'output_images')
这个基础版本虽然能工作,但还有很多潜在问题,比如没有处理图片读取失败的情况、不支持保持宽高比的缩放、没有处理中文路径问题、没有错误处理和日志记录、不支持多种文件格式的灵活处理。
工业级避坑技巧与防御性编程
在实际生产环境中,我们需要考虑各种边界情况和异常处理。下面是一些改进后的代码,比如安全的图片尺寸调整函数safe_resize,它可以处理图片加载失败、尺寸或缩放因子为0或负数的情况。
def safe_resize(img, target_size=None, scale_factor=None):
