Bonjour tous le monde, d'abords bon 1er Mai à tous les travailleurs (es);
Ce petit code en PJ que j'ai fais en Python2.7, permet de detecter et dessiner les contours de mon image(jusque là ça marche bien)
maintenant je souhaite par une boucle while (ou autre) extraire les coordonnées de contour par contour et les sauvegarder dans un fichier .txt
le probleme que je rencontre est "je pense" dans la boucle, ou la condition d'extraction "je ne sais pas"!!!
la question: comment je peux parcourir mon image, et extraire ces coordonnées, puis les enregistrer dans un fichier .Txt
en séparant chanque données de contours par un commentaire, genre données contours 1 sont: ....etc jusqu'à faire tous les contours.
Si vous avez une idée, merci de me la communiquer, je vous serai très reconnaissante!
je suis bloquée depuis plus d'une semaine
et voici l'image
Code : 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 import matplotlib.pyplot as plt import numpy as np from PIL import Image import cv2 im = cv2.imread ('m.jpg') imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(imgray,200,255,0) contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) ''' cv2.CHAIN_APPROX_SIMPLE cette function renvoie que les points extraimes, et supprime tous les autres points... ''' cnt = len(contours) print 'nombre de contours est: ', cnt ''' pixel list ''' nb_repetitions = cnt i = 0 while i<= nb_repetitions: cnts = contours[i] print 'cnts= ', cnts cv2.drawContours(im, [cnts], 0, (0,255,0), 3) #dessiner contour cv2.imshow ('affichage',im) cv2.waitKey (0) cv2.destroyAllWindows () fichier = open("data.txt", 'w') fichier.write("coordonnees des contours extraits sont: \n\n") fichier.write("coordonnées des contours: \n") for x in range(len(im)): #parcourir les lignes for y in range(len(im[x])): #parcours des colonnes pour chaques lignes #if cnts[x][y] == : probleme je sais pas quelle condition dois je mettre fichier.write("\n" +repr((x ,y))) i = i+1 #boucle fichier.close() if i > nb_repetitions: print "ERROR! i > nb_repetitions '_°" raw_input("Appuyer sur ENTER pour terminer le programme. ")
Merci d'avance!!
Partager