Я определил функцию ниже, которая выбрала 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