ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

labelme标准数据并抠图

2022-08-08 00:33:01  阅读:211  来源: 互联网

标签:ROI name img mask 标准 json file labelme 数据


import json
import numpy as np
from labelme import utils
import cv2
import os
 
def create_file(file):
 
    if not os.path.exists(file):
        os.mkdir(file)
 
def cv_show(name,img):
 
    cv2.imshow(name,img)
    cv2.waitKey()
    cv2.destroyAllWindows()
 
def from_mask_extract_ROI(img,mask):
 
    y = np.where(mask==1)[0]
    x = np.where(mask==1)[1]
    lu_y = min(y)
    ld_y = max(y)
    ru_x = min(x)
    rd_x = max(x)
    mask_ROI = mask[lu_y:ld_y+1,ru_x:rd_x+1]
    ROI = img[lu_y:ld_y+1,ru_x:rd_x+1]
    mask = np.ones_like(ROI)
    for i in range(mask.shape[2]):
        mask[:,:,i] = mask_ROI
    masked_ROI = mask*ROI
    channel_reverse = np.ones_like(masked_ROI)
    for i in range(channel_reverse.shape[2]):
        channel_reverse[:,:,-1-i] = masked_ROI[:,:,i]
    return channel_reverse
 
def from_json_extract_ROI_based_label(file):
    file_list = os.listdir(file)
 
    json_file = []
    for idx, value in enumerate(file_list):
        if value.split('.')[-1] == 'json':
            json_name = os.path.join(file, value)
            json_file.append(json_name)
    for idx, value in enumerate(json_file):
        json_name = value
        data = json.load(open(json_name))
        img = utils.img_b64_to_arr(data['imageData'])
        lbl, lbl_name = utils.labelme_shapes_to_label(img.shape, data['shapes'])
 
        mask = []
        for i in range(1, len(lbl_name)):
            mask.append((lbl == i).astype(np.uint8))
        mask = np.transpose(np.asarray(mask, np.uint8), [1, 2, 0])
 
        keys = []
        values = []
        for value, key in enumerate(lbl_name):
            key = key.split('.')[0]
            keys.append(key)
            values.append(value)
        labels = []
        for i in range(1, len(values)):
            labels.append(keys[i])
 
        for i in range(mask.shape[2]):
            a = mask[:, :, i]
            masked_ROI_ChannelRevrse = from_mask_extract_ROI(img=img,mask=a)
            save_file = str(labels[i])
            create_file(save_file)
            save_ROI = './' + save_file + '/' + json_name.split('/')[-1].split('.json')[0] + '.' + str(i) + '.jpg'
            cv2.imwrite(save_ROI, masked_ROI_ChannelRevrse)
 
from_json_extract_ROI_based_label(file='./test/')

标签:ROI,name,img,mask,标准,json,file,labelme,数据
来源: https://www.cnblogs.com/douzujun/p/16560329.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有