compter le nombre de pixels noirs dans une image en Python avec OpenCV
J'ai de la suite de test de code en Python pour lire, le seuil et l'affichage d'une image:
import cv2
import numpy as np
from matplotlib import pyplot as plt
# read image
img = cv2.imread('slice-309.png',0)
ret,thresh = cv2.threshold(img,0,230, cv2.THRESH_BINARY)
height, width = img.shape
print "height and width : ",height, width
size = img.size
print "size of the image in number of pixels", size
# plot the binary image
imgplot = plt.imshow(img, 'gray')
plt.show()
Je voudrais compter le nombre de pixels dans l'image avec une certaine étiquette, par exemple, noir.
Comment puis-je le faire ? J'ai regardé des tutoriels de OpenCV, mais n'a trouvé aucune aide 🙁
Merci!
OriginalL'auteur Aurélie JEAN | 2015-09-15
Vous devez vous connecter pour publier un commentaire.
Pour les images noir vous obtenez le nombre total de pixels (lignes*colonnes), puis soustraire le résultat que vous obtenez à partir de
countNonZero(mat)
.Pour les autres valeurs, vous pouvez créer un masque à l'aide
inRange()
pour retourner un masque binaire indiquant tous les endroits de la couleur/étiquette/valeur que vous voulez et ensuite utilisercountNonZero
de compter combien d'entre eux y sont.Mise à JOUR (Par Miki le commentaire):
Lorsque vous essayez de trouver le nombre d'éléments avec une valeur particulière, Python vous permet de passer les
inRange()
appel et il suffit de faire:J'ai mis à jour ma réponse, le nom de la fonction ne doit pas avoir été capitalisés. Il semble que l'ensemble de vos pixels ne sont pas noirs...en essayant de regarder
thresh
, il pourrait ne pas être ce que vous pensez qu'elle est. Si cela ne fonctionne pas, la marque de votre choix de réponse sur cette question pour montrer que c'est résolu et poser une autre question en montrant votre code. Mettre un lien vers cette question ici et je vais vous aider plus.désolé, ça fonctionne! Merci encore pour l'aide!!! vous avez raison, mon seuil de tolérance n'est pas bien défini dans ma fonction de seuil....
La bonne réponse. En python il y a un équivalent de ce code C++
countNonZero(img == scalar_value);
?Merci Rick.... Je suis tout à fait nouveau... 🙂
OriginalL'auteur Rick Smith
OriginalL'auteur Danny