Как нарисовать линию на изображении в Matlab? - PullRequest
18 голосов
/ 20 августа 2010

У меня есть две точки, скажем:

  • P (x, y) [точка находится вверху изображения]
  • P '(x', y ') [точка находится внизу изображения]

Теперь я хочу нарисовать линию между этими двумя точками .... и линия должна появиться на изображении, значит, должна быть видимой.

как это сделать ????

Ответы [ 6 ]

16 голосов
/ 21 августа 2010

Самый простой способ нарисовать линию на изображении - это использовать PLOT .

%# read and display image
img = imread('autumn.tif');
figure,imshow(img)

%# make sure the image doesn't disappear if we plot something else
hold on

%# define points (in matrix coordinates)
p1 = [10,100];
p2 = [100,20];

%# plot the points.
%# Note that depending on the definition of the points,
%# you may have to swap x and y
plot([p1(2),p2(2)],[p1(1),p2(1)],'Color','r','LineWidth',2)

. Если вам нужен другой цвет, измените букву на любую из rgbcmykw.или используйте тройки RGB (красный - [1 0 0]).Посмотрите на свойства lineseries , чтобы узнать больше вариантов форматирования.

9 голосов
/ 25 ноября 2016

Начиная с версии R2014a, вы можете использовать insertShape следующим образом:

img = insertShape(img,'Line',[x1 y1 x2 y2],'LineWidth',2,'Color','blue');

Вы также можете рисовать несколько линий одной и той же командой, но x1, x2, y2, y3 должны бытьвекторы столбцов, каждая строка которых представляет новую строку.

insertShape также позволяет рисовать прямоугольники, круги и многоугольники.

6 голосов
/ 12 ноября 2013

Как это:

figure;
hold on;
imagesc(img);
line([x1,x2],[y1,y2],'Color','r','LineWidth',2)
hold off

Где y - это направление "вниз", а x - это "правильное" направление на изображении. Измените цвет и ширину по мере необходимости, чтобы быть видимым.

1 голос
/ 30 января 2016

Если у вас есть набор инструментов Computer Vision. Вы можете просто использовать shapeInserter.

Выезд http://www.mathworks.com/help/vision/ref/vision.shapeinserter-class.html

Чтобы указать строки, вы должны использовать строку ниже. В противном случае вы можете получить прямоугольник

Пример:

%draw a line from point (100,100) to (200,200) on an image saved as nextFrame

line = int32([100 100  200 200]);
shapeInserter = vision.ShapeInserter('Shape', 'Lines');
nextFrame = step(shapeInserter, nextFrame, line);

Посмотрите на свойства, чтобы увидеть, что вы можете редактировать.

1 голос
/ 30 декабря 2010
load clown
image(X)
colormap(map)
c = size(X,2)
mid = round(c/2)
X(:,mid) = 1
image(X)
0 голосов
/ 30 декабря 2010

Вы можете скачать и использовать hline и vline в сочетании с hold on, используя приемы посещения Стив на Обработка изображений .Или просто использовать его методы.В любом случае это работает.

...