4.1 Adding Bounding Boxes to a Photo
20210317
Many of the computer vision models will identify bounding boxes for objects within a photo. For example, the faces command of the azcv package returns as the first field the bounding box of any faces found in a photo, one face per line.
A relatively simple pipeline can add the bounding boxes for the identified faces to the image.
As an example, we first download an image from the Internet saving it
as the file faces.jpg
using wget.
wget https://bit.ly/38GgwPP -O faces.jpg
The 12 model is then called upon to identify the faces,
saving the output to a text file faces_bb.txt
, containing the
bounding boxes.
ml faces azcv faces.jpg | tee faces_bb.txt
This text file is concatenated to the cut
command to extract the first field (-f1
) where fields are denoted by
a comma (-d,
). This field is the bounding box of each face. Using
xargs and awk a command is constructed using
convert from imagemagick to draw the blue
rectangles of width 3 pixels for each of the identified faces, saving
the resulting image as faces_tmp.png
.
cat faces_bb.txt |
cut -d, -f1 |
xargs printf '-draw "rectangle %s,%s %s,%s" ' |
awk '{print "faces.jpg -fill none -stroke blue -strokewidth 3 " $0 "faces_tmp.png"}' |
xargs convert
If a polygon of 4 points rather than a rectangle is returned by the model, then:
$ ml detect azface 3818.jpg |
grep forehead_occluded |
cut -d, -f1 |
xargs printf "-draw 'polygon %s,%s %s,%s %s,%s %s,%s' " |
awk '{print "3818.jpg -fill none -stroke red -strokewidth 5 " $0 "bb.png"}' |
xargs convert
Your donation will support ongoing availability and give you access to the PDF version of this book. Desktop Survival Guides include Data Science, GNU/Linux, and MLHub. Books available on Amazon include Data Mining with Rattle and Essentials of Data Science. Popular open source software includes rattle, wajig, and mlhub. Hosted by Togaware, a pioneer of free and open source software since 1984. Copyright © 1995-2022 Graham.Williams@togaware.com Creative Commons Attribution-ShareAlike 4.0