def calculate_similarity_on_labels(baseName, checkName): # 1. Match labels global labelNumber scoreSoles = 0 baseXml = os.path.join(xmlDir, baseName) checkXml = os.path.join(xmlDir, checkName) baseObjs = XML.read_objects(baseXml) checkObjs = XML.read_objects(checkXml) for checkObj in checkObjs: if checkObj['name'] in forceFetch: return 0 labelNumber += len(baseObjs) + len(checkObjs) pairs, baseSoles, checkSoles = match_labels(baseObjs, checkObjs) # 2. Calculate similarity of each pair labels which containing roi similarity and location similarity availablePairLenth = len(pairs) # for pair in pairs: # if pair[0]['name'] in ignoreLabels: # availablePairLenth-=1 if availablePairLenth > 0: similarity = pair_similarity(pairs, baseName, checkName) for baseSole in baseSoles: scoreSoles += 1 / weight[baseSole['name']] for checkSole in checkSoles: scoreSoles += 1 / weight[checkSole['name']] print('mother={}+{}+{}'.format(availablePairLenth, scoreSoles, scoreSoles)) similarity = similarity / (availablePairLenth + scoreSoles + scoreSoles) return similarity else: # print(baseSole) # print(checkSole) return 0
def add_new_cates(xmlPath,referPath,addCates): addBoxes=XML.read_objects(referPath) tree = ET.ElementTree(file=xmlPath) root = tree.getroot() root=XML.del_tag(root,addCates) # print(addBoxes) for box in addBoxes: if box['name'] in addCates: root=XML.add_tag(root,box) XML.write_xml(tree,xmlPath)
def filter_by_cate(allXmls, cateName): filteredXmls = [] viewCount = 0 xmlSum = len(allXmls) for xml in allXmls: xmlPath = os.path.join(xmlDir, xml) objs = XML.read_objects(xmlPath) for obj in objs: objName = obj['name'] if objName == cateName: filteredXmls.append(xml) viewCount += 1 sys.stdout.write('\rFiltering xmls >>{count:.2f}%'.format( count=100 * float(viewCount) / xmlSum)) # sys.stdout.write('\r>> Detecting {name} {count:.2f}%'.format(name=videoPath.split('/')[-1],count=(100*float(i)/total_frames))) sys.stdout.flush() return filteredXmls
def analyze_xml(path): objs = XML.read_objects(path) #print(objs) for obj in objs: name = obj['name'] ''' if name in ['、', 'microbus_foreign\n', 'micorbus_foreign', 'car_pickup', 'truck_foregin', 'suv_foreign']: print(path) print(obj) exit() ''' if name not in count.info: count.addtag(name) else: count.update(name) count.count() xmin = int(obj['xmin']) ymin = int(obj['ymin']) xmax = int(obj['xmax']) ymax = int(obj['ymax']) w = xmax - xmin h = ymax - ymin scale = round(np.sqrt(w * h)) nn = int(scale / 25) + 1 scale = nn * 25 ''' if scale >2000: print(path) print(obj) exit() ''' if scale not in count2.info: count2.addtag(scale) else: count2.update(scale) count2.count()
labelXmlDir = r'/disk2/hao.yang/project/Qin/data/imgs/isle/modelxml_isle_17117_havered/' # checkedDir='/disk2/hao.yang/project/Qin/data/xmls/checkout/complete' attentionNames = ['red'] confuseNames = ['yellow', 'other', 'blue'] count = 0 allChecked = [] # allChecked=[x for x in FILES.get_sorted_files(checkedDir) if ".xml" in x] allXmls = [ x for x in FILES.get_sorted_files(modelXmlDir) if ".xml" in x and x not in allChecked ] for xml in allXmls: labelXmlPath = os.path.join(labelXmlDir, xml) modelXmlPath = os.path.join(modelXmlDir, xml) if os.path.exists(labelXmlPath): labelObjs = XML.read_objects(labelXmlPath) modelObjs = XML.read_objects(modelXmlPath) newObjs = [] for labelObj in labelObjs: if labelObj['name'] in confuseNames: newObjs.append(fuse(labelObj, modelObjs)) else: newObjs.append(labelObj) tree = ET.ElementTree(file=labelXmlPath) root = tree.getroot() XML.del_all_tag(root) for box in newObjs: root = XML.add_tag(root, box) XML.write_xml(tree, labelXmlPath) # FILES.copy_files_refer_dir(imgDir,'.jpg',badDir,badDir)
# font_label = ImageFont.truetype('/DATACENTER2/yh/resources/heiti.TTF',50) # img_PIL = Image.fromarray(cv2.cvtColor(image,cv2.COLOR_BGR2RGB)) # cv2==>PIL # draw = ImageDraw.Draw(img_PIL) # draw.text((xmin,ymax-50),label_name,font_color,font=font_label) # image = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR) # PIL==>cv2 # img_PIL = Image.fromarray(cv2.cvtColor(image,cv2.COLOR_BGR2RGB)) # cv2==>PIL # draw = ImageDraw.Draw(img_PIL) # image = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR) # PIL==>cv2 return image if __name__ == "__main__": start = time.time() jpgDir = r"/disk2/hao.yang/project/Qin/data/xmls/isle/complete/imgs_overlook_16000_test/" xmlDir = r"/disk2/hao.yang/project/Qin/data/xmls/isle/complete/isle_FMXX_test_16000/" outDir = r"/disk2/hao.yang/project/Qin/data/xmls/isle/complete/imgs_overlook_16000_test_truth/" FILES.rm_mkdir(outDir) allJpgs = FILES.get_files(jpgDir) for jpg in allJpgs: # print(jpg) if '.jpg' in jpg: jpgPath = os.path.join(jpgDir, jpg) xmlPath = os.path.join(xmlDir, jpg.split('.')[0] + '.xml') objs = XML.read_objects(xmlPath) image = cv2.imread(jpgPath) img = drawXml(image, objs) desImg = os.path.join(outDir, jpg) cv2.imwrite(desImg, img) # extraFrames(davDir,mp4Dir)