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

看一下对比图

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

猜你喜欢

转载自blog.csdn.net/Destiny_xt/article/details/121795537