web-dev-qa-db-fra.com

Comment tracer une ligne sur une image dans Matlab?

J'ai deux points, disons:

  • P (x, y) [le point se trouve en haut de l'image]
  • P '(x', y ') [le point se trouve en bas de l'image]

Maintenant, je veux tracer une ligne entre ces deux points ... et la ligne devrait apparaître sur l'image signifie que devrait être visible.

comment faire cela ???? 

18
chee

Le moyen le plus simple de tracer une ligne sur une image consiste à utiliser 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)

Si vous souhaitez une couleur différente, modifiez la lettre en l'une des variables rgbcmykw ou utilisez des triplets RVB (le rouge correspond à [1 0 0]). Jetez un coup d’œil aux propriétés lineseries properties pour plus d’options de formatage.

15
Jonas

Comme ça:

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

Où y est la direction "bas" et x est la "droite" direction dans l'image. Changez la couleur et la largeur si nécessaire pour être visible. 

6
Luke

Si vous avez la boîte à outils Computer Vision. Vous pouvez simplement utiliser shapeInserter.

Découvrez http://www.mathworks.com/help/vision/ref/vision.shapeinserter-class.html

Pour spécifier des lignes, vous devez utiliser la ligne ci-dessous. Sinon, vous pouvez obtenir un rectangle

Exemple:

%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);

Jetez un coup d'œil aux propriétés pour voir ce que vous pouvez éditer.

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

Vous pouvez télécharger et utiliser hline et vline en conjonction avec hold on, en utilisant les techniques de visite de Steve sur le traitement des images . Ou simplement utiliser ses techniques. De toute façon cela fonctionne.

0
rownage