如何使用Matlab视觉工具箱和步进功能绘制多个形状?

时间:2015-01-24 07:37:25

标签: matlab drawing computer-vision

我正在尝试使用这些功能将2个形状(圆形和矩形)插入图像。但我无法做到这一点。 这是我的代码

J = step(shapeInserter, I, bbox); %bbox is rectangle which is already defined
J = step(shapeInserter, I, circle); %circle is circle which is already defined
imwrite(J,'image.jpg','jpg'); % it draws only the circle

我有很长的路要走,即保存矩形图像然后重新加载以绘制圆圈并重新保存。我希望避免这种情况,因为它非常耗时。

我正在尝试做类似这样的事情(类似于绘图功能)

hold on
%draw circle
%draw rectangle
hold off
imwrite(J,'image.jpg','jpg');

请告知,谢谢

2 个答案:

答案 0 :(得分:4)

vision.ShapeInserter对象有一个属性Shape,可以设置为

  • 'Rectangles'
  • 'Circles'
  • 'Lines'
  • 'Polygons'

默认情况下,它设置为'Rectangles'。要使用相同的ShapeInserter对象放置圆,您必须先调用release(shapeInserter);并通过set(shapeInserter,'Shape','Circles')修改Shape属性来释放它。然后,您可以再次调用步骤方法来插入圆圈。

这是一个小例子:

I = imread('cameraman.tif');
rectangle = int32([10,10,50,60]);
circle = int32([200,200,40]);
shapeInserter = vision.ShapeInserter('Fill',true);

J = step(shapeInserter,I,rectangle);

release(shapeInserter);
set(shapeInserter,'Shape','Circles');
K = step(shapeInserter,J,circle);

imshow(K);

Result

答案 1 :(得分:1)

我是matlab图片的总体菜鸟,但这里有一些非常直接的做法:

   frame=imread( '/home/omido/DeepLearning/matlab_segmentation/track/track/Image2.jpg' );
        result = insertShape(frame, 'FilledRectangle', [100,100,100,100], 'Color', 'green');
result = insertShape(result, 'FilledRectangle',  [200,200,200,200]  , 'Color', 'yellow');
        imshow(result);

这就是结果: enter image description here

和上一个答案一样,有多种形状,你可以找到它们here