【使用 Python 进行图像裁剪的多种方法】

news2024/9/23 5:30:12

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

使用 PIL 库(Pillow):
PillowPython 中一个强大的图像处理库,其截图功能不仅可以获取屏幕截图,还能对截图进行丰富的图像处理操作。例如,您可以使用 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),则打开图像,进行裁剪,并将裁剪后的图像保存到输出文件夹中。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PD取电协议芯片 XSP08Q集成全协议芯片

1:Type-C接口应用很广泛,几乎可以覆盖各行各业,例如快充领域,多种快充协议都可以在Type-C接口上实现,在用电端,只需要使用XSP08取电协议控制芯片,即可获取各种快充电压,例如&#xf…

以某团为案例,30分钟讲清商业模式画布该如何做!

在进行商业模式分析时,即时白板内置的商业模式画布模板显然是一种极其有效的工具。该模板将复杂的商业逻辑分解为明确的要素,使得分析过程更具条理性和方向性,便于深刻理解和呈现商业模式。 以下以某团为例,详细解析其商业逻辑&a…

Django REST Framework(十九)权限

Django REST framework (DRF) 的权限认证涉及以下几个方面:全局权限配置、局部权限配置、自定义权限类、以及自定义认证类。以下是关于这些方面的详细说明: 1. 全局权限配置 在 Django 项目的配置文件 settings.py 中,可以全局配置 DRF 的权…

警惕!血脂偏高,这些身体信号你不可不知!

在快节奏的现代生活中,高血脂,这个看似“沉默的杀手”,正悄然威胁着越来越多人的健康。它不像感冒发烧那样有明显的症状,却能在不知不觉中侵蚀血管,增加心血管疾病的风险。今天,我们就来揭开高血脂的神秘面…

第四届中国RPA+AI开发者大赛火热报名中!

创新未来 第四届中国RPAAI开发者大赛 报名正式启动 数字化转型的加速推进为RPA技术带来了前所未有的发展机遇。AI技术的飞速进步,特别是在机器学习、自然语言处理和计算机视觉等领域的显著进展,已经大幅度扩展了RPA的应用范围。 据IDC研究报告预测&am…

windows共享文件给单个用户方法操作说明

如下图,我们想给学习视频这个文件夹共享出去,但是不想每个用户(Everyone)都可以访问,只允许本地账户ZZ可以访问,该如何操作呢?请见下面的内容。 右键这个文件夹,点击属性 点击图下所…

本地运行 AI 有多慢 ? 大模型推理测速 (llama.cpp, Intel GPU A770)

上文说到, 天下苦 N 卡久矣, 直接使用 CPU 推理又太慢. 那么, 在没有 N 卡的情况下, 本地运行 AI (神经网络) 大模型, 能够达到怎样的速度 ? 同志们好, 欢迎来到 胖喵穷人实验室 ! 这里专注于 低成本, 低难度, 低风险 的 “三低” 小实验. 胖喵穷人实验室 (PM-PLab-E)正式名称…

如何在算家云搭建模型Linly-Dubbing(语音识别)

一、模型介绍 Linly-Dubbing 是一个智能视频多语言 AI 配音和翻译工具,它融合了 YouDub-webui 的灵感,并在此基础上进行了拓展和优化。 该模型致力于提供更加多样化和高质量的配音选择,通过集成Linly-Talker的数字人对口型技术,…

零基础入门转录组数据分析——预后模型之多因素cox模型

零基础入门转录组数据分析——预后模型之多因素cox模型 目录 零基础入门转录组数据分析——预后模型之多因素cox模型1. 预后模型和多因素cox模型基础知识2. 多因素cox预后模型(Rstudio)——代码实操2. 1 数据处理2. 2 构建多因素cox模型(用输…

有色冶炼行业中的智能电动机保护器

低压电动机作为有色冶炼企业底层大量使用的设备,其异常运行不仅影响冶炼厂的正常生产,还会 威胁到人的生命安全,因此为电动机设置合适而又全面的保护至关重要。智能电动机保护器集保护、 遥测、通信、遥控、显示等功能于一体,是目…

基于大数据的水资源管理与调度优化研究【Web可视化、灰色预测、大屏设计】

需要本项目的私信博主 目录 1 引言 1.1 研究背景 1.2 国内外研究现状 1.3 研究目的 1.4 研究意义 2 关键技术理论介绍 2.1 Python语言 2.2 pandas 2.3 pyecharts 2.4 灰色预测 3 数据来源及处理 3.1 数据来源 3.2 数据处理 4 数据可视化分析及大屏设计 4.1 年度…

Windows下安装Kafka3

参考文章:Windows下安装Kafka3_kafka3 window-CSDN博客 安装配置Kafka 首先在官网 Apache Kafka 下载Kafka二进制压缩包。无论是在CentOS还是在Windows下都是下载该压缩包,里面已经包含了Kafka Linux和windows平台下的可执行文件了。选择目前比较新的3…

解决 JS WebSocket 心跳检测 重连

解决 JS WebSocket 心跳检测 重连 文章目录 解决 JS WebSocket 心跳检测 重连一、WebSocket 心跳检测的作用二、心跳检测的处理方案1. 创建 WebSocket 连接2. 心跳参数设置3. 心跳检测逻辑4. 心跳包响应处理5. 断线重连机制 三、总结 一、WebSocket 心跳检测的作用 WebSocket 是…

计量校准企业的生产制造,具备什么实际的作用?

计量校准行业已经发展了几十年,从建国后成立的计量所,建立了计量规范,到如今百花齐放,各类机构不断涌出,可供企业选择的计量机构可谓是越来越多,那么实际意义上,计量校准企业的生产制造&#xf…

草莓成熟度检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

草莓成熟度检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

【ragflow】安装2:源码安装依赖

中文文档【ragflow】安装1: docker:失败官方说的成功 docker 安装的启动失败 重新来一遍,不会重新拉取: root@k8s-master-pfsrv:/home/zhangbin/perfwork/rag# cd ragflow/ root@k8s-master-pfsrv:/home/

基于数字孪生智慧机场建设方案(53页PPT)

方案介绍: 数字孪生技术是一种通过数字化方式创建物理实体的虚拟模型,并借助历史数据、实时数据以及算法模型,模拟、验证、预测、控制物理实体过程的技术手段。在智慧机场建设中,该技术通过构建机场的虚拟镜像,实现机…

软件设计师全套备考系列文章15 -- 数据库:规范化、控制功能、大数据

软考-- 软件设计师(15)-- 数据库:规范化、控制功能、大数据 文章目录 软考-- 软件设计师(15)-- 数据库:规范化、控制功能、大数据前言一、章节考点二、规范化三、数据库的控制功能四、大数据、数据仓库 前言…

深度解析HarmonyOS SDK实况窗服务源码,Get不同场景下的多种模板

HarmonyOS SDK实况窗服务(Live View Kit)作为一个实时呈现应用服务信息变化的小窗口,遍布于设备的各个使用界面,它的魅力在于将复杂的应用场景信息简洁提炼并实时刷新,在不影响当前其他应用操作的情况下,时…

车载通信框架--- 以太网重连Port口相关思考

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…