使用Python进行图像裁剪的多种方法及代码示例

 更新时间:2025年01月02日 11:00:34   作者:Uncle 城  
这篇文章主要介绍了使用Python进行图像裁剪的多种方法,包括使用PIL库和OpenCV库,还提供了高级技巧和示例代码,文中通过代码介绍的非常详细,需要的朋友可以参考下

以下为您介绍使用 Python 进行图像裁剪的多种方法及代码示例:

使用 PIL 库(Pillow):Pillow 是 Python 中一个强大的图像处理库,其截图功能不仅可以获取屏幕截图,还能对截图进行丰富的图像处理操作。例如,您可以使用 Pillow 库对截图进行裁剪。

from PIL import Image

# 打开图像
img = Image.open('image.jpg')

# 定义裁剪区域,例如左上角坐标为 (100, 100),右下角坐标为 (300, 300)
left = 100
top = 100
right = 300
bottom = 300

# 进行裁剪
cropped_img = img.crop((left, top, right, bottom))

# 保存裁剪后的图像
cropped_img.save('cropped_image.jpg')

裁剪前:

裁剪后:

使用 OpenCV 库:

import cv2

# 读取图像
img = cv2.imread('image.jpg')

# 定义裁剪区域,例如左上角坐标为 (100, 100),右下角坐标为 (300, 300)
cropped_img = img[100:300, 100:300]

# 保存裁剪后的图像
cv2.imwrite('cropped_image.jpg', cropped_img)

此外,还有其他方式,如:

from PIL import Image

# 打开图像
img = Image.open('image.jpg')

# 循环裁剪
for i in range(0, 350, 50):
    region = img.crop((i, 0, i + 50, 50))
    region.save(f'./test/{i}.png')

希望这些示例能够帮助您使用 Python 进行图像裁剪。在实际应用中,您可以根据具体需求调整裁剪区域的坐标和处理方式。

Python图像裁剪的高级技巧

Python 提供了多种库来实现图像裁剪,例如 PIL(Pillow)和 OpenCV 等。高级技巧可能包括根据特定条件进行自适应裁剪,或者结合机器学习算法来智能识别裁剪区域。例如,通过分析图像的像素分布和特征,确定最有价值的裁剪区域。另外,还可以使用多线程或分布式计算来加速大规模图像的裁剪处理。

以下是一些更复杂的 Python 图像裁剪代码示例:

示例一:按比例裁剪图像中心区域

from PIL import Image

def crop_center_image(image_path, output_path, percentage):
    img = Image.open(image_path)
    width, height = img.size
    new_width = int(width * percentage)
    new_height = int(height * percentage)
    left = (width - new_width) // 2
    top = (height - new_height) // 2
    right = left + new_width
    bottom = top + new_height
    cropped_img = img.crop((left, top, right, bottom))
    cropped_img.save(output_path)

crop_center_image('input_image.jpg', 'output_image.jpg', 0.8)

这个函数可以根据给定的百分比裁剪图像的中心区域。

示例二:批量裁剪图像并保存到不同文件夹

import os
from PIL import Image

def batch_crop_images(input_folder, output_folder, crop_size):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    for filename in os.listdir(input_folder):
        if filename.endswith(('.jpg', '.png', '.jpeg')):
            img = Image.open(os.path.join(input_folder, filename))
            width, height = img.size
            left = (width - crop_size[0]) // 2
            top = (height - crop_size[1]) // 2
            right = left + crop_size[0]
            bottom = top + crop_size[1]
            cropped_img = img.crop((left, top, right, bottom))
            cropped_img.save(os.path.join(output_folder, filename))

batch_crop_images('input_folder', 'output_folder', (200, 200))

这个函数可以批量裁剪指定文件夹中的图像,并将裁剪后的图像保存到另一个文件夹中。

示例三:根据特定坐标范围裁剪图像

from PIL import Image

def crop_image_by_coordinates(image_path, output_path, x_range, y_range):
    img = Image.open(image_path)
    cropped_img = img.crop((x_range[0], y_range[0], x_range[1], y_range[1]))
    cropped_img.save(output_path)

