Как оптимизировать цикл - PullRequest
       3

Как оптимизировать цикл

0 голосов
/ 10 февраля 2019

Я использую цикл for для фильтрации совпадений из opencv knnFlann matcher, но мне нужно его оптимизировать

Код:

def orb_calc_matches(matches, distance_range=0.65):
    good_matches = []
    queried_matches = []

    for i in range(len(matches)):
        if len(matches[i]) == 2:
            if ((matches[i][0].trainIdx not in queried_matches) and (matches[i][0].distance < distance_range * matches[i][1].distance)):
                good_matches.append(matches[i][0])
                queried_matches.append(matches[i][0].trainIdx)
    return good_matches

может что-нибудьпредложить, какой более эффективный способ сделать это?

1 Ответ

0 голосов
/ 11 февраля 2019

Марка queried_matches а set.И используйте for m in matches: вместо индексированного цикла, так как индексы не нужны.

def orb_calc_matches(matches, distance_range=0.65):
    good_matches = []
    queried_matches = set()

    for m in matches:
        if len(m) == 2:
            if ((m[0].trainIdx not in queried_matches) and
                (m[0].distance < distance_range * m[1].distance)):
                good_matches.append(m[0])
                queried_matches.add(m[0].trainIdx)
    return good_matches
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...