class TestRunner(object): resDirectory = Config.get('PATHS', 'resDir') photoDirectory = Config.get('PATHS', 'photoDir') logoDirectory = Config.get('PATHS', 'logoDir') def __init__(self): self.detector, self.matcher = init('sift', False) def testPrepare(self, imgPath): kp, desc = prepare(imgPath, self.detector, 960, 720) print kp, desc print 'Preparing DONE' def testSerialize(self, imgPath): kp, desc = prepare(imgPath, self.detector, 960, 720) print 'Preparing DONE' print '... serialize kp' serialize(kp, 'test_serial_kp.pick') print '... serialize desc' serialize(desc, 'test_serial_desc.pick') print 'Serializing DONE' print '... unserialize kp' kp2 = unserialize('test_serial_kp.pick') print '... unserialize desc' desc2 = unserialize('test_serial_desc.pick') print 'Unserializing DONE'
def runAll(img, imgPath, N): ''' Поиск в изображении image логотипов возвращает первые N самых релевантных логотипов по img или imgPath :param img - изображение, в котором будет производится поиск логотипов :param imgPath - путь до изображения, в котором будет производится поиск логотипов :param N - количество возвращаемых логотипов :return [<Result>, ...] ''' if not img and not imgPath: raise Exception('img and imgPath is None') detector, matcher = init('sift', False) if imgPath: kp2, desc2 = prepare(imgPath, detector, Config.get('PHOTOS', 'w'), Config.get('PHOTOS', 'h')) else: kp2, desc2 = prepareByFile(img, detector, Config.get('PHOTOS', 'w'), Config.get('PHOTOS', 'h')) logoObjects = getAllLogos() bestLogoObjectByCompany = None bestLogoObjects = [] for logoObject in logoObjects: print logoObject['photoPath'] print 'GET SERIAL DATA' kp1, desc1 = getSearialData(logoObject['kpFilePath'], logoObject['descFilePath']) print 'MATCHING' result = match(kp1, desc1, kp2, desc2, detector, matcher) print 'RESULT' print result logoObject['result'] = result logoObject['runk'] = getRunk(logoObject['result']['res'], logoObject['result']['inliers'], logoObject['result']['matched']) print 'RUNK = %s' % logoObject['runk'] if not logoObject['runk'] == 0: if bestLogoObjectByCompany: if logoObject['companyId'] == bestLogoObjectByCompany[ 'companyId']: if logoObject['runk'] > bestLogoObjectByCompany['runk']: bestLogoObjectByCompany = logoObject else: addResult(bestLogoObjects, bestLogoObjectByCompany, N) bestLogoObjectByCompany = logoObject else: bestLogoObjectByCompany = logoObject if bestLogoObjectByCompany: addResult(bestLogoObjects, bestLogoObjectByCompany, N) result = [ Result(logo['logoId'], logo['companyId'], logo['photoPath']) for logo in bestLogoObjects ] return result
def runAll (img, imgPath, N): ''' Поиск в изображении image логотипов возвращает первые N самых релевантных логотипов по img или imgPath :param img - изображение, в котором будет производится поиск логотипов :param imgPath - путь до изображения, в котором будет производится поиск логотипов :param N - количество возвращаемых логотипов :return [<Result>, ...] ''' if not img and not imgPath: raise Exception('img and imgPath is None') detector, matcher = init('sift', False) if imgPath : kp2, desc2 = prepare(imgPath, detector, Config.get('PHOTOS','w'), Config.get('PHOTOS','h')) else : kp2, desc2 = prepareByFile(img, detector, Config.get('PHOTOS','w'), Config.get('PHOTOS','h')) logoObjects = getAllLogos() bestLogoObjectByCompany = None bestLogoObjects = [] for logoObject in logoObjects: print logoObject['photoPath'] print 'GET SERIAL DATA' kp1, desc1 = getSearialData(logoObject['kpFilePath'],logoObject['descFilePath']) print 'MATCHING' result = match(kp1, desc1, kp2, desc2, detector, matcher) print 'RESULT' print result logoObject['result'] = result logoObject['runk'] = getRunk(logoObject['result']['res'], logoObject['result']['inliers'], logoObject['result']['matched']) print 'RUNK = %s' % logoObject['runk'] if not logoObject['runk'] == 0: if bestLogoObjectByCompany: if logoObject['companyId'] == bestLogoObjectByCompany['companyId']: if logoObject['runk'] > bestLogoObjectByCompany['runk']: bestLogoObjectByCompany = logoObject else: addResult(bestLogoObjects, bestLogoObjectByCompany, N) bestLogoObjectByCompany = logoObject else: bestLogoObjectByCompany = logoObject if bestLogoObjectByCompany: addResult(bestLogoObjects, bestLogoObjectByCompany, N) result = [Result(logo['logoId'], logo['companyId'], logo['photoPath']) for logo in bestLogoObjects] return result