使用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 多处理模块如何使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Django框架会话技术实例分析【Cookie与Session】

    Django框架会话技术实例分析【Cookie与Session】

    这篇文章主要介绍了Django框架会话技术,结合实例形式分析了Django框架Cookie与Session相关使用技巧与注意事项,需要的朋友可以参考下
    2019-05-05
  • Python中的模块导入和读取键盘输入的方法

    Python中的模块导入和读取键盘输入的方法

    这篇文章主要介绍了Python中的模块导入和读取键盘输入的方法,相关import语句和input函数的使用是Python入门学习中的基础知识, 需要的朋友可以参考下
    2015-10-10
  • 只需要这一行代码就能让python计算速度提高十倍

    只需要这一行代码就能让python计算速度提高十倍

    今天教大家一个小方法,只需要这一行代码就能让python计算速度提高十倍,文中介绍的非常详细,对正在学习python的小伙伴有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python爬取数据保存为Json格式的代码示例

    Python爬取数据保存为Json格式的代码示例

    今天小编就为大家分享一篇关于Python爬取数据保存为Json格式的代码示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Django实现列表页商品数据返回教程

    Django实现列表页商品数据返回教程

    这篇文章主要介绍了Django实现列表页商品数据返回教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Django框架获取form表单数据方式总结

    Django框架获取form表单数据方式总结

    这篇文章主要介绍了Django框架获取form表单数据方式总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 如何使用python自带IDLE的几种方法

    如何使用python自带IDLE的几种方法

    这篇文章主要介绍了如何使用python自带IDLE的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • pytorch点乘与叉乘示例讲解

    pytorch点乘与叉乘示例讲解

    今天小编就为大家分享一篇pytorch点乘与叉乘示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python Reduce函数的高级用法详解

    Python Reduce函数的高级用法详解

    这篇文章主要介绍了reduce函数的工作原理和应用,同时提供丰富的示例代码,方便更好地理解如何使用reduce函数来轻松解决复杂的数据聚合问题,需要的可以参考下
    2023-11-11

最新评论