Python图片截取技术
在当今数字化时代中,图片拥有着非常重要的地位,而从一张完整的图片中截取出重要的部分,则成为了各类应用的一个必需品。Python作为一门优秀的编程语言,也不例外。Python提供了丰富的图片处理库,如PIL,OpenCV等,本文将着重介绍这些库的使用,以及如何在Python中实现图片截取。
PIL库介绍
Python Imaging Library (PIL) 是 Python 编程语言下的图像处理库。该库支持多种文件格式,如:PNG、JPEG、GIF、BMP、PCX、TIFF等,并且提供了强大而丰富的图像操作函数,例如图像缩放、旋转、裁剪等。PIL库是Python图片处理领域的老牌库,用途广泛,易学易用,如果你需要处理静态图片,PIL是一种不错的选择。
使用PIL进行图片裁剪
首先通过pip install pillow命令安装PIL库,然后就可以在python中轻松导入:
from PIL import Image
接下来,我们将通过举例方法来讲述如何使用PIL进行图片截取。
1. 简单的矩形裁剪
from PIL import Image# 打开图片
im = Image.open('sample.jpg')# 进行裁剪
region = im.crop((0, 0, 100, 100))# 保存裁剪后的图片
region.save('sample_croped.jpg')
上面这段代码,我们打开了一张名为sample.jpg的图片,并通过crop方法裁剪出了图片左上角100*100的矩形区域,最后将裁剪后的矩形图像保存为sample_croped.jpg。
2. 圆形裁剪
from PIL import Image, ImageDraw# 打开图片
im = Image.open('sample.jpg')# 宽,高
w, h = im.size# 画图
circle = Image.new('RGBA', (w, h), (255, 255, 255, 0))
draw = ImageDraw.Draw(circle)
draw.ellipse((0, 0, w, h), fill=(255, 255, 255, 255), outline=(0, 0, 0, 255))# 进行裁剪
new_im = Image.composite(im, circle, circle)
new_im.save('sample_croped.jpg')
上面这段代码,我们首先创建了一张和原始图片大小一样的全透明图片,然后通过draw.ellipse画出一张黑色的圆形区域,最后通过Image.composite方法将原始图片和圆形图片进行合成,从而实现了圆形裁剪。同样的,将处理后的图片保存为sample_croped.jpg。
OpenCV库
OpenCV是一款全面的开源计算机视觉库,支持数百种图像处理和计算机视觉算法。该库专门为计算机视觉而设计,包括了许多经典的计算机视觉算法,如SIFT,SURF等。OpenCV库的数字图像处理技术也非常丰富,可以进行图像的增强、滤波、模糊等操作,另外,OpenCV还可以处理视频流以及三维图像。
使用OpenCV进行图片裁剪
同样,安装OpenCV库可以通过pip install opencv-python命令来实现。需要注意的是,这个库主要处理的是图像领域,所以在进行图片截取时,需要从图像角度来思考。下面我们将展示如何使用OpenCV库来进行图片截取。
简单的矩形裁剪
import cv2# 读取图片
img = cv2.imread("sample.jpg")# 裁剪图像
crop_img = img[184:573, 43:475]# 保存裁剪后的图片
cv2.imwrite('sample_croped.jpg', crop_img)
这段代码实现起来非常简单,我们只需要通过二维数组的方式来定位要裁剪的区域就可以了。在上面代码中,我们通过crop_img = img[184:573, 43:475]这个语句,裁剪出了图片左上角为(184,43),右下角为(573,475)的矩形区域,最后通过cv2.imwrite保存裁剪后的图片。
圆形裁剪
import cv2
import numpy as np# 读取图片
img = cv2.imread("sample.jpg")# 获取图片宽度和长度
width = img.shape[1]
height = img.shape[0]# 中心点与半径
x, y = int(width / 2), int(height / 2)
r = np.amin([x, y])# 创建一个矩形
mask = np.zeros((height, width), np.uint8)
cv2.circle(mask, (x,y), int(r), (255, 255, 255),thickness=-1, lineType=cv2.LINE_AA)# 裁剪图像
res = cv2.bitwise_and(img, img, mask=mask)# 保存裁剪后的图片
cv2.imwrite('sample_croped.jpg', res)
上面这段代码实现起来相对比较复杂,首先,我们需要通过np.amin([x, y])来获取圆形区域的半径,然后通过cv2.circle画出一张全白的圆形掩膜,通过cv2.bitwise_and将原始图片与掩膜进行按位与运算来实现圆形裁剪。最后,同样通过cv2.imwrite来保存裁剪后的图片。
结论
通过上面两种方式相信大家已经对Python图片截取有了比较清晰的了解,无论是PIL库还是OpenCV库,都可以实现图片矩形和圆形区域裁剪。需要注意的是,选择哪种库主要取决于应用场景和个人习惯,根据需求选择不同的库也是很有必要的。希望这篇文章可以帮助大家更好的实现图片截取,同时也希望本文可以作为Python图片处理的入门教程,对初学者有所帮助。
最后的最后
本文由chatgpt生成,文章没有在chatgpt
生成的基础上进行任何的修改。以上只是chatgpt
能力的冰山一角。作为通用的Aigc
大模型,只是展现它原本的实力。
对于颠覆工作方式的ChatGPT
,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。
🧡AI职场汇报智能办公文案写作效率提升教程 🧡 专注于AI+职场+办公
方向。
下图是课程的整体大纲
下图是AI职场汇报智能办公文案写作效率提升教程
中用到的ai工具
🚀 优质教程分享 🚀
- 🎄可以学习更多的关于人工只能/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 AI职场汇报智能办公文案写作效率提升教程 🧡 | 进阶级 | 本课程是AI+职场+办公的完美结合,通过ChatGPT文本创作,一键生成办公文案,结合AI智能写作,轻松搞定多场景文案写作。智能美化PPT,用AI为职场汇报加速。AI神器联动,十倍提升视频创作效率 |
💛Python量化交易实战 💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |