Как нарисовать линию на изображении в Matlab?

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

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

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

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

Ответы

Ответ 1

Самый простой способ нарисовать линию на изображении - использовать 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]). Посмотрите свойства линий для получения дополнительных параметров форматирования.

Ответ 2

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

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

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

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

Ответ 3

Вот так:

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

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

Ответ 4

load clown
image(X)
colormap(map)
c = size(X,2)
mid = round(c/2)
X(:,mid) = 1
image(X)

Ответ 5

Если у вас есть панель инструментов 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);

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

Ответ 6

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