For the second part of the machine learning workshop I need to tag images. My first solution was to display the image in fullscreen and then copy it to a folder named by the tag manually. But this workflow feels very inefficent. So I build a pygame-based tool for this: https://github.com/mfa/image-tagger.
The tags are given by a yaml file (the tagset) and saved for each image when the next image is shown (right arrow key). When the tagging is finished the files with a specific tag are copied via a simple python script, i.e. https://github.com/mfa/image-tagger/blob/main/copy_filtered.py.
By using pygame I learned a lot about events and image redrawing.
Because the drawing performance isn't that important here I haven't optimized on that.
Limiting the fps by
clock.tick(30) was primarily to eliminate unneccessary CPU usage.
Screenshot of current state of the tool: