Как нарисовать линию на изображении в 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
, используя методы из посещения Стив по обработке изображений. Или просто используйте его методы. В любом случае это работает.