Bonjour, j'ai un projet de classe préparatoire à réaliser. Une partie de mon projet a pour but d'analyser des images de planches de bois avec des noeuds plus ou moins gros. Pour cela il faudrait d'abord définir une planche "parfaite" avec certains noeuds, mais qui entre dans la norme. L'étape suivante serait d'analyser d'autres photos de planches et de déterminer un seuil de ressemblance avec la planche "parfaite". Pour l'instant j'ai utilisé la Bibliothèque OpenCv pour faire de l'analyse d'images, j'ai réussi à détecter les noeuds sur une image en faisant des contours. Mais pour le seuil de ressemblance je suis un peu perdue ..! Si quelqu'un a une idée Je ne suis pas une pro de l'informatique et j'ai du mal à finir mon code. Merci d'avance pour vos réponses.
Voilà ce que j'ai fais jusqu'à présent:

Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
import matplotlib.pyplot as plt 
import cv2 
import os 
os.chdir("C:\\Users\\klervie\\Documents") 
""" 
img = cv2.imread("image_bois_1.jpg") 
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
plt.imshow(img2) 
plt.show() 
""" 
 
img = cv2.imread('image_bois_2.jpg',0) 
plt.imshow(img,cmap='gray') 
plt.show() 
 
#ret,thresh = cv2.threshold(img,127,255,0) 
ret,thresh = cv2.threshold(img,144,255,4) 
im2,contours,hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 
plt.imshow(im2,cmap='gray') 
plt.show() 
 
liste_ma=[] 
nbre_ellipse=0 
for cnt in contours: 
 
    try: 
        M = cv2.moments(cnt) 
        print( M ) 
 
        cx = int(M['m10']/M['m00']) 
        cy = int(M['m01']/M['m00']) 
        print("cx,cy",cx,cy) 
 
        area = cv2.contourArea(cnt) 
        print("area",area) 
 
        perimeter = cv2.arcLength(cnt,True) 
        print("perimeter",perimeter) 
        (x,y),(Ma,ma),angle = cv2.fitEllipse(cnt)  
        if area>100 and ma<300 : 
            ellipse = cv2.fitEllipse(cnt) 
            res = cv2.ellipse(img,ellipse,(255,255,255),2) 
            plt.imshow(res,cmap='gray') 
            liste_ma.append(ma) 
            nbre_ellipse+=1 
 
        print("liste_ma=",liste_ma,"nombre_ellipse=",nbre_ellipse) 
 
 
    except: 
        pass 
 
plt.show()