我正在尝试使用这些功能将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');
请告知,谢谢
答案 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);
答案 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);
和上一个答案一样,有多种形状,你可以找到它们here。