第一步:
# -*- coding:utf8 -*-
import os
json_folder = r"D:\ai\UNetTraining_SingleSpermSelection\train"
# 获取文件夹内的文件名
FileNameList = os.listdir(json_folder)
# 激活labelme环境
os.system("activate labelme")
for i in range(len(FileNameList)):
# 判断当前文件是否为json文件
if (os.path.splitext(FileNameList[i])[1] == ".json"):
json_file = json_folder + "\\" + FileNameList[i]
# 将该json文件转为png
os.system("labelme_json_to_dataset " + json_file)
第二步:
import os
import shutil
# 定义源目录和目标目录
source_dir = r"D:\ai\UNetTraining_SingleSpermSelection\dir_output"
target_dir_img = r"D:\ai\UNetTraining_SingleSpermSelection\finally_output\img"
target_dir_mask = r"D:\ai\UNetTraining_SingleSpermSelection\finally_output\mask"
# 获取目录中的所有文件夹名称
dir_names = os.listdir(source_dir)
for dir_name in dir_names:
# 构建完整的文件夹路径
full_dir_path = os.path.join(source_dir, dir_name)
# 分割文件夹名称以获取新文件名的一部分
parts = dir_name.split('_')
new_file_base = '_'.join(parts[:9])
# 定义新的文件名
new_img_name = f"{new_file_base}.png"
new_mask_name = f"{new_file_base}.bmp"
# 定义原始和新的文件路径
old_img_path = os.path.join(full_dir_path, "img.png")
old_mask_path = os.path.join(full_dir_path, "label.png")
new_img_path = os.path.join(full_dir_path, new_img_name)
new_mask_path = os.path.join(full_dir_path, new_mask_name)
try:
# 重命名文件
os.rename(old_img_path, new_img_path)
os.rename(old_mask_path, new_mask_path)
# 移动文件到最终输出目录
shutil.move(new_img_path, target_dir_img)
shutil.move(new_mask_path, target_dir_mask)
except Exception as e:
print(f"Error processing {dir_name}: {e}")
第三步:
import cv2
import numpy as np
import scipy
import os
path_save_png = r"D:\ai\UNetTraining_SingleSpermSelection\finally_output\mask"
for im in os.listdir(path_save_png):
img = cv2.imread(os.path.join(path_save_png, im))
b, g, r = cv2.split(img)
r[np.where(r != 0)] = 255
cv2.imwrite(os.path.join(path_save_png, im), r)