写论文时图片的主观质量对比

# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw

def drawAndShow(picpath, bbox, scale, savepath, position=2):
    # bbox (x0,y0,x1,y1) 即 (left, upper, right, lower)
    bbox_wid = bbox[2] - bbox[0] + 1
    bbox_hei = bbox[3] - bbox[1] + 1
    newbbox = (bbox[0], bbox[1], bbox[2] + 1, bbox[3] + 1)
    bbox_wid_scale = scale * bbox_wid
    bbox_hei_scale = scale * bbox_hei

    im = Image.open(picpath)
    pic_wid = im.size[0]
    pic_hei = im.size[1]
    # 画框
    draw = ImageDraw.Draw(im)
    draw.rectangle(bbox, outline=(255, 0, 0))
    # 截取并放大
    imcrop = im.resize(size=(bbox_wid_scale, bbox_hei_scale), box=newbbox)
    # 粘贴
    if position == 1:  # 左下角
        im.paste(imcrop, box=(0, pic_hei - bbox_hei_scale, bbox_wid_scale, pic_hei))
    if position == 2:  # 右下角
        im.paste(imcrop, box=(pic_wid - bbox_wid_scale, pic_hei - bbox_hei_scale, pic_wid, pic_hei))
    im.save(savepath)
    im.show()

if __name__ == '__main__':
    bbox = (55, 22, 55 + 60, 22 + 60)
    drawAndShow(picpath='pic1_ori.png', scale=2, bbox=bbox, savepath='_pic1_ori.png')

picpath:需要显示的图的绝对路径

bbox:需要放大图中的哪个区域。 用四个坐标表示(x0,y0,x1,y1) 即 (left, upper, right, lower)

scale:需要把这个区域放大几倍

savepath:处理后的图的保存路径

position:把重点区域显示在什么位置。 1是左下角,2是右下角。

 

效果图:

 

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务