The simplest way is to use the onimage
package from the From Answers to Packages
project, which implements the answer given in Drawing on an image with TikZ.
To use the package: Download the file onimage.dtx
from bazaar.launchpad.net/~tex-sx/tex-sx/development/files, run pdflatex
on it, and move the resulting .sty
file to your working directory.
Then you can load the onimage
package and use the tikzonimage
environment, which has the form
\begin{tikzonimage}[<options for includegraphics>]{<image name>}[<options for TikZ>]
...
\end{tikzonimage}`
The coordinate system will be scaled in such a way that (0,0)
is the bottom left corner of the image, and (1,1)
is the top right. You can disable this scaling, if you wish, by setting the key tsx/scale cs=none
in the optional TikZ arguments.
Here's a simple example:
\documentclass{article}
\usepackage{onimage}
\begin{document}
\begin{tikzonimage}{bottle.jpg}
\draw [orange, line width=5pt] (0.5,0.92) circle [radius=0.75cm];
\end{tikzonimage}
\end{document}

You can switch on a grid to help you position your TikZ objects by setting the key tsx/show help lines
.
\documentclass{article}
\usepackage{onimage}
\begin{document}
\begin{tikzonimage}{bottle.jpg}[tsx/show help lines]
\draw [orange, line width=5pt] (0.5,0.92) circle [radius=0.75cm];
\end{tikzonimage}
\end{document}

In order to get the labels to look like you described them, you can use the font=<font commands>
option to set the font options, fill=<color>
for the background and text=<color>
for the text color. To keep things neat, you can define a new style for this using
\tikzset{
<new style name>/.style={
fill=black,
text=white,
font=\fontfamily{phv}\selectfont\Large\bfseries
}
}
Here's an example in which I've also added the label position (0.2 cm from the bottom right edge of the images) as part of the style definition, and made the style alter the every node/.style
, which is applied to all nodes in a TikZ picture. This allows us to apply this newly defined style to the whole TikZ picture in the tikzonimage
optional argument, instead of applying it to the node itself using \node [<style>] {};
:

\begin{document}
\tikzset{
image label/.style={
every node/.style={
fill=black,
text=white,
font=\fontfamily{phv}\selectfont\Large\bfseries,
anchor=south east,
xshift=-0.2cm,
yshift=0.2cm,
at={(1,0)}
}
}
}
\begin{tikzonimage}[width=0.5\textwidth]{bottle}[image label]
\node{A};
\end{tikzonimage}
\begin{tikzonimage}[width=0.25\textwidth]{bottle}[image label]
\node{B};
\end{tikzonimage}
\end{document}