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.