四、将语义分割图像先裁剪后拼接

将语义分割图像先裁剪后拼接

裁剪:

from PIL import Image
img = Image.open('/home/dio/VSST/zqz/python_handle/image_cut/Remote_sensing_segmentation/top_potsdam_2_10_RGB.tif')
print('图片的大小为: {}'.format(img.size))
print('将图片切分成等四份,4张 1500 X 1500 的图片')
size = 3000 #图片大小都为600,所以只设置一个变量
left = 0 #图片距离左边的宽度乘积值
shang = 0 #图片距离上边的宽度乘积值
index = 0 #图片名
for i in range(4):
    if i == 2:
        shang += 1
        left = 0
    a = size * left # 图片距离左边的大小
    b = size * shang # 图片距离上边的大小
    c = size * (left + 1) # 图片距离左边的大小 + 图片自身宽度
    d = size * (shang + 1) # 图片距离上边的大小 + 图片自身高度
    print('a= {},b= {},c= {}, d= {}'.format(a,b,c,d))
    croping = img.crop((a,b,c,d))
    croping.save('/home/dio/VSST/zqz/python_handle/image_cut/cut/'+ str(index) + '.jpg')
    index += 1
    left += 1

拼接:

from PIL import Image

imgname = 0

def Splicing(imgs):
    print('------------Splicing-------------')
    target = Image.new('RGB', (size * 2, size * 1))  # 拼接前需要写拼接完成后的图片大小 1200*600
    for i in range(len(imgs)):
        a = size * i  # 图片距离左边的大小
        b = 0  # 图片距离上边的大小
        c = size * (i + 1)  # 图片距离左边的大小 + 图片自身宽度
        d = size  # 图片距离上边的大小 + 图片自身高度
        target.paste(imgs[i], (a, b, c, d))
        global imgname
        print('拼接图片的路径为:', path1 + str(imgname) + '.jpg')
        target.save(path1 + str(imgname) + '.jpg')
        imgname += 1


def Overall_splicing():
    print('------------Overall_splicing-------------')
    # 取1,3是因为每行拼接完整都是最后那个,第一行是0,1命名,第二行是2,3命名,所以取后面那个值
    imglist = [1, 3]
    img = []
    for i in imglist:
        print('完整行的拼接路径为:' + path1 + str(i) + '.jpg')
        img.append(Image.open(path1 + str(i) + '.jpg'))
        target = Image.new('RGB', (size * 2, size * 2))  # 拼接前需要写拼接完成后的图片大小 6000*6000
        for i in range(len(img)):
            a = 0  # 图片距离左边的大小
            b = size * i  # 图片距离上边的大小
            c = size * 2  # 图片距离左边的大小 + 图片自身宽度
            d = size * (i + 1)  # 图片距离上边的大小 + 图片自身高度
            target.paste(img[i], (a, b, c, d))
            global imgname
            target.save(path1 + 'Splicing' + '.jpg')


if __name__ == '__main__':
    size = 3000  # 图片的宽高都为3000像素
    path = '/home/dio/VSST/zqz/python_handle/image_cut/cut/'  # 存放要拼接图片的目录
    path1 = '/home/dio/VSST/zqz/python_handle/image_cut/concat/'  # 拼接后图片的存放目录
    index = 0  # 图片的名字
    for i in range(2):  # 有两行,所以需要循环两次
        images = []  # 每一次拼接只能一行一行拼接,不能在第一行拼接完后再在其基础上拼接第二行的图片,矩阵不允许这样操作
        for j in range(2):  # 每行有两张图片,所以也要循环两次
            print(path + str(index) + '.jpg')
            images.append(Image.open(path + str(index) + '.jpg'))
            index += 1
        print('第 {} 行拼接完成'.format(i))
        Splicing(images)
    Overall_splicing()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值