Python实现图片裁剪的两种方式(Pillow和OpenCV)
作者:hfutdog 发布时间:2022-07-08 12:42:47
在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV。两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧。
首先,我们有一张原始图片,如下图所示:
原始图片
然后,我们利用OpenCV对其进行裁剪,代码如下所示:
import cv2
img = cv2.imread("./data/cut/thor.jpg")
print(img.shape)
cropped = img[0:128, 0:512] # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite("./data/cut/cv_cut_thor.jpg", cropped)
这里,我们先用imread方法读取待裁剪的图片,然后查看它的shape,shape的输出是(1080, 1920, 3),输出的顺序的是高度、宽度、通道数。之后我们利用数组切片的方式获取需要裁剪的图片范围。这里需要注意的是切片给出的坐标为需要裁剪的图片在原图片上的坐标,顺序为[y0:y1, x0:x1],其中原图的左上角是坐标原点。最后我们用cv2.imwrite()方法将裁剪得到的图片保存到本地(第一个参数为图片名,第二参数为需要保存的图片),如图所示:
OpenCV裁剪所得图片
接下来,我们看一下使用Pillow如何对图片进行裁剪,代码如下所示:
from PIL import Image
img = Image.open("./data/cut/thor.jpg")
print(img.size)
cropped = img.crop((0, 0, 512, 128)) # (left, upper, right, lower)
cropped.save("./data/cut/pil_cut_thor.jpg")
首先我们使用open方法读取图片,然后查看它的size(这里的size和OpenCV中的shape是类似的),size的输出是(1920, 1080),也就是图片的宽度和高度。之后我们调用crop方法来对图片进行裁剪,crop需要给定一个box参数,box是一个四元组,元组中元素的顺序是需要裁剪得到的图片在原图中的左、上、右、下坐标,即(left, upper, right, lower)。然后,我们使用save方法保存裁剪得到的图片。如下图所示,Pillow可以同样完成OpenCV裁剪图片的工作。
Pillow裁剪所得图片
来源:https://blog.csdn.net/hfutdog/article/details/82351549


猜你喜欢
- 本文实例讲述了PHP检查端口是否可以被绑定的方法。分享给大家供大家参考,具体如下:<?php/** * 检查端口是否可以被绑定 * @
- Gravatar注册地址: https://en.gravatar.com/"""`Gravatar <
- 在工作中,作为一名开发者的你,也许偶尔需要从事维护数据库的工作。下面我们来介绍一下两个SQL服务器的维护技巧:轻松改变数据库拥有者、整理索引
- 本文实例讲述了PHP动态生成指定大小随机图片的方法。分享给大家供大家参考,具体如下:<?php$image_width = 100;$
- 本文实例讲述了python获得文件创建时间和修改时间的方法。分享给大家供大家参考。具体如下:这里需要用户从控制台输入文件路径import o
- 发现问题近期通过 mysql 命令连接 mysql server 的时候, 出现了不能输入中文的现象, 如下所示:mysql> SEL
- 在上一期python numpy 模块中对概述介绍了numpy 模块安装、使用方法、特点等入门知识。numpy 模块是一个开源的第三方Pyt
- 我们都知道float:left和float:right,但是否想过float:center呢?居中浮动。。。<div id="
- PWA初次体验前言:本示例不用安装任何东西部分资源来自网络资源及PWA官网,不要把PWA想象的太复杂,跟着示例走一下,你行的。PWA介绍一个
- 在Python中,多线程是实现并发的一种方式。多线程可以让程序在同一时间内进行多个任务,从而提高程序的效率和执行速度。本文将介绍Python
- 在Mac OS上安装redis首先是安装,它会默认安装到/usr/local/bin下cd /tmpwget http://redis.go
- 对于array,如2-D的array,如何取指定元素设array为3*10的shapes = array([[ 0, 1, 2, 3, 4,
- 呵呵,先说明一下下面的程序大部分收集自网络,因为本人在asp编程中经常使用到随机函数,所以收集了一些这类的函数,并做了些注释,方便使用。首发
- 今天我想讲一讲关于Elasticsearch的索引建立,当然提前是你已经安装部署好Elasticsearch。ok,先来介绍一下Elatic
- 本文实例讲述了python使用xmlrpclib模块实现对百度google的ping功能。分享给大家供大家参考。具体分析如下:最近在做SEO
- 方法一使用Python中的内置函数isupper()和islower()来判断一个字母是否为大写或小写字母。# 获取用户输入letter =
- Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许多人广泛使用。它的简单和易用性造就了它如此流
- 一、问题开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误:Incorrect string value: '
- 最近由于项目需要,开始学习python,然后发现一个非常有用的python交互式编辑器,非常容易上手而且非常有用和实在,本博文是对学习jup
- 概述bootstrap开发标签页时,标签页显示正常,但点击时候对应内容区域没有变化。具体症状与解决方案1.标签页UI出现,但点击无反应,标签