2017-10-06 10 views
0

Je souhaite trouver tous les composants connectés dans une plaque d'immatriculation. Tout d'abord, je limite mon image, puis j'utilise la fonction de composant connecté dans opencv pour marquer l'image binaire, mais le caractère dans la région rouge et le numéro 10 dans la région bleue ne sont pas détectés. Que puis-je faire pour détecter un personnage?Marquer des caractères dans une plaque spéciale

échantillon de plaque d'immatriculation:

enter image description here enter image description here

+0

le caractère B dans l'image 1 est dans la région rouge – sina

Répondre

0

Je parie que vous auriez probablement des problèmes aussi, si vous regardez l'image seuillée. Je suppose que vous avez utilisé un seul seuil (et éventuellement une échelle de gris). Mais vous avez trois effets en jeu ici: l'image est composée de plusieurs régions, elle est en couleur et il y a une ombre.

Vous voudrez peut-être regarder Adaptive Thresholding, peut-être suivie par Grab-cut

+0

je fais cinq image binaire différente en utilisant le seuillage adaptatif, mais ne fonctionne pas – sina

1

Essayez d'utiliser Niblack Thresholding. C'est ce que j'ai obtenu avec Window Size = 5 et k = 4.25 enter image description here

J'ai converti l'image en niveaux de gris, puis j'ai effectué le Seuil Niblack. Voici un exemple de code Python. (code ne comprend pas l'analyse des composants connectés et le masquage, qui est nécessaire pour obtenir la sortie à droite)

import cv2 
import numpy as np 
from skimage.filters import threshold_niblack 


image = cv2.imread('IRplate.jpg') 
B_Wimage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 


thresh = threshold_niblack(B_Wimage, window_size=5, k=4.25) 
ret,thresh = cv2.threshold(thresh,0,255,cv2.THRESH_BINARY_INV) 


cv2.imshow('A1',thresh) 
k = cv2.waitKey(0) 
cv2.destroyAllWindows() 

Vous aurez à faire une certaine érosion/dilatation et l'analyse des composants connectés sur l'image seuillée pour obtenir le résultat propre sur la droite.

Espérons que cela aide! :)