Python如何对图片进行缩放,旋转,翻转,添加文字以及如何截取并粘贴图像到图片中

Python如何对图片进行缩放,旋转,翻转,添加文字以及如何截取并粘贴图像到图片中

有时候我们需要批量的对图片进行一些简单的处理,比如说,将一些照片调整为统一的尺寸,或者添加一些简单的文字内容到图片或者截图中,用手机操作或者用PS之类的工具感觉很麻烦。比如最近由于疫情的原因,学校经常需要家长,把健康码,通行码等内容加上名字后,发给学校,每次都要重复的把同样的文字添加到截图上去很不方便。而使用Python,只要写几段代码就可以只用几秒钟就完成,这部分的代码我放到了另一篇文章「通过Python在健康码,行程卡的截图上添加文字内容,省心省力」中,如有需要,请点击查看

接下来,本文将通过调用Python代码对图片的一些基本操作进行简要说明:

首先,对缩放、旋转和翻转进行简要的介绍

#开始之前,先要导入所需要模块
from PIL import Image, ImageDraw, ImageFont

关于图片的缩放比较容易理解,但是要注意的是,仅调用缩放函数并不会改变当前图像的尺寸,需要通过重新赋值才可以完成缩放内容的传递,官方文档中的说明是,Returns a resized copy of this image. 就是返回一个本图像调整尺寸后的复制内容。关于图片缩放后的尺寸设定,可以参考如下代码,图片尺寸只能是整数:

# 获取图片的原始尺寸,再按一定的比例进行设定 
size = (int(img.size[0] * 0.5), int(img.size[1] *0.5)) 

# 和上一句的意思一样, 上一句是×50%后取整,这里是除2后取整
size = (img.size[0] // 2, img.size[1] // 2)

#设定尺寸为800*600
size = (800,600) 

#将图像Img 调整尺寸后 重新赋值给自己,size的内容任选上述一种即可。
img = img.resize(size) 

关于图像的旋转,有时候容易出现理解偏差,rotate是旋转,Transpose是变换位置,本文用翻转来指代。这两个功能的说明如下:

img.rotate(90) 是旋转90度,
这里要注意,只是对于图像内容进行旋转,图片文件本身(或者可以理解为画布)并不会旋转。

Image.Transpose.ROTATE_90,是翻转90度,通过执行这条语句,整个画布才会翻转。

具体的区别如下图如示,调用这两个功能后也需要重新赋值后才能传递旋转后的内容:

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 OpenCV Python ,可以使用以下函数实现图像旋转翻转与平移,以及图像增强: 1. 图像旋转:使用 cv2.warpAffine 函数,该函数可以将图像按照指定的角度进行旋转。具体实现步骤如下: - 定义旋转矩阵:使用 cv2.getRotationMatrix2D 函数定义旋转矩阵,需要指定旋转心、旋转角度和比例。 - 应用旋转矩阵:使用 cv2.warpAffine 函数将旋转矩阵应用到图像。 代码示例: ``` import cv2 import numpy as np img = cv2.imread('image.jpg') rows, cols = img.shape[:2] # 定义旋转矩阵 M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) # 应用旋转矩阵 rotated_img = cv2.warpAffine(img, M, (cols, rows)) cv2.imshow('Rotated Image', rotated_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 2. 图像翻转:使用 cv2.flip 函数,该函数可以将图像水平或垂直翻转。具体实现步骤如下: - 指定翻转方向:使用 cv2.flip 函数指定翻转方向,可以是水平翻转、垂直翻转或同时进行两种翻转。 代码示例: ``` import cv2 img = cv2.imread('image.jpg') # 水平翻转 flipped_img = cv2.flip(img, 1) cv2.imshow('Flipped Image', flipped_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 3. 图像平移:使用 cv2.warpAffine 函数,该函数可以将图像按照指定的平移距离进行平移。具体实现步骤如下: - 定义平移矩阵:使用 np.float32 函数定义平移矩阵,需要指定平移距离。 - 应用平移矩阵:使用 cv2.warpAffine 函数将平移矩阵应用到图像。 代码示例: ``` import cv2 import numpy as np img = cv2.imread('image.jpg') rows, cols = img.shape[:2] # 定义平移矩阵 M = np.float32([[1, 0, 100], [0, 1, 50]]) # 应用平移矩阵 translated_img = cv2.warpAffine(img, M, (cols, rows)) cv2.imshow('Translated Image', translated_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 4. 图像增强:可以使用一些图像处理技术,如直方图均衡化、滤波、二值化等技术来增强图像。具体实现步骤根据不同的技术而有所不同。这里以直方图均衡化为例,代码示例如下: ``` import cv2 img = cv2.imread('image.jpg', 0) # 直方图均衡化 equalized_img = cv2.equalizeHist(img) cv2.imshow('Equalized Image', equalized_img) cv2.waitKey(0) cv2.destroyAllWindows() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值