OpenMV Cam M7 Machine Vision

2017-10-13 13:27:00 / Produktvorstellungen / Kommentare 0
OpenMV Cam M7 Machine Vision - OpenMV Cam M7 Review | MyBotShop.de

OpenMV Cam M7 Pinout Machine Vision

Bezeichnung OpenMV Cam M7
Entwicklungsumgebung OpenMV IDE
Preis 77,95€
Anwendungsbereich Machine Vision
Programmiersprache MicroPython
Prozessor ST ARM Cortex M7 216MHZ
Arbeitsspeicher 512 KB
Abmessungen 45 x 36 x 30mm
Gewicht 16g
Pins I2C | RS232 | ADC | GPIO

Die Cam M7 ist bereits die dritte Version der OpenMV Serie. Bereits 2015 wurden 104 000 USD für die erste Version der Cam M4 V1 bei der Kickstarter Kampagne eingesammelt. Diese Erfolgsgeschichte wird nun mit der M7 fortgesetzt. Den Namen verdankt die neue Version dem ARM Cortex M7 Prozessor, mit einer Frequenz von 216MHZ.

  • Face Tracking / Recognition
  • Eye Tracking
  • Object und Colour Tracking
 

OpenMV Entwicklungsumgebung

Die OpenMV IDE ist die Entwicklungsumgebung des gleichnamigen Entwicklungsboards. Die IDE kann kostenlos HIER heruntergalden werden, und verfügt neben dem reinen Programmierinterface ebenfalls über ein Fenster, welches das Livebild der Kamera überträgt, sowie einem Tool, das die ROT / GRÜN und BLAU Sättigung Grafisch darstellt.

OpenMV IDE Cam M7

 

Anwendungen entwicklen

Mit der OpenMV Cam Anwendungen zu entwickeln, ist dank der übersichtlich aufgebauten IDE und Micro Python als Programmiersprache, äußerst einfach und komfortabel. Darüber hinaus ist sowohl die Hardware, als auch die Firmware und Code Beispiele hervorragend bei GitHub dokumentiert.

 

Expansion Boards

Neben der OpenMV Cam, stellt der Hersteller ebenfalls Expansion Boards her, welche diverse Zusatzmöglichkeiten bieten:

Die Shields werden ganz einfach auf der Vorder bzw. Rückseite der Cam aufgesteckt, und können somit direkt verwendet werden.

OpenMV Shields




 

Anwendungsbeispiel

Im Nachfolgend beschriebenen Beispiel verwenden wir eine OpenMV Cam M7, OpenMV Servo Shield, zwei Micro Servos und einem Pan and Tilt Kopf zur Drehung der Kamera. Da der Quellcode nachfolgend etwas verschoben dargestellt wird, kann dieser ebenfalls HIER heruntergeladen werden.

In unserem Beispiel erstellt die Kamera ein virtuelles "Rastermuster" und sucht in den entsprechenden Pixel nach Änderungen. Dadurch kann die OpenMV Cam bereits sehr kleine Änderungen wahrnehmen, und erstellt ein Screenshot. Das Servo Shield und der entsprechende Pan & Tilt Kopf wird zur Ausrichtug der Kamera verwendet.




import sensor, image, time, pyb

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)

clock = time.clock()

X = 320
Y = 240
erlaubteAbweichung = 30

daten = []

for i in range(6450):
        daten.append(0)
check = True
ausloeser = 0

#Initialisierung, Erfassung der Ausgangsdaten
pyb.LED(3).on();

img = sensor.snapshot()

counter = 0
x = 0
y = 0

while(y < Y):
     while(x < X):
        rgb = img.get_pixel(x,y)

        #Speicherung der Daten
        daten[counter] = rgb
        counter = counter + 1
        x = x+4
  y = y+3
pyb.LED(3).off();

#Initialisierung abgeschlossen

#Start Routine
while(check):
    clock.tick()
    counter = 0
    ausgeloest = 0

    #Kamera macht Foto
    img = sensor.snapshot()

    #Analyse startet
    pyb.LED(3).on();

    x = 0
    y = 0

    while(y < Y):
          while(x < X):
                rgb = img.get_pixel(x,y)

            #Einzelne Werte auf veraenderung ueberpruefen
            i = 0
            while i < 3:

                    if (rgb[i] - erlaubteAbweichung > daten[counter][i]) or (rgb[i] + erlaubteAbweichung  < daten[counter][i]):
                    if(ausloeser == 1):

                        pyb.LED(1).on();
                        pyb.LED(1).off();
                        ausgeloest = ausgeloest + 1
                        ausloeser = 0

                    else:

                        ausloeser = ausloeser + 1

                else:

                    ausloeser = 0
                i = i + 1

            counter = counter + 1
            x = x +4
            y = y +3

    if(ausgeloest > 2):
        check = False
        print("Bewegung Registriert")

    #Analyse beendet
    pyb.LED(3).off();

#Wenn Bewegung erkannt wurde
sensor.reset()
sensor.set_contrast(1)
sensor.set_gainceiling(16)
sensor.set_framesize(sensor.HQVGA)
sensor.set_pixformat(sensor.GRAYSCALE)
face_cascade = image.HaarCascade("frontalface", stages=25)

# FPS clock
clock = time.clock()

while (True):
  img = sensor.snapshot()

   # Find objects.
   # Note: Lower scale factor scales-down the image more and detects smaller objects.
   # Higher threshold results in a higher detection rate, with more false positives.

    objects = img.find_features(face_cascade, threshold=1, scale_factor=1.2)

    for r in objects:
        img.draw_rectangle(r)
        img.save('bild.jpg')


News

Unsere Instagram FEEDS

Social Media

Folgen Sie uns doch auch auf eine der folgenden Social Media Kanälen: