Python批量裁剪图片

前两天想要把连续的不同帧的静态图片拼成一个GIF图片,但是原来的图片需要裁剪,而且存在很多张,幸好这么多张的图片裁剪的位置是一样的,于是我便尝试用Python优雅地批量裁剪这些图片。

​ 首先介绍一下Python裁剪照片的原理。代码的输入是图片的地址和两个点的坐标,这两个点的坐标分别表示一个矩形的左上角顶点和右下角顶点,这个矩形就是你的裁剪区域。

​ 写代码前,先引入一下所需要的库。

python 复制代码
from PIL import Image, ImageDraw, ImageFont

​ 那么你一定会有个疑问,怎么确定图片矩形区域的顶点位置呢?下面贴出一个在原图像上绘制边界框的代码。

python 复制代码
def draw_bbox(image_path, bbox, output_path):
    """
    Draw bounding box on the image.

    Parameters:
        image_path (str): Path to the input image file.
        bbox (tuple): Bounding box coordinates (left, upper, right, lower).
        output_path (str): Path to save the image with bounding box.

    Returns:
        None
    """
    # Open image
    img = Image.open(image_path)

    # Draw bounding box
    draw = ImageDraw.Draw(img)
    draw.rectangle(bbox, outline="red", width=3)

    # Add text with coordinates
    font = ImageFont.truetype("arial.ttf", 20)
    draw.text((bbox[0], bbox[1]), f"{bbox}", fill="red", font=font)

    # Save image with bounding box
    img.save(output_path)

input_image_path = r"F:\Desktop\woman.jpg"
output_image_path = r"F:\Desktop\woman.jpg"
crop_box = (700, 550, 1850, 1000)  # Define crop box (left, upper, right, lower)
draw_bbox(input_image_path, crop_box, output_image_path)

​ crop_box(x1, y1, x2, y2),其中左上角顶点表示为(x1, y1),右下角顶点表示为(x2, y2)。但是你只能通过不断摸索crop_box的取值,根据原图像上绘制的边界框,逐渐确定你最后的裁剪区域。下面给出运行draw_bbox代码的可视化例子。

​ 用draw_bbox拿到合适的crop_box以后,下面给出裁剪图片的代码。

python 复制代码
def crop_image(input_image_path, output_image_path, crop_box):
    """
    Crop an image using the specified crop box.

    Parameters:
        input_image_path (str): Path to the input image file.
        output_image_path (str): Path to save the cropped image.
        crop_box (tuple): Crop box coordinates (left, upper, right, lower).

    Returns:
        None
    """
    # Open image
    img = Image.open(input_image_path)

    # Crop image
    cropped_img = img.crop(crop_box)

    # Save cropped image
    cropped_img.save(output_image_path)

    print("Image cropped and saved successfully.")

​ 最后给出裁剪以后的可视化例子。

​ 如果想要批量裁剪图片的话,就在外面套一个循环就可以了。

相关推荐
AIBigModel2 小时前
智能情趣设备、爆 bug:可被远程操控。。。
网络·安全·bug
暗流者4 小时前
终端安全与网络威胁防护笔记
网络·安全
Bruce_Liuxiaowei5 小时前
计划任务:被忽视的网络与系统安全边界
网络·安全·系统安全
网络研究院7 小时前
将黑客拒之物联网网络之外的竞赛
网络·物联网·5g·安全·趋势
star010-7 小时前
PeiQi网络安全知识文库PeiQi-WIKI-Book保姆式搭建部署教程
安全·web安全·网络安全
Bar_artist9 小时前
微软推出革命性AI安全工具Project IRE,重塑网络安全防御新范式
人工智能·安全·microsoft
cver1239 小时前
人脸情绪检测数据集-9,400 张图片 智能客服系统 在线教育平台 心理健康监测 人机交互优化 市场研究与广告 安全监控系统
人工智能·安全·yolo·计算机视觉·目标跟踪·机器人·人机交互
零一数创11 小时前
数字孪生赋能智慧水库安全监测与科学调度管理
安全
星哥说事11 小时前
腾讯云iOA:全面提升企业办公安全与效率的智能解决方案
网络·安全·腾讯云
POLOAPI11 小时前
震撼!GPT-5已来,我用3种方法将API成本降低90%(附完整代码)
人工智能·chatgpt·ai编程