Podem crear un medidor de dimensions utilitzant dues càmeres web. El procés de mesura d’objectes utilitzant dues càmeres es coneix com a estereovisió o visió estereoscòpica.

La estereovisió es basa en la idea que el cervell humà pot percebre la profunditat gràcies a que els nostres ulls estan separats per una certa distància. De manera similar, al utilitzar dues càmeres col·locades a una certa distància entre si, podem capturar imatges des de dues perspectives diferents i utilitzar aquesta informació per calcular la distància i la profunditat dels objectes en l’escena.

Per crear un medidor de dimensions utilitzant dues càmeres web, hauràs de connectar les càmeres al teu ordinador i utilitzar un programari de processament d’imatges per capturar i processar les imatges des de les dues càmeres. Hauràs de calibrar les càmeres per assegurar-te que estiguin alineades correctament i que la distància entre elles sigui precisa. Després, hauràs de utilitzar tècniques de visió per computador per analitzar les imatges i calcular les dimensions dels objectes en l’escena.

Aquest procés pot ser una mica complex i requerirà cert nivell de programació i coneixements en visió per computador. Però si estàs interessat en explorar aquesta opció, hi ha una gran quantitat de recursos en línia que poden ajudar-te a aprendre més sobre l’estereovisió i la visió per computador.

Exemple de codi de prova en Python utilitzant la biblioteca OpenCV per processament d’imatges i estereovisió:

import cv2

# Configuració de les càmeres
left_camera = cv2.VideoCapture(0)
right_camera = cv2.VideoCapture(1)

# Configuració de les resolucions de les càmeres
left_camera.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
left_camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
right_camera.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
right_camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

# Configuració de la distància entre les càmeres (baseline)
baseline = 100

# Configuració de la matriu de calibració de les càmeres
camera_matrix = [[800, 0, 320], [0, 800, 240], [0, 0, 1]]

# Cicle de captura d'imatges
while True:
    # Captura d'imatges de les càmeres
    _, left_image = left_camera.read()
    _, right_image = right_camera.read()

    # Conversió de les imatges a escala de grisos
    left_gray = cv2.cvtColor(left_image, cv2.COLOR_BGR2GRAY)
    right_gray = cv2.cvtColor(right_image, cv2.COLOR_BGR2GRAY)

    # Càlcul de la disparitat de les imatges
    stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)
    disparity = stereo.compute(left_gray, right_gray)

    # Càlcul de la profunditat dels objectes
    depth = baseline * camera_matrix[0][0] / disparity

    # Visualització de les imatges i la profunditat
    cv2.imshow('Left Camera', left_image)
    cv2.imshow('Right Camera', right_image)
    cv2.imshow('Disparity', disparity)
    cv2.imshow('Depth', depth)

    # Espera per una tecla per sortir del cicle
    if cv2.waitKey(1) == 27:
        break

# Alliberament de les càmeres i tancament de les finestres
left_camera.release()
right_camera.release()
cv2.destroyAllWindows()

Aquest codi configura dues càmeres, una a l’esquerra i una a la dreta, i utilitza la biblioteca OpenCV per processar les imatges i calcular la disparitat i la profunditat dels objectes en la escena. La profunditat es calcula utilitzant la distància entre les càmeres (baseline) i la matriu de calibració de les càmeres.

És important tenir en compte que aquest codi és només un exemple de prova i no està calibrat específicament per a les càmeres que estiguis utilitzant. A més, és possible que necessitis ajustar els paràmetres de la funció StereoBM_create per obtenir millors resultats de disparitat i profunditat.