J'ai deux points, disons:
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 ????
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.
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.
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.
load clown
image(X)
colormap(map)
c = size(X,2)
mid = round(c/2)
X(:,mid) = 1
image(X)
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.