裁剪图片代码

本文介绍使用Pillow和OpenCV两种方法进行图片裁剪的技术细节。Pillow方法利用Image模块的crop函数,指定(left, upper, right, lower)坐标;OpenCV方法使用数组切片,坐标为[y0:y1, x0:x1]。两种方法均可实现图片的有效裁剪。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片的裁剪一种利用了Pillow,还有一种利用了OpenCV。

from PIL import Image
import os.path
import glob
#pillow方法
def convertjpg(jpgfile,outdir,width=300,height=300):
  img=Image.open(jpgfile)
  cropped = img.crop((20, 20, 512, 128)) # 裁剪坐标为[y0:y1, x0:x1]
  cropped.save( os.path.join(outdir,os.path.basename(jpgfile)))
  
    
       
for jpgfile in glob.glob(r'e:\Users\zp\Desktop\picture\*.jpg'):
    print(jpgfile)
    convertjpg(jpgfile,r'e:\Users\zp\Desktop\changethen')
import os.path
import glob
import cv2
def convertjpg(jpgfile,outdir,width=300,height=300):
  #img=Image.open(jpgfile) #不能用image.open来打开
  img = cv2.imread(jpgfile)
  print(img.shape)
  crop_img = img[0:height,0:width]# 裁剪坐标为[y0:y1, x0:x1]
  cv2.imwrite( os.path.join(outdir,os.path.basename(jpgfile)), crop_img)
  
    
       
for jpgfile in glob.glob(r'e:\Users\zp\Desktop\picture\*.jpg'):
    print(jpgfile)
    convertjpg(jpgfile,r'e:\Users\zp\Desktop\changethen')

opencv方法使用时用到的是cv函数,读取用cv2.imread来读取,其有.shape的函数,可以输出,裁剪坐标是[y0:y1, x0:x1]
imread方法读取待裁剪的图片,然后查看它的shape,shape的输出是(1080, 1920, 3),输出的顺序的是高度、宽度、通道数。之后我们利用数组切片的方式获取需要裁剪的图片范围。这里需要注意的是切片给出的坐标为需要裁剪的图片在原图片上的坐标,顺序为[y0:y1, x0:x1],其中原图的左上角是坐标原点。最后我们用cv2.imwrite()方法将裁剪得到的图片保存到本地(第一个参数为图片名,第二参数为需要保存的图片)。

pillow方法使用时用到的是open函数,读取用Image.open来读取,其没有.shape方法,裁剪坐标左、上、右、下坐标,即(left, upper, right, lower)
open方法读取图片,然后查看它的size(这里的size和OpenCV中的shape是类似的),size的输出是(1920, 1080),也就是图片的宽度和高度。之后我们调用crop方法来对图片进行裁剪,crop需要给定一个box参数,box是一个四元组,元组中元素的顺序是需要裁剪得到的图片在原图中的左、上、右、下坐标,即(left, upper, right, lower)。然后,我们使用save方法保存裁剪得到的图片。如下图所示,Pillow可以同样完成OpenCV裁剪图片的工作。

Image读出来的是PIL的类型,而imread读出来的数据是numpy格式的

### 如何在 PyCharm 中使用 Pillow 实现图片裁剪 要在 PyCharm 中实现图片裁剪,可以利用 Pillow 库中的 `Image` 模块。具体来说,可以通过调用 `crop()` 方法完成这一任务。以下是详细的代码示例: #### 裁剪图片代码示例 ```python from PIL import Image # 打开一张图片 image_path = 'example.jpg' # 替换为实际路径 with Image.open(image_path) as img: # 获取原始尺寸 width, height = img.size # 定义裁剪区域 (左, 上, 右, 下) box = (50, 50, 200, 200) # 这里定义了一个矩形框作为裁剪范围 # 使用 crop() 方法进行裁剪 cropped_image = img.crop(box) # 显示裁剪后的图片 cropped_image.show() # 将裁剪后的图片保存到本地 output_path = 'cropped_example.jpg' cropped_image.save(output_path) ``` 上述代码实现了以下几个功能: 1. 导入 Pillow 的 `Image` 模块[^2]。 2. 加载指定路径下的图片并读取其大小信息。 3. 设置裁剪区域 `(left, upper, right, lower)` 参数,其中四个参数分别表示裁剪框的左边界、上边界、右边界和下边界[^5]。 4. 利用 `img.crop(box)` 对原图进行裁剪操作。 5. 显示裁剪后的图片,并将其保存至指定位置。 此方法适用于任何支持的图像格式,并能灵活调整裁剪区域的位置与大小。 --- ### 注意事项 - 如果输入的裁剪区域超出了图片的实际范围,则会自动截断超出部分。 - 确保已正确安装 Pillow 库,在 PyCharm 中可通过设置解释器或命令行运行以下指令来安装: ```bash pip install pillow ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值