как дела? Мне нужна помощь. Я читаю изображение, затем отображаю его, затем нажимаю две точки на изображении, скажем: p1 и p2. Теперь я хочу нарисовать линии (если возможно, стрелки), показывающие, что это векторы, ортогональные плоскости земли. Затем нарисуйте линии, параллельные оси Y, и каждую из этих точек скажите l1 и l2 и, наконец, рассчитайте кратчайшее расстояние между этими линиями. Я получил точки, нарисовал линии, но не знаю, как получить расстояние. Также я заметил, что для одной строки это работает нормально, но для двух строк они рисуются в разных местах, я не знаю, почему. Я пытался сделать это около трех дней, но результаты, которые я получаю, сильно отличаются от того, что я хочу. Что касается некоторых частей, я не уверен, как это сделать. Ниже приведен код, который у меня есть в настоящее время. Я также приложил изображение, демонстрирующее, чего я пытаюсь достичь. Я надеюсь, что это понятно. Я удалил часть, где я пытаюсь получить расстояние, потому что, даже если я знаю, что мне нужно четыре точки от этих линий, чтобы оценить кратчайшее расстояние между ними, я не знаю, как получить эти точки :( - открыт для предложений. [![введите здесь описание изображения][1]][1]
Спасибо за помощь. PS. дайте мне знать, если то, что я пытаюсь сделать, невозможно. Хотя мне это казалось логичным, когда я собирался это сделать.
Ниже мой текущий код
% Read and display image
i = imread('sample.jpg');
im = i;
f = figure;
imshow(im);
% Get user clicked points
[p1 p2] = getpts(f);
% Draw parallel vertical lines at given pts. parallel to the y-axis/post
hold on;
line([p1(1) p1(1)], get(gca, 'ylim'));
line([p2(1) p2(1)], get(gca, 'ylim'));
% Calculate shortest distance between these two lines
% - not sure how to proceed with this because as far as i know I need at
% least 4 points to determine where they meet :(
% Draw vector symbols at points
% 1. draw x component arrow/line - parallel to the x-axis of image
% (or perpendicular to y-axis??) but must be perpendicular to ground plane
% Slope of current line
m = (diff(p1)/diff(get(gca, 'ylim')));
% Slope of new line
Li = 10 ;
minv = -1/m;
line([mean(p1) mean(p1)+Li],[mean(get(gca, 'ylim')) mean(get(gca, 'ylim'))+Li*minv],'Color','r')
% 2. draw y component arrow/line - parallel to the y-axis of image
% Slope of current line
m = (diff(p2)/diff(get(gca, 'ylim')));
% Slope of new line
Li = 10 ;
minv = -1/m;
line([mean(p2) mean(p2)+Li],[mean(get(gca, 'ylim')) mean(get(gca, 'ylim'))+Li*minv],'Color','k')
axis equal;