单目标分割标签图叠加代码

本代码只适合两个图片合并,如果出现三个图片合并,就将第三个图删除,先合并一次,然后再将图片加入,再合并一次

1. 问题背景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有的时候标签有多个,需要将两张或者是多张图象叠加在一起,成为以下情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 解决思路

  1. 遍历文件夹中所有图片
  2. 寻找具有相同文件名(前多少字相同)的图片
  3. 使用Image读取,转化为Numpy格式,进行数值相加
  4. 将Numpy格式转化为Image格式,然后保存
  5. 删除原始合并图象

3. 代码

'''
Descripttion: 
Result: 
Author: Philo
Date: 2023-10-10 15:24:46
LastEditors: Philo
LastEditTime: 2023-10-10 21:36:05
'''
from PIL import Image
import os
import numpy as np

# 设置图片文件夹路径
folder_path = 'Your_flod'

# 获取文件夹中的所有图片文件名
image_names = os.listdir(folder_path)
# image_files.sort()  # 确保文件按名称排序

def merge(first_img, second_img):
    fir_np = np.array(first_img)
    sec_np = np.array(second_img)
    # print(np.unique(fir_np), np.unique(sec_np)) 
    if len(fir_np.shape)==3:
        fir_np = np.array(first_img)[:,:,0]
    if len(sec_np.shape)==3:
        sec_np = np.array(second_img)[:,:,0]
    merge_np =  fir_np + sec_np
    merge_img = Image.fromarray(merge_np.astype("uint8"), mode="L")
    return merge_img

current_name = image_names[0]
for next_name in image_names[1:]:
    current_path = os.path.join(folder_path, current_name)
    next_path = os.path.join(folder_path, next_name)
        
    # 如果前一张图片为空或者当前图片名称的前..个字符与前一张不同,则跳过
    if  current_name[:18] == next_name[:18]:
        # 打开前一张图片和当前图片
        current_img = Image.open(current_path).convert('L')
        next_img = Image.open(next_path).convert('L')
        
        # 将两张图片进行数值相加
        save_img = merge(current_img, next_img)
        
        # 保存合并后的图片并删除当前图片
        # save_img.save("result/"+current_name) # 解开注释,将合并图象单独拎出来看
        save_img.save(current_path)
        os.remove(next_path)
    current_name = next_name

本代码只适合两个图片合并,如果出现三个图片合并,就将第三个图删除,先合并一次,然后再将图片加入,再合并一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Philo`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值