j'aurais besoin d'aide pour réaliser une reconnaissance de formes grâce à la caméra du Raspberry Pi. Je m'explique, j'utilise la caméra basique du Raspberry, et il faudrais qu'elle prenne une photo, puis l'analyse pour en déduire les formes présentes. Pour ce faire, j'ai trouvé quelques programmes utiles sur internet et ai cru comprendre qu'il était judicieux d'utilisé cv2. Sur la base de ce que j'ai déniché j'ai obtenu le code suivant :
Code : Tout sélectionner
# Imports
import picamera
import time
import os
import numpy as np
import cv2
# Supression de l'image précédente dans le fichier
file = os.listdir('/home/pi/Camera/PhotoReconnaissance')
os.remove('/home/pi/Camera/PhotoReconnaissance'+'/'+file[0])
camera = picamera.PiCamera()
#camera.resolution = (720,1080)
camera.start_preview(fullscreen = False, window=(50,50,640,480))
time.sleep(5)
# Photo prise
camera.capture('/home/pi/Camera/PhotoReconnaissance/image.bmp')
camera.stop_preview()
# Récpération de l'image prise
image = cv2.imread('/home/pi/Camera/PhotoReconnaissance/image.bmp',0)
gray = image
ret,thresh = cv2.threshold(gray,250,255,cv2.THRESH_BINARY_INV)
img,contours,h =cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
perimetre=cv2.arcLength(cnt,True)
approx = cv2.approxPolyDP(cnt,0.01*perimetre,True)
M = cv2.moments(cnt)
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
cv2.drawContours(image,[cnt],-1,(0,255,0),2)
if len(approx)==3:
shape = "triangle"
elif len(approx)==4:
(x, y, w, h) = cv2.boundingRect(approx)
ratio = w / float(h)
if ratio >= 0.70 and ratio <= 1.30:
shape = "carre"
else:
shape = "rectangle"
elif len(approx)==5:
shape = "pentagone"
elif len(approx)==6:
shape = "hexagone"
else:
shape= "circle"
cv2.putText(image, shape, (cX, cY), cv2.FONT_HERSHEY_SIMPLEX,0.5, (255, 255, 255), 2)
image_data = np.asarray(image)
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Mon projet consiste à pouvoir reconnaître des formes simples. Ainsi, un cube vu de face sera vu comme un carré et identifié comme il le faut. Mais les couleurs peuvent très bien faire l'affaire avec des formes qui auraient leur couleur propre.
Merci de votre aide !