#[labelme的mask路径] [coco的json路径] [影像路径]
python zhuanhuan.py C:/Users/Desktop/testdata/fengetest/mask/ C:/Users/Desktop/testdata/fengetest/ C:/Users/Desktop/testdata/fengetest/image
# -*- coding: utf-8 -*-
import glob
import os
import cv2
import json
import io
import sys
args = sys.argv
print(" [Info]_coco to labelme",flush=True)
labelme_path = args[1]
coco_json_path = args[2]
jpg_path = args[3]
i_path = 4
class_list = []
for i in range(len(args)) :
if i_path < len(args):
class_list.append(args[i_path])
i_path = i_path + 1
coco = str(class_list)
'''
labelme_path='C:/Users/qiaomengyu/Desktop/testdata/fengetest/mask/'
coco_json_path = 'C:/Users/qiaomengyu/Desktop/testdata/fengetest/'
jpg_path='C:/Users/qiaomengyu/Desktop/testdata/fengetest/image'
coco=["ship", "sar_ship", "plane"]'''
label=dict()
for idx,item in enumerate(coco):
label.update({idx:item})
coco_json=glob.glob(os.path.join(coco_json_path,"*.json"))[0]
file_json = io.open(coco_json,'r',encoding='utf-8')
m_json_data = file_json.read()
m_data = json.loads(m_json_data)
#m_type=m_data['type']
jishu = 0
jindu_int = 0
jindu_flag = 0
for item in m_data['images']:
jindu_int = int((jishu/int(len(m_data['images'])))*100)
if jindu_int > jindu_flag:
print('[Percent]_'+str(jindu_int)+'%',flush=True)
jindu_flag = jindu_int
jishu = jishu +1
flag=False
m_images_file_name = item['file_name']
(filename_path, m_filename) = os.path.split(m_images_file_name)
(m_name, extension) = os.path.splitext(m_filename)
m_image=cv2.imread(os.path.join(jpg_path,m_name+".jpg"))
m_images_height = item['height']
m_images_width = item['width']
m_images_id = item['id']
data = {}
data['imagePath'] = m_filename
data['flags'] = {}
data['imageWidth'] = m_images_width
data['imageHeight'] = m_images_height
data['imageData'] = None
data['version'] = "5.0.1"
data["shapes"] = []
for annit in m_data['annotations']:
m_image_id=annit['image_id']
m_category_id=annit['category_id']
if m_image_id==m_images_id:
flag = True
for segitem in annit['segmentation']:
points = []
for idx in range(0,len(segitem),2):
x,y=segitem[idx],segitem[idx+1]
if str(x).isalpha() or str(y).isalpha():
flag = False
break
points.append([x,y])
itemData = {'points': []}
if len(points)==0:
flag = False
break
itemData['points'].extend(points)
itemData["flag"] = {}
itemData["group_id"] = None
itemData["shape_type"] = "polygon"
itemData["label"] =label[m_category_id-1]
data["shapes"].append(itemData)
if flag:
jsonName = ".".join([m_name, "json"])
jpgName = ".".join([m_name, "jpg"])
#print(labelme_path, jsonName)
jsonPath = os.path.join(labelme_path, jsonName)
jpgPath = os.path.join(labelme_path, jpgName)
with open(jsonPath, "w") as f:
json.dump(data, f)
cv2.imwrite(jpgPath,m_image)
#print("加载入文件完成...")
print('[Percent]_100%',flush=True)