MATLAB: Insert Shape and Inserttext in same Image

figureimshowinsertshapeinserttextMATLAB

Hello
how can i display my circle and a text in the same Image using imshow ? This is my Code. But it doesnt really work. I only get one of both but not Text and Shape in the Same figure/ image:
%Image
I = imread ('bonds_image.jpg');
%Draw circle with a border line width of 5
RGB = insertShape ( I , 'circle', [527 626 20] , 'LineWidth' , 5 , 'Color' , 'red');
imshow (RGB);
%Insert Bond Text
text_str = 'Bond 1 Draht 38';
position = [532 26];
RGB_text = insertText (I, position, text_str, 'FontSize', 18, 'BoxColor', 'red', 'TextColor', 'black');
imshow (RGB_text);

Best Answer

All functions in matlab work the same way, they never modify the input. Instead they return a copy of the input with the required modifications. Hence, when you call insertShape or insertText, your I is never changed. The inserted text or shape is only visible in the returned image. Thus you need to pass that returned image to the next insertXXX to insert both:
I = imread ('bonds_image.jpg');
I_with_circle = insertShape(I , 'circle', [527 626 20] , 'LineWidth' , 5 , 'Color' , 'red');
I_with_circle_and_text = insertText(I_with_circle, [532, 26], 'Bond 1 Draht 38', 'FontSize', 18, 'BoxColor', 'red', 'TextColor', 'black');
imshow(I_with_circle_and_text);
Related Question