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)