Exemple #1
0
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'
Exemple #2
0
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
Exemple #3
0
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