comment détecter la région du grand nombre de pixels blancs en utilisant opencv?
je veux détecter le logo de l'intérieur de l'image afin de la retirer , j'ai une idée c'est de regarder les objets qui ont le grand nombre de pixels retirez ensuite , une autre idée est de parcourir tous les pixels blancs(j'ai inversé mon image) et de regarder pour les pixels, qui forme une large région, puis de supprimer cette région, il y a de l'algorithme mieux que celui la aussi des méthodes dans opencv va m'aider à détecter objet d'un grand nombre de pixels.
source d'informationauteur chostDevil
Vous devez vous connecter pour publier un commentaire.
J'ai une méthode pour ce faire. Je ne sais pas si cette méthode applicable à tous, mais il fonctionne bien ici.
Ci-dessous est le code ( en Python ):
D'abord convertir l'image en niveaux de gris, redimensionnement de l'image, appliquer de seuil, et de faire un masque d'image de la même taille et du type de celle de redimensionnement image en niveaux de gris. (Image du masque est juste une image noire)
Maintenant trouver les contours dans le seuil de l'image. Filtre le contour de la zone entre 500 à 5000. Il sera probablement un grand blanc, goutte, évidemment, pas de lettres. (Rappelez-vous, ce domaine est notamment pour cette image. Je ne sais pas sur vos autres images. Vous devrez trouver vous-même). Dessinez maintenant ce contour sur l'image du masque rempli de couleur blanche.
Below is the detected contour image:
Next is the mask image:
Maintenant, vous inverser l'image à l'aide de
cv2.bitwise_not
fonction. Là, vous avez l'option pour donner masque où nous donnons notre image de masque, de sorte que la fonction n'opère que sur la zone de saisie de l'image où il y a du blanc dans le masque de l'image.Et enfin montrer l'image :
Et voici le résultat:
REMARQUE:
Méthode ci-dessus est fait pour la préserver "ORANGE" dans le carré blanc. C'est pourquoi certains objets sont là. Si vous ne voulez pas que l'orange aussi, il peut être plus précis.
Viens de trouver sur le rectangle de délimitation de la zone de filtration de contours et de tracer un rectangle rempli avec la couleur noire.
Code :
Résultat :
détecté cadre rects:
Puis fillout ces rectangles noir:
C'est mieux que les précédents , bien sûr, si vous ne voulez pas "ORANGE")
Vous pouvez utiliser des filtres morphologiques (peut-être en alternance séquentielle de filtrage), afin de simplifier votre multi-couleur de l'image et d'utiliser un algorithme de segmentation comme bassin versant ou de certains granulométrie méthode et choisir l'objet le plus grand. Vous pouvez trouver plusieurs implémentations en ligne. Mais cela ne fonctionne que si le logo est discret (par exemple, pas sur le fond)