Commit 1c8ccec0 authored by Roux Antoine's avatar Roux Antoine
Browse files

version finale du code, avec suivi de la pièce en mode naif

parent f17a96b6
Ceci est un readme
ok
Il suffit de lancer le script : "script_final.py" et d'appuyer sur une touche du clavier à chaque fois qu'une image apparait pour relancer le programme
Le script met en général 45 secondes pour finir tous les traitements (mais des messages dans la console indiquent l'état d'avancement)
Il arrive qu'un erreur non critique pour le fonctionnement de l'algorithme survienne dans la console, c'est en cours de résolution
No preview for this file type
......@@ -72,18 +72,17 @@ def new_position_finder (old_img, new_img, x_center, y_center, radius) :
# for i in range (deplacement_x, 2*radius_small+1 + deplacement_x) :
# for k in range (deplacement_y, 2*radius_small+1 + deplacement_y):
# new_circle_square[i,k] = new_img_small[y_center_small-radius_small+i, x_center_small-radius_small+k]
#
# cv2.imshow('pièce', old_circle_square)
# cv2.waitKey(0) #on attend que l'utilisateur appuye sur une touche pour agir
# cv2.destroyAllWindows() #on ferme tout
cv2.imshow('pièce', old_circle_square)
cv2.waitKey(0) #on attend que l'utilisateur appuye sur une touche pour agir
cv2.destroyAllWindows() #on ferme tout
test = 1
test = 4
if test == 1 :
......@@ -128,6 +127,6 @@ if test == 3 :
new_position_finder(img1, img2, 1, 1, 1)
if test == 4 :
img1 = cv2.imread('photo1.JPG', 0) #image noir et blanc de la pièce
img2 = cv2.imread('photo2.JPG', 0) #image noir et blanc de la pièce
img1 = cv2.imread('1_euro_avant.JPG', 0) #image noir et blanc de la pièce
img2 = cv2.imread('1_euro_apres.JPG', 0) #image noir et blanc de la pièce
new_position_finder(img1, img2, 1500, 2000, 30)
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -21,8 +21,8 @@ black = 0
grey = 150
white = 255
images_names = ["unknown_0.JPG", "unknown_1.JPG", "unknown_2.JPG"]
#images_names = ["unknown_0.JPG", "unknown_1","unknown_2", "unknown_3","unknown_4"]
images_names = ["unknown_0.JPG"]
images_names_after = ["unknown_0_after.JPG"]
number_of_coins_to_identify = len(images_names)
......@@ -64,7 +64,7 @@ print("Affinage du trait")
mat_cont = lwr.line_width_reducer(mat_grad, mat_cont, img)
cv2.imshow('mat_cont', mat_cont)
cv2.imwrite('FINAL_mat_cont.png', mat_cont)
#cv2.imwrite('FINAL_mat_cont.png', mat_cont)
cv2.waitKey(0)
cv2.destroyAllWindows()
......@@ -101,7 +101,7 @@ for k in range (number_of_circles_to_find) :
cv2.imshow('img_resized with coins', img_resized)
cv2.imwrite('FINAL_resultat_apprentissage.png', img_resized)
#cv2.imwrite('FINAL_resultat_apprentissage.png', img_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
......@@ -162,12 +162,76 @@ for k in range (number_of_coins_to_identify) :
cv2.putText(img_resized, label_of_coin, (x_center, y_center), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255,0,0))
cv2.imshow('identified coin', img_resized)
cv2.imwrite('FINAL_10_cents_identified.png', img_resized)
#cv2.imwrite('FINAL_10_cents_identified.png', img_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
""" idem mais à l'instant T+1 """
for k in range (number_of_coins_to_identify) :
img = cv2.imread(images_names_after[k], 0) #image noir et blanc de la pièce inconnue
img_resized = ir.image_resizer(img,0.2)
img_blurred = flt.blur_image(img_resized,13)
#on créé la matrice du gradient
mat_grad = grd.force_grad(img_blurred)
#on calcule les dimensions de l'image
length = len(img_blurred[1])
height = len(img_blurred)
#Détermination de la matrice des contours
print("Détermination de la matrice des contours")
mat_cont = np.zeros((height,length))
for i in range (1, height):
for j in range (1, length):
if (mat_grad[i,j]<seuil_bas):
mat_cont [i,j] = white
elif (mat_grad[i,j]>seuil_haut):
mat_cont [i,j] = black
else :
mat_cont [i,j] = grey
#Elimination des pixels grisés
print("Elimination des pixels grisés")
mat_cont = gpe.grey_pixel_eliminator(mat_cont, white, grey, black)
#Affinage du trait
print("Affinage du trait")
mat_cont = lwr.line_width_reducer(mat_grad, mat_cont, img)
#Recherche des cercle
print("Recherche des cercles")
number_of_circles_to_find = 1
final_circles = cf.circle_finder(mat_cont, number_of_circles_to_find)
#on détermine sa valeur en regardant de quel rayon existant elle est le plus proche
x_center_after = final_circles[0]
y_center_after = final_circles[1]
radius_after = final_circles[2]
radius_differences = np.zeros(5)
for k in range (len(list_of_labels)) :
radius_differences[k] = (radius - sorted_radius[k])**2
label_of_coin = list_of_labels[np.argmin(radius_differences)-1]
cv2.circle(img_resized, (x_center, y_center), radius, (255,0,0))
cv2.circle(img_resized, (x_center_after, y_center_after), radius, (255,0,0))
cv2.putText(img_resized, label_of_coin, (x_center_after, y_center_after), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255,0,0))
cv2.line(img_resized, (x_center, y_center), (x_center_after, y_center_after), (255,0,0))
cv2.imshow('identified coin', img_resized)
#cv2.imwrite('FINAL_10_cents_identified.png', img_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
print("Fini !")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment