DDR糖网数据集处理程序

我要做一个糖网转诊(二分类)算法,但是DDR数据集中所有类别图片都混在一个文件夹中了。现在我打算根据类别分到两个分件夹中。
在这里插入图片描述

-train#原本数据集
  --pic0
  --pic1
  --pic2
  --pic3
  --pic4
  
-trian#目标数据集格式

  --class0
    --pic0
    --pic1
    
  --class1  
    --pic2
    --pic3
    --pic4

文件读取

txt文件内容如下,将其读成列表,根据后面的类别信息(0,1,2,3,4…)分类
在这里插入图片描述

def read_file(filename):
	#将txt中的数据读取出来
    f=open(filename,encoding='utf-8')
    data=f.readlines()
    f.close()
    return data

将读取的数据根据类别进行分类

def str_trasfer_list(data):
    list0=[]#类别0
    list1=[]#类别1
#循环列表
    for lines in data:
        lines=lines.strip('\n')
        lines=lines.split(' ')
        if lines[1] =="0":
            list0.append(lines[0])
        if lines[1] =="1":
            list0.append(lines[0])
        if lines[1] =="2":
            list1.append(lines[0])   
        if lines[1] =="3":
            list1.append(lines[0])
        if lines[1] =="4":
            list1.append(lines[0])  
    
    return list0,list1

对图像进行预处理切除黑色边缘

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

def cut(path):
    image = path  # 文件夹目录
    img = cv2.imread(image)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    retval, thresh = cv2.threshold(gray, 20, 255, cv2.THRESH_BINARY)

    kernel = np.ones((5, 5), np.uint8)
    binary = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=5)

    contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    for cont in contours:
        # 外接矩形
        x, y, w, h = cv2.boundingRect(cont)
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 0), 1)

    img1 = img[y:(y + h), x:(x + w)]

    TURN = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
    image = Image.fromarray(TURN)
    return image

图片保存

def save_image(classes,pathes):
    for i in range(len(classes)):  
        path_read = os.path.join(path,classes[i])
#         print(path_read)
        path_save = os.path.join(pathes,classes[i])
#         print(path_save)
        cut(path_read).save(path_save)

函数调用

写的比较啰嗦,但是懒得改了

data=read_file(r'E:\2DR\DR datasets\DDR dataset\DDR-dataset\DR_grading\valid.txt')
# data=read_file(r'1.txt')
class0=str_trasfer_list(data)[0]
class1 = str_trasfer_list(data)[1]
path = r"E:\2DR\DR datasets\DDR dataset\DDR-dataset\DR_grading\valid"
path0 = r"E:\2DR\DR datasets\DDR dataset\project\valid\0"
path1 = r"E:\2DR\DR datasets\DDR dataset\project\valid\1"

save_image(class0,path0)
save_image(class1,path1)
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NAND_LU

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

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

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

打赏作者

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

抵扣说明:

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

余额充值