python切割、拼接图片

在做智能识别方面的时候遇到了一些瓶颈,即对于一张清晰度足够高,目标却很小时,识别的效果不是很好。
这时可以首先将图片分割成3*3,一共九张图片,分别进行识别之后再进行图片的拼接。
首先是图片的分割,将图片分割之后保存在数组中

def img_divide(img):
	#分割为3*3
    weight=img.size[0]/3
    height=img.size[1]/3

    left = 0  #图片距离左边的宽度乘积值
    top = 0  #图片距离上边的宽度乘积值
    index = 0  #图片名
    return_img=[]
    for i in range(9):
        if i == 3 or i ==6:
            # 换行
            top += 1
            left = 0
        a = weight * left  # 图片距离左边的大小
        b = height * top  # 图片距离上边的大小
        c = weight * (left + 1)  # 图片距离左边的大小 + 图片自身宽度
        d = height * (top + 1)  # 图片距离上边的大小 + 图片自身高度
        croping = img.crop((a,b,c,d))
        index += 1
        left += 1
        return_img.append(croping)
    return return_img

将这一个图片组分别识别了之后,再进行拼接

def image_concat(image_names):
    """ image_names: list, 存放的是图片的绝对路径 """
    # 1.创建一块背景布
    image = image_names[0]
    width, height = image.size
    target_shape = (3*width, 3*height)
    background = Image.new('RGBA', target_shape, (0,0,0,0,))

    # 2.依次将图片放入背景中(注意图片尺寸规整、mode规整、放置位置)
    for ind, image_name in enumerate(image_names):
        img = image_name
        img = img.resize((width, height))  # 尺寸规整
        if img.mode != "RGBA":             # mode规整
            img = img.convert("RGBA")
        row, col = ind//3, ind%3
        location = (col*width, row*height) # 放置位置
        background.paste(img, location)	   # 把图片粘贴上去
    return background

看一下对比图

未分割
请添加图片描述
可以看到对于小目标检测的效果还是提高了不少的

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值