Python实现图片裁剪的两种方式(Pillow和OpenCV)


Posted in Python onOctober 30, 2019

在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV。两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧。

首先,我们有一张原始图片,如下图所示:

Python实现图片裁剪的两种方式(Pillow和OpenCV)

原始图片

然后,我们利用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()方法将裁剪得到的图片保存到本地(第一个参数为图片名,第二参数为需要保存的图片),如图所示:

Python实现图片裁剪的两种方式(Pillow和OpenCV)

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裁剪图片的工作。

Python实现图片裁剪的两种方式(Pillow和OpenCV)

Pillow裁剪所得图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Django 全局的static和templates的使用详解
Jul 19 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Python ORM编程基础示例
Feb 02 Python
PyTorch 实现L2正则化以及Dropout的操作
May 27 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
python获取字符串中的email
Mar 31 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 #Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 #Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 #Python
Python自动化完成tb喵币任务的操作方法
Oct 30 #Python
Flask框架 CSRF 保护实现方法详解
Oct 30 #Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 #Python
python基于K-means聚类算法的图像分割
Oct 30 #Python
You might like
php程序员应具有的7种能力小结
2014/11/27 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
angular2使用简单介绍
2016/03/01 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
vue-router命名视图的使用讲解
2019/01/19 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
python3实现多线程聊天室
2018/12/12 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
中东奢侈品市场:Coveti
2019/05/12 全球购物
节能减排倡议书
2014/04/15 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
社区国庆节活动总结
2015/03/23 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书