Come utilizzare OpenMV per l'intervallo

Tutorial video 10 - Definizione e misurazione delle dimensioni degli oggetti: https://singtown.com/learn/50001/
Tutorial video 33 - Gamma ottica ToF: https://singtown.com/learn/50539/
  • Primo metodo:\ Utilizzando apriltag, Apriltag può eseguire il posizionamento 3D. Fare riferimento al nostro tutorial per l'implementazione specifica:\ Monitoraggio dei tag AprilTag http://book.openmv.cc/image/apriltag.html

  • Secondo metodo:\ OpenMV utilizza una fotocamera monoculare Se si desidera ottenere la misurazione della distanza, è necessario selezionare un oggetto di riferimento e utilizzare il rapporto dimensionale dell'oggetto di riferimento per calcolare la distanza.

Questa sezione condivide il secondo metodo, come calcolare la distanza tra la fotocamera e la pallina da ping pong in base alla dimensione della pallina da ping pong nella fotocamera.

Come tutti sappiamo, più la pallina da ping pong è lontana dalla fotocamera, più piccola è la dimensione della pallina da ping pong nella fotocamera. Quindi la domanda è?\ Cos'è esattamente questa relazione?\ (Nota: le domande di geometria matematica qui riguardano solo la parte delle funzioni trigonometriche della matematica delle scuole superiori. Se non vuoi leggerle, puoi semplicemente guardare la conclusione)

Per semplificare il problema, guardiamo l'immagine:\

Lo si può sapere dalla relazione geometrica nella telecamera a sinistra:

Quindi esiste (formula 1)

È noto dalla relazione geometrica nell'ambiente reale a destra:

Portando la (formula 1) in, possiamo ottenere (formula di conclusione):

Quanto sopra è la relazione che alla fine vogliamo conoscere!\ Cosa significa questo?\ Lm a sinistra del segno uguale è la lunghezza e Bpix sono i pixel occupati dalla palla nella fotocamera (pixel di diametro).Sul lato destro del segno uguale, Rm è il raggio reale della palla, Apix è un pixel fisso e a è la metà dell'angolo di visione.\ COSÌ! COSÌ! COSÌ! COSÌ! COSÌ! COSÌ! COSÌ!\ Ciò che ci dice questa formula è:

实际长度和摄像头里的像素成反比

La semplificazione lo è

距离 = 一个常数/直径的像素

Ok, conosciamo già la relazione ed è così elegante e semplice!\ I passaggi operativi specifici consistono nel misurare prima il valore di questa costante. Inutile dire come misurarlo, prima lasciare che la palla sia a 10 cm di distanza dalla fotocamera, stampare il valore in pixel del diametro nella fotocamera, quindi moltiplicarlo per. ottieni il valore di k!

Quindi distanza = questa costante/pixel nella fotocamera, così facile.

Ho pubblicato il codice OpenMV qui:

# Measure the distance
#
# This example shows off how to measure the distance through the size in imgage
# This example in particular looks for yellow pingpong ball.

import sensor, image, time

# For color tracking to work really well you should ideally be in a very, very,
# very, controlled enviroment where the lighting is constant...
yellow_threshold   = ( 56,   83,    5,   57,   63,   80)
# You may need to tweak the above settings for tracking green things...
# Select an area in the Framebuffer to copy the color settings.

sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # use RGB565.
sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) # turn this off.
clock = time.clock() # Tracks FPS.

K=5000#the value should be measured

while(True):
    clock.tick() # Track elapsed milliseconds between snapshots().
    img = sensor.snapshot() # Take a picture and return the image.

    blobs = img.find_blobs([yellow_threshold])
    if len(blobs) == 1:
        # Draw a rect around the blob.
        b = blobs[0]
        img.draw_rectangle(b[0:4]) # rect
        img.draw_cross(b[5], b[6]) # cx, cy
        Lm = (b[2]+b[3])/2
        length = K/Lm
        print(length)

    #print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while
    # connected to your computer. The FPS should increase once disconnected.

Il risultato è così, la distanza viene stampata tramite la porta seriale.

results matching ""

    No results matching ""