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)           
Exemple #3
0
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)
Exemple #6
0
        # 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)