def add_match(self, page, match): # l('ADDING ' + str(match)) info = RangeMatch(self, page, match) # l(info) pageno = page.info['number'] pagenoval = rnum_to_int(pageno) if pagenoval == 0 and len(pageno) > 0: pagenoval = int(pageno) matchint = Interval.between(match.b, match.b + match.size) overlaps = [m for m in self.matches if m & matchint] # if nearnos matches either, mark flag and amp score if pageno: nearnos = self.find_nearnos(match) # l("GREPME near is [%s] pagenoval %s" % (nearnos, pagenoval)) # for no in nearnos[1], nearnos[0]: if nearnos is None: # XXX SHOULDN"T BE NEEDED!!!!!!!!!!!! nearnos = [] for no in nearnos[1], nearnos[0]: # for no in nearnos: if no is not None: # l(no.val) if no.val == pagenoval: info.notes += 'nearno: %s' % pageno # l("GOODMATCH tc %s, %s %s" % (self.page.index, pageno, self.score)) self.score += 1 info.nearno = no.word_index break if no.val > pagenoval - 10 and match.a < 10: self.score += .01 break # cases: no overlap if len(overlaps) == 0: self.matchinfo[matchint] = info self.matches = self.matches + IntervalSet([matchint]) else: start = match.b end = match.b + match.size for i in overlaps: oinfo = self.matchinfo[i] ostart = oinfo.match.b oend = oinfo.match.b + oinfo.match.size scootback = 0 if ostart < start: scootback = start - ostart start = ostart if oend > end: end = oend info.match = Match(info.match.a - scootback, start, end - start) if oinfo.nearno != -1: # assert(info.nearno == -1) info.nearno = oinfo.nearno # info.score += oinfo.score # info.pageno = oinfo.pageno # info.notes = info.notes + ' ' + info.notes # for opageno in oinfo.pagenos: # opagecount = oinfo.pagenos[opageno] # if opageno in info.pagenos: # info.pagenos[opageno] += opagecount # else: # info.pagenos[opageno] = opagecount self.matches += IntervalSet([matchint]) (new_i,) = [m for m in self.matches if m & matchint] self.matchinfo[new_i] = info
import cv2 from pathlib import Path from interval import Interval import os select_dic = {'camera3': [20200917], 'camera26': [20200916, 20200918]} root_dir = 'C:/camera7/video_clips' video_dir = Path(root_dir) for camera_dir in video_dir.iterdir(): if camera_dir.name in select_dic.key(): time_interval_list = [] for date in select_dic[camera_dir.name]: # 采集时间为上午六点,到下午七点(13个小时) start_time, end_time = str(date - 1) + '2200', str(date) + '1100' time_interval = Interval.between(int(start_time), int(end_time)) time_interval_list.append(time_interval) select_time = IntervalSet(time_interval_list)
def add_match(self, page, match): # l('ADDING ' + str(match)) info = RangeMatch(self, page, match) # l(info) pageno = page.info['number'] pagenoval = rnum_to_int(pageno) if pagenoval == 0 and len(pageno) > 0: pagenoval = int(pageno) matchint = Interval.between(match.b, match.b + match.size) overlaps = [m for m in self.matches if m & matchint] # if nearnos matches either, mark flag and amp score if pageno: nearnos = self.find_nearnos(match) # l("GREPME near is [%s] pagenoval %s" % (nearnos, pagenoval)) # for no in nearnos[1], nearnos[0]: if nearnos is None: # XXX SHOULDN"T BE NEEDED!!!!!!!!!!!! nearnos = [] for no in nearnos[1], nearnos[0]: # for no in nearnos: if no is not None: # l(no.val) if no.val == pagenoval: info.notes += 'nearno: %s' % pageno # l("GOODMATCH tc %s, %s %s" % (self.page.index, pageno, self.score)) self.score += 1 info.nearno = no.word_index break if no.val > pagenoval - 10 and match.a < 10: self.score += .01 break # cases: no overlap if len(overlaps) == 0: self.matchinfo[matchint] = info self.matches = self.matches + IntervalSet([matchint]) else: start = match.b end = match.b + match.size for i in overlaps: oinfo = self.matchinfo[i] ostart = oinfo.match.b oend = oinfo.match.b + oinfo.match.size scootback = 0 if ostart < start: scootback = start - ostart start = ostart if oend > end: end = oend info.match = Match(info.match.a - scootback, start, end - start) if oinfo.nearno != -1: # assert(info.nearno == -1) info.nearno = oinfo.nearno # info.score += oinfo.score # info.pageno = oinfo.pageno # info.notes = info.notes + ' ' + info.notes # for opageno in oinfo.pagenos: # opagecount = oinfo.pagenos[opageno] # if opageno in info.pagenos: # info.pagenos[opageno] += opagecount # else: # info.pagenos[opageno] = opagecount self.matches += IntervalSet([matchint]) (new_i, ) = [m for m in self.matches if m & matchint] self.matchinfo[new_i] = info
# coding: utf-8 # __author__: "" from interval import Interval, IntervalSet volume1 = Interval.between("A", "Foe") volume2 = Interval.between("Fog", "McAfee") volume3 = Interval.between("McDonalds", "Space") volume4 = Interval.between("Spade", "Zygote") encyclopedia = IntervalSet([volume1, volume2, volume3, volume4]) mySet = IntervalSet([volume1, volume3, volume4]) "Meteor" in encyclopedia "Goose" in encyclopedia "Goose" in mySet volume2 in (encyclopedia ^ mySet) print [(_.lower_bound, _.upper_bound) for _ in IntervalSet(encyclopedia)] OfficeHours = IntervalSet.between("08:00", "17:00") myLunch = IntervalSet.between("11:30", "12:30") myHours = IntervalSet.between("08:30", "19:30") - myLunch myHours.issubset(OfficeHours) "12:00" in myHours "15:30" in myHours