You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
Multiple Labels in an Image
6 views (last 30 days)
Show older comments
Hello, I am currently doing a project and inventory categorization and I can detect each type of inventory, but I can only output each detected image labeled on separate images. I want to know how to label all the detected images on one image. I am currently using insertObjectAnnotation to label my detected items. Can someone please shed some light on how I can put all the labeled products on one image. Thank you.
Accepted Answer
sixwwwwww
on 3 Dec 2013
you can store labels for all of your items in a cell array of strings and then you can use this cell array of strings in place of single label. For more information see:
I hope it helps. Good luck!
20 Comments
Cady
on 3 Dec 2013
Thanks for your quick response. Can you explain in more detail how this would be done with something like this:
detectedImg = insertObjectAnnotation(img, 'rectangle', bbox, 'Orbit');
detectedImg1 = insertObjectAnnotation(img, 'rectangle', bbox1, 'Monster');
detectedImg2 = insertObjectAnnotation(img, 'rectangle', bbox2, 'GobStoppers');
detectedImg3 = insertObjectAnnotation(img, 'rectangle', bbox3, 'Jolly Ranchers');
detectedImg4 = insertObjectAnnotation(img, 'rectangle', bbox4, 'M&Ms');
sixwwwwww
on 3 Dec 2013
I assume that bbox, bbox1 ... are 1x4 vectors since they are referring to rectangle. In this case you can do like this:
BoxPositions = [bbox; bbox1; bbox2; bbox3; bbox4];
BoxLabels = {'Orbit', 'Monster', 'GobStoppers', 'Jolly Ranchers', 'M&Ms'};
detectedImg = insertObjectAnnotation(img, 'rectangle', BoxPositions, BoxLabels);
Good luck!
sixwwwwww
on 3 Dec 2013
in this case you have to do as follows:
count = 0;
count = count + size(bbox, 1);
BoxLabels(1:count) = {'Orbit'};
prevCount = count;
count = count + size(bbox1, 1);
BoxLabels(prevCount:count) = {'Monster'};
prevCount = count;
count = count + size(bbox2, 1);
BoxLabels(prevCount:count) = {'GobStoppers'};
prevCount = count;
count = count + size(bbox3, 1);
BoxLabels(prevCount:count) = {'Jolly Ranchers'};
prevCount = count;
count = count + size(bbox4, 1);
BoxLabels(prevCount:count) = {'M&Ms'};
BoxPositions = [bbox; bbox1; bbox2; bbox3; bbox4];
detectedImg = insertObjectAnnotation(img, 'rectangle', BoxPositions, BoxLabels);
Cady
on 3 Dec 2013
Edited: Cady
on 4 Dec 2013
clc;clear
imnumber = {'Newsstand56.jpg', 'Newsstand30.jpg', 'Newsstand48.jpg'};
for i=1:length(imnumber)
image=imnumber{i};
%Orbit
detector = vision.CascadeObjectDetector('OrbitNew.xml');
img = imread(image);
bbox = step(detector, img);
detectedImg = insertObjectAnnotation(img, 'rectangle', bbox, 'Orbit');
numBox = size(bbox, 1);
Orb = 8 - numBox;
%figure; imshow(detectedImg);
%Monster
detector = vision.CascadeObjectDetector('Monster.xml');
img = imread(image);
bbox1 = step(detector, img);
detectedImg1 = insertObjectAnnotation(img, 'rectangle', bbox1, 'Monster');
numBox1 = size(bbox1, 1);
Mon = 6-numBox1;
%figure; imshow(detectedImg1);
%GobStoppers
detector = vision.CascadeObjectDetector('GobStopp.xml');
img = imread(image);
bbox2 = step(detector, img);
detectedImg2 = insertObjectAnnotation(img, 'rectangle', bbox2, 'GobStoppers');
numBox2 = size(bbox2, 1);
Gob = 6-numBox2;
%figure; imshow(detectedImg2);
%Jolly Ranchers
detector = vision.CascadeObjectDetector('Jolly.xml');
img = imread(image);
bbox3 = step(detector, img);
detectedImg3 = insertObjectAnnotation(img, 'rectangle', bbox3, 'Jolly Ranchers');
numBox3 = size(bbox3, 1);
Jolly = 6 - numBox3;
%figure; imshow(detectedImg3);
%M&Ms
detector = vision.CascadeObjectDetector('M&Ms.xml');
img = imread(image);
bbox4 = step(detector, img);
detectedImg4 = insertObjectAnnotation(img, 'rectangle', bbox4, 'M&Ms');
numBox4 = size(bbox4, 1);
MM = 6 - numBox4;
%figure; imshow(detectedImg4);
OrderLog(i,2)=Orb;
OrderLog(i,3)=Gob;
OrderLog(i,4)=Mon;
OrderLog(i,5)=Jolly;
OrderLog(i,6)=MM;
OrderLog(i,1)=i;
end
OrderLog
sixwwwwww
on 4 Dec 2013
can you send me files as well? Also try this code and I am suggesting same thing in your case:
faceDetector = vision.CascadeObjectDetector;
I = imread('visionteam.jpg');
bboxes = step(faceDetector, I);
IFaces = insertObjectAnnotation(I, 'rectangle', bboxes, 'Face');
figure, imshow(IFaces), title('Detected faces');
bodyDetector = vision.CascadeObjectDetector('UpperBody');
bodyDetector.MinSize = [60 60];
bodyDetector.ScaleFactor = 1.05;
bboxBody = step(bodyDetector, I);
IBody = insertObjectAnnotation(I, 'rectangle',bboxBody,'Upper Body');
figure, imshow(IBody), title('Detected upper bodies');
BoxPositions = [bboxes; bboxBody];
BoxLabels(1:6) = {'Face'};
BoxLabels(7:18) = {'Upper Body'};
a = insertObjectAnnotation(I, 'rectangle', BoxPositions,BoxLabels);
figure, imshow(a)
you can directly run this code and thats the ans you should also according to the suggested manner
Image Analyst
on 4 Dec 2013
Try zipping them before attaching.
More Answers (0)
See Also
Categories
Find more on Computer Vision Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)