Eine Option wäre mMn ein QR-Code.
Ist tatsächlich eine Option, für solche Einsatzwecke gibt es aber noch "ArUco"-Marker, die besser geeignet sind, weil sie nicht so komplex sind und sich schneller erkennen lassen. 5cm sind auch echt nicht viel, also schätze ich mal, dass deine Objekte sowieso schon ziemlich klein sind und nicht viel Platz für einen großen QR Code haben:
Der Nachteil an ArUco-Markern ist, dass du weniger Informationen in den Codes selbst speichern kannst. Hier sind beispielhaft ein paar solcher "Dictionaries" aufgelistet, mit denen sich 4x4 bis 7x7 Pixel große Marker generieren lassen, die dann 50, 100, 250 oder 1000 eindeutige IDs haben können: https://pyimagesearch.com/2020/12/14/gen…aries-in-opencv
Hier ist noch eine interaktive Seite, wo du dir die Marker genauer anschauen kannst: https://chev.me/arucogen/
Zu 1. Die Pi-Cameras erfüllen die Bildrate. Wenn du die Auflösung verringerst, kannst du sogar noch höhere Bildraten erzielen. Bei 640x480 Pixeln kann die 120° Kamera sogar 90 FPS erreichen. Den Flaschenhals sehe ich eher beim Raspberry Pi selbst, weil Videoverarbeitung relativ viel Ressourcen braucht.
Zu 2.: Sobald es irgendwie um Kameras und Detektion geht, kommst du an "OpenCV" nicht vorbei. Das was du vorhast fällt in den Bereich von "Computer Vision" (das ist das CV in OpenCV) und OpenCV ist da der absolute Platzhirsch. Die Detektion von ArUco-Markern ist sogar auch schon vorhanden und mit ein paar Zeilen Code erledigt.
Zu 3.: Ich meine, ich habe irgendwo mal einen Adapter gesehen, aber was spricht gegen eine normale USB-Kamera? Die sind robuster, haben längere Kabel und meistens auch eine bessere Qualität. Der Pi funktioniert auch mit anderen Kameras und muss nicht zwingend die Pi-Kamera benutzen.
Zu 4.: Ja, das geht: https://pyimagesearch.com/2016/01/18/mul…-pi-and-opencv/
Ob der Pi dann aber noch zufriedenstellend schnell die Objekte erkennt, kann ich dir nicht sagen. Kannst du die Kamera nicht etwas höher anbringen, um dein Sichtfeld zu vergrößern?