Objekterkennung mit Arduino Kamera?

2 Antworten

Ich habe einige Erfahrung mit dem Arduino. Eine Kamera da anzuschließen ist zu krass für das Gerät. Man müsste bei 720p und 5 fps 6 Mio Pixel auswerten.

Lässt man den Arduino zählen und gibt sich das im Serialmonitor aus, dann kommt man auf 0,1 bis 0,2 Mio Durchläufe pro Sekunde. Da fehlt also Geschwindigkeit.

Ich habe auch etwas Erfahrung mit OpenCV mit einem Laptop, da ich mal einen Fahrspurassistent programmiert habe. Der lief mit 30 fps so gerade eben flüssig. Mit einem Raspi würde das Programm auch laufen, aber da habe ich keine Erfahrung.

Eine Kamera kannst du beim Arduino vergessen. Ob deine betrunkenen Teilnehmer sich auch noch verkabeln lassen, bejahe ich jetzt mal.

Mach mal ein Experiment. Nimm deine Fernbedienung (Dort ist eine Infrarot LED drinnen.) und schalte den Fernseher ein. Fernseher empfängt das Signal und schaltet sich ein. Nun lege da ein Hindernis zwischen, eine scharfe Kante. Fernbedienung, Kante und TV Sensor sollen auf einer Höhe sein. Variiere die Höhe der Fernbedienung. Bekommt man eine scharfe Abgrenzung hin, also etwas zu tief, kein direkter Sichtkontakt, Fernseher reagiert nicht?

Wenn das geht, dann soll das Armband am Ellenbogen mit IR Licht leuchten. Dann kommt die Tischkante und am Boden ist der Arduino mit Sensor in einer vertikalen Flucht. So könnte es funktionieren (wenn vermutlich auch nicht komplett zuverlässig...)

Was für einen Arduino würdest du verwenden wollen?

Solch einen ATmega328P kannst du dafür erst mal nicht nehmen, der ist dafür viel zu rechenschwach!

Selbst mit einem ARM Controller von ST würde ich das nicht machen.

An deiner Stelle würde ich es mit einem RaspBerry Pi oder sogar mit einem Laptop machen.

Beim RaspBerryPi gibt es ja diese 8Mpixel Kamera die man da direkt ran machen kann. Ob der RPiZeroW dafür ausreichen sollte, das kann ich nicht sagen.

Ich hatte mit C# ein Programm für Windows geschrieben, habe die Bilder einer Webcam genommen und dann just in time bearbeitet. Manchmal reicht es einfach das Bild in größere Kästchen aufzuteilen, damit man erst mal ein grobes Bild hat um einzelne Bereiche zu erkennen zu können die sich verändert haben.

Du musst ja wissen wo sich da etwas verändert und dann auch in welche Richtung sich dieses Objekt wie schnell bewegt. Bei meiner Objekterkennung hatte ich eine maximale Geschwindigkeit von 1fps erreicht. Danach habe ich mir eine Grafikkarte besorgt um die Berechnungen auf der Grafikkarte (OpenCL) parallel ausführen zu lassen und das ging dann schon bedeutend schneller.

Elon Musk nutzt für seine Autos richtige spezialisierte Rechenmonster.

Selbst wenn du nicht so viel wissen möchtest, allein das Bild zu holen, dann in den Arbeitsspeicher zu laden und es dann in deinem Programm verfügbar zu halten um es leicht bearbeiten zu können (unkomprimiert) ist schon ein Rechenakt für den du weitaus mehr als nur einen Arduino brauchst.

Es gibt mit OpenCV eine gute Möglichkeit das recht schnell und einfach realisieren zu können, da sind viele Funktionen schon enthalten und du musst dir nur ein paar Beispiele anschauen und es verstehen wie man da ran geht.

https://opencv.org/