def analyzeFrame(self, rects): self.pruneFaceList() #Case 1 # if len(rects)>len(self.visibleFaceList): # print "case1" if len(self.visibleFaceList)>0: megaList, breakPoint = self.dualListHelper(self.visibleFaceList, self.notVisibleFaceList, rects) assignmentList = [-1]*(len(self.visibleFaceList)+len(self.notVisibleFaceList)) totalAssigned=0 visibleFaces = len(self.visibleFaceList) totalFaces = len(self.visibleFaceList)+len(self.notVisibleFaceList) indices = [] while totalAssigned < len(rects): # print "WHILE" # print len(rects) index = 0 highest = 0 highFaceIndex = 0 for i in range(len(megaList)): if assignmentList[i] == -1: currentVal = max(megaList[i]) # print currentVal currentIndex = megaList[i].index(currentVal) # print currentIndex not in assignmentList if currentVal > highest and currentIndex not in assignmentList and currentVal > self.minRemovalScore: highest = currentVal index = currentIndex highFaceIndex = i if highest != 0: if highFaceIndex > breakPoint: face = self.notVisibleFaceList.pop(highFaceIndex-breakPoint-1) self.visibleFaceList.append(face) index = len(self.visibleFaceList)-1 assignmentList[highFaceIndex] = currentIndex indices.append(highFaceIndex) totalAssigned +=1 else: print "HIGHEST = 0" for j in range(len(rects)): # print rects if j not in assignmentList: # print "here" face = Face() face.id = self.totalFaceCount self.totalFaceCount += 1 self.visibleFaceList.append(face) assignmentList.append(j) indices.append(len(assignmentList)-1) totalAssigned += 1 # print assignmentList self.makeAssignments(assignmentList,rects, indices, visibleFaces) for i in range(visibleFaces-1): if assignmentList[i] == -1: face = self.visibleFaceList.pop(i) self.notVisibleFaceList.append(face) else: for i in range(len(rects)): self.addNewFace(rects[i])
def addNewFace(self, location): fc = Face() fc.id = self.totalFaceCount self.totalFaceCount += 1 fc.setPosition(location) self.visibleFaceList.append(fc)
def analyzeFrame3(self,rects): self.pruneFaceList() if len(rects)>len(self.visibleFaceList): if len(self.visibleFaceList)>0: megaList = self.listHelper(self.visibleFaceList,rects) # print megaList assignmentList = [] for i in range(len(megaList)): highest = 0 index = 0 for j in range(len(megaList[i])): # ensure that face hasn't been used already if megaList[i][j] >= highest and j not in assignmentList: index = j highest = megaList[i][j] assignmentList.append(index) self.makeAssignments(assignmentList, rects) notList = self.listHelper(self.notVisibleFaceList,rects) if notList != []: for i in range(len(rects)): index = -1 highest = 0 for j in range(len(self.notVisibleFaceList)): if j not in assignmentList: # print notList if notList[i][j] > highest: index = j highest = notList[j][i] if index != -1: if notList[index][i] > self.minRemovalScore: face = self.notVisibleFaceList.pop(index) face.setPosition(rects[i]) self.visibleFaceList.append(face) else: fc = Face() fc.id = self.totalFaceCount # print fc.id self.totalFaceCount += 1 fc.setPosition(rects[i]) self.visibleFaceList.append(fc) else: for i in range(len(rects)): fc = Face() fc.id = self.totalFaceCount # print fc.id self.totalFaceCount += 1 fc.setPosition(rects[i]) self.visibleFaceList.append(fc) else: for i in range(len(rects)): fc = Face() fc.id = self.totalFaceCount # print fc.id self.totalFaceCount += 1 fc.setPosition(rects[i]) self.visibleFaceList.append(fc) elif len(rects)==len(self.visibleFaceList): megaList = self.listHelper(self.visibleFaceList,rects) # print megaList assignmentList = [] for i in range(len(megaList)): highest = 0 index = 0 for j in range(len(megaList[i])): if megaList[i][j] >= highest and j not in assignmentList: index = j highest = megaList[i][j] assignmentList.append(index) self.makeAssignments(assignmentList, rects) else: # less rects than faces megaList = self.listHelper(self.visibleFaceList,rects) # print megaList assignmentList = [] probabilityList = [] for i in range(len(megaList)): highest = 0 index = 0 for j in range(len(megaList[i])): if megaList[i][j] >= highest and j not in assignmentList: index = j highest = megaList[i][j] assignmentList.append(index) probabilityList.append(highest) if len(probabilityList)!=0: lowIndex = probabilityList.index(min(probabilityList)) self.notVisibleFaceList.append(self.visibleFaceList.pop(lowIndex)) assignmentList.pop(lowIndex) self.makeAssignments(assignmentList, rects)
def analyzeFrame2(self, rects): self.pruneFaceList() #Case 1 if len(rects)>len(self.visibleFaceList): # print "case1" if len(self.visibleFaceList)>0: megaList, breakPoint = self.dualListHelper(self.visibleFaceList, self.notVisibleFaceList, rects) assignmentList = [] for i in range(len(megaList)): highest = 0 index = 0 for j in range(len(megaList[i])): # ensure that face hasn't been used already if megaList[i][j] >= highest and j not in assignmentList: index = j highest = megaList[i][j] if highest > self.minRemovalScore: if i > breakPoint: face = self.notVisibleFaceList.pop(i-breakPoint-1) self.visibleFaceList.append(face) index = len(self.visibleFaceList)-1 assignmentList.append(index) else: face = Face() face.id = self.totalFaceCount self.totalFaceCount += 1 self.visibleFaceList.append(face) assignmentList.append(len(self.visibleFaceList)-1) self.makeAssignments(assignmentList, rects) k = 0 while k < breakPoint: if k not in assignmentList: face = self.visibleFaceList.pop(k) self.notVisibleFaceList.append(face) k+=1 else: for i in range(len(rects)): self.addNewFace(rects[i]) #Case 2 elif len(rects)==len(self.visibleFaceList): # print "case2" megaList, breakPoint = self.dualListHelper(self.visibleFaceList, self.notVisibleFaceList, rects) assignmentList = [] # print "list" # print megaList for i in range(len(megaList)): highest = 0 index = 0 for j in range(len(megaList[i])): # ensure that face hasn't been used already if megaList[i][j] >= highest and j not in assignmentList: index = j highest = megaList[i][j] if highest > self.minRemovalScore: # print "problem case?" if i > breakPoint: face = self.notVisibleFaceList.pop(i-breakPoint-1) self.visibleFaceList.append(face) index = len(self.visibleFaceList)-1 assignmentList.append(index) else: face = Face() face.id = self.totalFaceCount self.totalFaceCount += 1 self.visibleFaceList.append(face) assignmentList.append(len(self.visibleFaceList)-1) self.makeAssignments(assignmentList, rects) k = 0 while k < breakPoint: if k not in assignmentList: face = self.visibleFaceList.pop(k) self.notVisibleFaceList.append(face) k+=1 #Case 3 (less rects than faces) else: # print "case3" megaList, breakPoint = self.dualListHelper(self.visibleFaceList, self.notVisibleFaceList, rects) assignmentList = [] probabilityList = [] for i in range(len(megaList)): highest = 0 index = 0 for j in range(len(megaList[i])): # ensure that face hasn't been used already if megaList[i][j] >= highest and j not in assignmentList: index = j highest = megaList[i][j] probabilityList.append(highest) if highest > self.minRemovalScore: if i > breakPoint: face = self.notVisibleFaceList.pop(i-breakPoint-1) self.visibleFaceList.append(face) index = len(self.visibleFaceList)-1 assignmentList.append(index) else: face = Face() face.id = self.totalFaceCount self.totalFaceCount += 1 self.visibleFaceList.append(face) assignmentList.append(len(self.visibleFaceList)-1) self.makeAssignments(assignmentList, rects) k = 0 while k < breakPoint: if k not in assignmentList: face = self.visibleFaceList.pop(k) self.notVisibleFaceList.append(face) k+=1 l = 0