CV2和PIL按box信息实现图像裁剪

Posted zheng1076

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CV2和PIL按box信息实现图像裁剪相关的知识,希望对你有一定的参考价值。

# 用cv2实现裁剪
import cv2
import os

img = cv2.imread("./test_and_verification/1406170100001.jpg")
# cv2.imshow(‘img‘,img)
# cv2.waitKey(0)
print(img.shape)
输出
(1422, 1067, 3)

cropped = img[10:200,20:400]
cv2.imwrite("./test_and_verification/cut_test.jpg", cropped)
print(cropped.shape)

输出
(190, 380, 3)

"""
imread方法读取待裁剪的图片,然后查看它的shape,输出是(高度、宽度、通道数)
切片给出的坐标为需要裁剪的图片在原图片上的坐标,顺序为[y0:y1, x0:x1],其中左上角为坐标原点
"""

  

# 用PIL实现裁剪
from PIL import Image

img1 = Image.open("./test_and_verification/1406170100001.jpg")
print(img1.size)

输出
(1067, 1422)

cropped1 = img1.crop((30,40,80,120))
cropped1.save("./test_and_verification/cut_test1.jpg")
print(cropped1.size)

输出
(50, 80)

"""
size的输出是图片的(宽度、高度)
crop需要给定一个box参数,box是一个四元组,元组中元素的顺序是需要裁剪得到的图片在原图中的左、上、右、下坐标,即(left, upper, right, lower)
"""

  原图太大就不 贴出来了,看shape值即可

以上是关于CV2和PIL按box信息实现图像裁剪的主要内容,如果未能解决你的问题,请参考以下文章

cv2 & PIL(pillow)显示图像

如何使用 PIL 在单个白色背景上检测和裁剪多个图像?

使用 PIL 在 OpenCV Python 中更改字体系列

1.图像裁剪、加边框、旋转(Python PIL)

python PIL Image图片裁剪

对象高度和宽度上的裁剪二进制图像