crop_image_by_coordinates('input_image.jpg', 'output_image.jpg', (100, 300), (50, 250))

这个函数可以根据给定的 x 和 y 坐标范围裁剪图像。

示例四:实现批量图片裁剪

from PIL import Image
import os

def batch_crop_images(input_folder, output_folder):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    for filename in os.listdir(input_folder):
        if filename.endswith(('.jpg', '.png', '.jpeg')):
            img = Image.open(os.path.join(input_folder, filename))
            # 定义裁剪区域,这里假设都是左上角坐标为 (100, 100),右下角坐标为 (300, 300)
            left = 100
            top = 100
            right = 300
            bottom = 300
            cropped_img = img.crop((left, top, right, bottom))
            cropped_img.save(os.path.join(output_folder, filename))

input_folder = 'input_images_folder'
output_folder = 'output_images_folder'
batch_crop_images(input_folder, output_folder)

把需要裁剪的图片放到 ‘input_images_folder’ 文件夹,运行后进行裁剪并输出到 ‘output_images_folder’ 文件夹中

在这个代码中,首先定义了一个函数batch_crop_images,它接受输入文件夹和输出文件夹的路径作为参数。函数首先检查输出文件夹是否存在,如果不存在则创建它。然后遍历输入文件夹中的所有文件,如果文件是图片格式(.jpg.png.jpeg),则打开图像,进行裁剪,并将裁剪后的图像保存到输出文件夹中。

你可以根据实际情况修改输入文件夹和输出文件夹的路径以及裁剪区域的坐标。

总结

到此这篇关于使用Python进行图像裁剪的多种方法及代码示例的文章就介绍到这了,更多相关Python图像裁剪内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 模块重载的五种方法

    python 模块重载的五种方法

    这篇文章主要介绍了python 模块重载的五种方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • python sklearn包——混淆矩阵、分类报告等自动生成方式

    python sklearn包——混淆矩阵、分类报告等自动生成方式

    今天小编就为大家分享一篇python sklearn包——混淆矩阵、分类报告等自动生成方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python结合PyQt5实现目录文件扫描与导出工具

    Python结合PyQt5实现目录文件扫描与导出工具

    这篇文章主要为大家详细介绍了Python如何结合PyQt5实现一个简单的目录文件扫描与导出工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-02-02
  • nlp自然语言处理学习CBOW模型类实现示例解析

    nlp自然语言处理学习CBOW模型类实现示例解析

    这篇文章主要为大家介绍了nlp自然语言处理学习CBOW模型类实现示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Python找出文件中使用率最高的汉字实例详解

    Python找出文件中使用率最高的汉字实例详解

    这篇文章主要介绍了Python找出文件中使用率最高的汉字,涉及Python针对字符串与中文的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • 解决Python 中JSONDecodeError: Expecting value: line 1 column 1 (char 0)错误

    解决Python 中JSONDecodeError: Expecting value:&n

    这篇文章主要介绍了解决Python 中JSONDecodeError: Expecting value: line 1 column 1 (char 0)错误问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Python使用SciencePlots库绘制学术图表详解

    Python使用SciencePlots库绘制学术图表详解

    这篇文章主要介绍了Python使用SciencePlots库绘制学术图表,SciencePlots提供了一系列预设的科学绘图样式,能够帮助研究人员轻松创建专业的学术图表,需要的朋友可以参考下
    2025-04-04
  • tensorflow模型继续训练 fineturn实例

    tensorflow模型继续训练 fineturn实例

    今天小编就为大家分享一篇tensorflow模型继续训练 fineturn实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 使用python实现CGI环境搭建过程解析

    使用python实现CGI环境搭建过程解析

    这篇文章主要介绍了使用python实现CGI环境搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python tkinter实现弹窗的输入输出

    python tkinter实现弹窗的输入输出

    这篇文章主要为大家详细介绍了python tkinter实现弹窗的输入输出,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论