contar el número de píxeles negros en una imagen en Python con OpenCV

Tengo el siguiente código de prueba en Python para leer, establecer un umbral y mostrar una imagen:

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() 

Me gustaría contar el número de píxeles dentro de la imagen con una etiqueta determinada, por ejemplo, negro. Cómo puedo hacer eso ? Miré los tutoriales de OpenCV pero no encontré ninguna ayuda 🙁

¡Gracias!

Para las imágenes en negro, obtiene el número total de píxeles (filas * cols) y luego lo resta del resultado que obtiene de countNonZero(mat) .

Para otros valores, puede crear una máscara utilizando inRange() para devolver una máscara binaria que muestre todas las ubicaciones del color / etiqueta / valor que desee y luego use countNonZero para contar cuántos de ellos hay.

ACTUALIZACIÓN (comentario de Per Miki):

Cuando intentas encontrar el número de elementos con un valor particular, Python te permite omitir la llamada inRange() y simplemente hacer:

 countNonZero(img == scalar_value) 
 import cv2 image = cv2.imread("pathtoimg", 0) count = cv2.countNonZero(image) print(count)