1.瞎扯
本来进行目标检测,比较顺利,导师(****************************)要求求出实际边缘,传统的Canny算子无法很好的解决随尝试CPD。论文上传了不知道怎么搞,尝试自己下载或联系lotove.liu@hotmail.com
2.我的数据示例
上图是我的原始数据示例,按照老师的思路是把每个快递包裹扣出求得groundtruth,如下:
image:
gt:
为此做了如下工作:
1.标注转换
为求得mask我们的标注格式为:
但为扣出包裹应该为(不知道是否正确,若您知道,请联系我,万分感谢!):
代码为:
'''
整理json数据,将不符合的标签删除,将全贴合多边形转换为矩形框
'''
import json
import re
import os
import numpy as np
def main():
# parser = argparse.ArgumentParser()
# parser.add_argument('json_file') # 标注文件json所在的文件夹
# parser.add_argument('-o', '--out', default=None)
# args = parser.parse_args()
json_file = 'f:\\CPD_DATA\\data\\train\\gt_json'
save_dir = 'f:\\CPD_DATA\\data\\train\\image_json\\'
list = os.listdir(json_file) # 获取json文件列表
for i in range(0, len(list)):
path = os.path.join(json_file, list[i]) # 获取每个json文件的绝对路径
filename = list[i][:-5] # 提取出.json前的字符作为文件名,以便后续保存Label图片的时候使用
extension = list[i][-4:]
if extension == 'json':
if os.path.isfile(path):
data = json.load(open(path))
shapes = data['shapes']
'''
#清理不和规范标签,可忽略
change_shapes = []
for j in range(len(shapes)):
label_value = shapes[j]['label']
if re.match('lab', label_value) is not None:
print('{} is deleted'.format(label_value))
elif re.match('bil', label_value) is not None:
print('{} is deleted'.format(la