开发者

How to draw a line on an image in matlab?

I have two points lets say:

  • P(x,y) [point lies at the top of image]
  • P'(x',y') [point lies at bottom of image]

Now i want to draw a line betwen thes开发者_运维百科e two points....and the line should appear on image means should be visible.

how to do this????


The simplest way to draw a line onto an image is to use 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)

If you want a different color, either change the letter to any of rgbcmykw, or use RGB triplets (red is [1 0 0]). Have a look at the lineseries properties for more formatting options.


Starting with version R2014a you can use insertShape as follows:

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

You can also draw multiple lines with the same command, but x1,x2,y2,y3 must be column vectors with each row representing a new line.

insertShape also allows you to draw rectangles, circles, and polygons.


Like this:

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

Where y is the "down" direction and x is the "right" direction in the image. Change the color and width as necessary to be visible.


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


If you have the Computer Vision toolbox. You can simply use shapeInserter.

Check out http://www.mathworks.com/help/vision/ref/vision.shapeinserter-class.html

To specify lines, you have to use the line below. Otherwise, you may get a rectangle

Example:

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

Take a look at the properties to see what you can edit.


You could download and use hline and vline in conjunction with hold on, using the techniques from visiting Steve on Image Processing. Or just use his techniques. Either way it works.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