0% ont trouvé ce document utile (0 vote)
4 vues5 pages

Détection et Segmentation d'Images avec OpenCV

Le document présente des programmes utilisant OpenCV pour la détection de points d'intérêt, l'étiquetage d'images et la segmentation d'objets. Il inclut également des applications de la transformation de Hough pour identifier des pièces de monnaie dans des images, ainsi que le calcul de leur valeur totale. Les résultats sont affichés visuellement et sauvegardés dans un fichier JSON.

Transféré par

Anass ibn tahaikt
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues5 pages

Détection et Segmentation d'Images avec OpenCV

Le document présente des programmes utilisant OpenCV pour la détection de points d'intérêt, l'étiquetage d'images et la segmentation d'objets. Il inclut également des applications de la transformation de Hough pour identifier des pièces de monnaie dans des images, ainsi que le calcul de leur valeur totale. Les résultats sont affichés visuellement et sauvegardés dans un fichier JSON.

Transféré par

Anass ibn tahaikt
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

MST MBD-SIM/M31 Labs OpenCV-Python M.

AIT KBIR

# Détection des points d’intérêt par l’opérateur de Harris


import numpy as np
import cv2 as cv

img = [Link]('../images/[Link]')
imgGray = [Link](img,cv.COLOR_BGR2GRAY)
imgFloat= np.float32(imgGray)

# Deuxième et troisième paramètre : taille du voisinage et taille de masque de Sobel


# Quatrième paramètre : paramètre libre qui apparait dans la formule prévue par Harris
dst = [Link](imgFloat,7,5,0.1)

# Choix du seuil optimal, il dépend de l'image


seuil = 0.0001*[Link]()
dim = [Link]
for i in range(dim[0]):
for j in range(dim[1]):
if dst[i,j]>seuil:
[Link](img,(j,i),3,(0,0,255),2)

[Link]('dst',img)
[Link](0)
[Link]()

#------------------------------------------------------ Ligne de partage des eaux --------------------------------------------------------

import numpy as np
from random import randrange
import cv2 as cv

# Lecture
img = [Link]('../images/[Link]')
[Link]('Originale',img)

# Seuillage

2022-2023 1
MST MBD-SIM/M31 Labs OpenCV-Python M. AIT KBIR

gray = [Link](img,cv.COLOR_BGR2GRAY)
ret, thresh = [Link](gray,100,255,cv.THRESH_BINARY)

# Erosion pour définir les marqueurs (points à 255 appartienent aux objets)
kernel = [Link]((3,3),np.uint8)
objets = [Link](thresh,kernel,iterations=12)
[Link]('Marqueurs',objets)

# dilatation : pointsà 0 appartiennet au fond


fond = [Link](thresh,kernel,iterations=12)

# Étiquettage de l'image binaire


ret, markers = [Link](objets)
markers[markers>0] += 1

# Marquer les points fonds avec l'étiquette 1


markers[fond==0] = 1
[Link]('Étiquetage',np.uint8(markers*20))

# Application de l'algorithme ( -1 : Pour les bordures )


markersw = [Link](img,markers)

# Affichage en couleur
imgr1 = [Link]([Link],np.uint8)

# Affichage des lignes de partage des eaux en blanc


imgr1[markersw == -1] = [255, 255, 255]

# Couleur aléatoire par composante (Pour ne pas colorier le fond, on commence par l’étiquette 2)
for label in range(2, [Link]()+1):
imgr1[markersw == label] = [randrange(256), randrange(256), randrange(256)]

[Link]('Segmentation',imgr1)

[Link](0)
[Link]()

- Image originale - Image des marqueurs - Image des marqueurs étiquetée - image segmentée

2022-2023 2
MST MBD-SIM/M31 Labs OpenCV-Python M. AIT KBIR

# Application de la transformation de Hough pour le calcul de la somme de la monnaie dans une image

------------------ 1er programme -----------------

# Correspondance Rayon et valeur de la monnaie (l’image [Link] contient les pièces à utiliser)
import cv2
import json
import numpy as np

def main():

img = [Link]('[Link]', 1)
gris1 = [Link](img,cv2.COLOR_BGR2GRAY)

# pré-traitement
kernel = [Link]((11,11),np.uint8)
gris2 = [Link](gris1, cv2.MORPH_OPEN, kernel)
gris2 = [Link](gris2,(11,11),5)

# Hough
circles = [Link](gris2,cv2.HOUGH_GRADIENT,1,120,
param1=120,param2=25,minRadius=50,maxRadius=100)
circles = np.uint16([Link](circles))

j=0
pieces = {0:0.05, 1:0.1, 2:0.5, 3:1, 4:2}
dic={}
for i in circles[0,:]:
print(j,':','(',i[0],i[1],')',i[2])
j=j+1
# Tracer
[Link](img,(i[0],i[1]),i[2],(0,255,0),2)
[Link](img,(i[0],i[1]),2,(0,0,255),3)

[Link]('Cercles', img)
print('0:0.05, 1:0.1, 2:0.5, 3:1, 4:2 ( Euros ) : ')
val = [Link](0)-48
dic[str(i[2])]= float(pieces[val])

# Afficher et sauvegarde
print(dic)
with open('[Link]', 'w') as fp:
[Link](dic, fp)

[Link](0)
[Link]()

if __name__ == "__main__":
main()

------------------ 2ème programme -----------------

# Calcul de la somme de monnaie (application sur une nouvelle image : [Link])


import cv2

2022-2023 3
MST MBD-SIM/M31 Labs OpenCV-Python M. AIT KBIR

import json
import numpy as np

def valeur(x,d):
kmin=1000
for k, v in [Link]():
if [Link](int(k)-x)<kmin :
kmin = [Link](int(k)-x)
vmin = v

return float(vmin);

def main():

img = [Link]('[Link]', 1)
gris1 = [Link](img,cv2.COLOR_BGR2GRAY)

# Pré-traitement
kernel = [Link]((11,11),np.uint8)
gris2 = [Link](gris1, cv2.MORPH_OPEN, kernel)
gris2 = [Link](gris2,(11,11),5)

# Hough
circles = [Link](gris2,cv2.HOUGH_GRADIENT,1,120,
param1=120,param2=25,minRadius=50,maxRadius=100)
circles = np.uint16([Link](circles))

#Lecture des paramètres


with open('[Link]', 'r') as fp:
dic = [Link](fp)

somme = 0.0;
for i in circles[0,:]:
somme = somme+valeur(i[2],dic)
[Link](img,(i[0],i[1]),i[2],(0,255,0),2)

somme = [Link](somme,2)

# Affichage
img = [Link](img, 'Somme : '+str(somme)+' Euros.', (10, 50), cv2.FONT_HERSHEY_SIMPLEX,
1, (0, 0, 255), 1, cv2.LINE_AA)

[Link]('Somme en Euros', img)


[Link](0)
[Link]()

if __name__ == "__main__":
main()

Résultat:

2022-2023 4
MST MBD-SIM/M31 Labs OpenCV-Python M. AIT KBIR

1er programme :

2ème programme :

2022-2023 5

Vous aimerez peut-être aussi