当前位置: 代码网 > it编程>前端脚本>Python > 使用Python进行图像裁剪的多种方法及代码示例

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

2025年01月03日 Python 我要评论
以下为您介绍使用 python 进行图像裁剪的多种方法及代码示例:使用 pil 库(pillow):pillow是python中一个强大的图像处理库,其截图功能不仅可以获取屏幕截图,还能对截图进行丰富

以下为您介绍使用 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图像裁剪内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • 简单聊聊Python中多线程与类方法的交互

    简单聊聊Python中多线程与类方法的交互

    在python编程中,多线程是一种提高程序运行效率的有效手段。特别是在处理i/o密集型任务时,多线程能够显著减少程序的等待时间。然而,多线程编程也带来了新的问题... [阅读全文]
  • python中_init_.py的作用

    最近有几个小伙伴问了我一个经典问题:“__init__.py 到底有啥用?”其实这个问题挺常见的,尤其是对python新手来说简直就是一团迷雾。今天就站在一…

    2025年01月04日 前端脚本
  • python subprocess.run中的具体使用

    python subprocess.run中的具体使用

    一、详解subprocess.run 是 python 3.5 及以上版本中引入的一个函数,用于运行子进程。它是 subprocess 模块的一部分,提供了一种... [阅读全文]
  • python中poetry安装依赖

    前言poetry 是一个用于管理 python 项目的依赖和构建过程的工具。它简化了包管理和虚拟环境的创建,让开发者更容易管理项目的依赖关系。它的出现让我们对依赖卸载更干净。1. …

    2025年01月04日 前端脚本
  • 浅析Python中的基本交易算法应用

    浅析Python中的基本交易算法应用

    在金融市场中,算法交易已成为一种重要的交易方式。它通过自动化的程序来执行交易策略,可以在短时间内分析大量数据并做出交易决策。python语言由于其强大的数据处理... [阅读全文]
  • python中GIL锁的实现

    python中GIL锁的实现

    什么是python的 gil 锁?gil的全称是global interpreter lock(全局解释器锁),它是 cpython(python 的主流实现)... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com