Нанесение точек на изображение в Matlab - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь построить p1, p2, p3 поверх изображения, я не уверен, как это сделать эффективно, и, вероятно, мне что-то не хватает, вот значения точек: enter image description here

Это то, что я пробовал:

pts = load('myFile.mat')
p1 = pts.p1
p2 = pts.p2
p3 = pts.p3
im = imread ('myImg.JPG') % Loads the image compEx2 .JPG
imagesc (im) % Displays the image
plot(p1,p2, p3, 'r*', 'LineWidth', 2, 'MarkerSize', 2);
hold on

Первая проблема, с которой я столкнулся, это то, что я не уверен, как построить график всех трех переменных p1,p2,p3 на изображении, поскольку похоже, что у них уже есть значения x и y в одной и той же переменной, как мне извлечь его для построения графика?

Кроме того, точки не отображаются в изображение, если я попробую что-то вроде:

plot(p1,p2, 'r*', 'LineWidth', 2, 'MarkerSize', 2);

, оно просто отображает p1 и p2. Не знаю, как добавить p3 в сюжет. и как сделать так, чтобы это отображалось на изображении.

После использования предложения Макса с этим кодом:

imagesc (im) % Displays the image
colormap gray % changes the colormap of the current image to gray scale
hold on
plot([p1;p2;p3], 'r*', 'LineWidth', 4, 'MarkerSize', 4);

Точки наносятся по краю изображения:

enter image description here

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Разделите координаты x и y:

% merge vectors
P = [p1;p2;p3];
% split coordinates
x = P(:,1);
y = P(:,2);

% open figure with image
imshow(im);
% plot points
hold on
plot(x,y,'*')
hold off

Если вы не предоставите их индивидуально команде plot, она будет считать, что это строки (из которых вы только хотите построить маркеры) и возьмите индекс как значение для x -оси

1 голос
/ 26 мая 2020

Распакуйте их в координаты:

x(1:3)=p1(:,1);
x(4:6)=p2(:,1);
x(7:9)=p3(:,1);

y(1:3)=p1(:,2);
y(4:6)=p2(:,2);
y(7:9)=p3(:,2);

затем

plot(x,y,...)

Осторожно с координатами изображения, возможно, эти точки находятся в xy координатах, а не координатах изображения.

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