интерактивный подборщик в python plt.ginput - PullRequest
0 голосов
/ 31 марта 2020

Я определил функцию ниже, которая выбрала N точек на изображении. Теперь мне нужно определить строку выбора. В данный момент я выбираю точку A и точку B, используя приведенную ниже процедуру, я перевожу их координаты в координаты c homographi и беру перекрестное произведение.

Пока все хорошо.

В некоторых случаях ошибка выбора может быть уменьшена за счет использования линий. Подумайте об изображении с рельсом в перспективе. Легко выбрать точку рельса в ближнем поле. Но трудно взять точку на рельсе рядом с точкой схода. Как следствие, когда вы берете перекрестный продукт, вы получаете линию n, которая из-за ошибки выбора не соответствует рельсу

Было бы здорово, если бы я мог сначала выбрать точку на рельсе в ближнее поле (легкая задача). Затем переместите мышь к точке схода. При этом рисуется «временная линия», соединяющая ранее выбранную точку и текущую позицию курсора мыши. Когда курсор мыши находится почти на точке схода, когда временная линия совпадает с рельсом, я снова щелкаю мышью, выбирая точку. Таким образом, ошибка выбора была бы намного ниже.

Надеюсь, я был ясен.

Знаете ли вы, существует ли интерактивная функция, делающая это?

Спасибо

def select_points (img, N_points): tellme ('Нажмите, чтобы начать') plt.imshow (img)

plt.waitforbuttonpress()
pts = []
while True:

    while len(pts) < N_points:
        tellme('Select {} points'.format(N_points))
        pts = np.asarray(plt.ginput(N_points, timeout=-1))
        if len(pts) < N_points:
            tellme('Too few points, starting over')
            time.sleep(1)  # Wait a second

    tellme('Key click to confirm')

    if plt.waitforbuttonpress():
        break

return pts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...