图片的剪裁和叠加

 裁剪

from PIL import Image
im = Image.open('1.jpg')
# 左上角和右下角的点
region = im.crop((rect[0], rect[1], rect[2], rect[3]))
region.save('2')

叠加

from PIL import Image
im = Image.open('1.jpg')
# im 为模式为L,变成RGB
im = im.convert('RGB')
im2 = Image.open('2.jpg')
im2 = im2.convert('RGBA')
r,g,b,a = im2.split()
# 新建图层
im3 = Image.new('RGB', im2.size, (255, 0, 255))
# 叠加,实现了将im2中,为255的点的位置显示原来的图层1,为0的点的位置
# 显示为图层3,rect[0],rect[1]为叠加的位置的左上角的坐标。
im.paste(im3,(int(rect[0]), int(rect[1])), mask=r)

画矩形框

PIL

from PIL import Image
im = Image.open('1.jpg')
draw = ImageDraw.Draw(im)
# 左上角和右下角的坐标,和颜色
draw.rectangle((label[0], label[1], label[2], label[3]), outline =colors[int(label[4])])
im.save('2')

matplotlib

import cv2
import matplotlib
img = cv2.imread(detect_folder+'images/'+args.images.split('/')[-1])
    (r, g, b)=cv2.split(img)
img=cv2.merge([b,g,r])
plt.imshow(img)
rect = plt.Rectangle((xmin, ymin), xmax - xmin,
            ymax - ymin, fill=False,
            edgecolor=color[label[4]],
            linewidth=1.0)
plt.gca().add_patch(rect)
plt.savefig('2')

cv2 多边形

img = cv2.imread("./images/" + name + ".jpg")
rect = np.array(xy, np.int32)
pts = rect.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))
cv2.imwrite('./out_img/' + name + '.jpg',img)

ps

  • jpg格式的图片保存RGB三个通道
  • PNG支持alpha通道,有RGBA四个通道

猜你喜欢

转载自blog.csdn.net/sda42342342423/article/details/80606494