OpenCV nos proporciona la función cv2.calcHist() para calcular los histogramas de las imágenes. Podríamos aplicarlo para calcular el histograma de los canales de color constituyentes (azul, verde y rojo) de la imagen. Cuando leemos la imagen usando el método cv2.imread() , la lectura de la imagen está en formato BGR. Podríamos usar la siguiente sintaxis para la función cv2.calcHist() .
función cv2.calcHist():
Sintaxis: cv2.calcHist(imágenes, canales, máscara, tamaño hist, rangos[, hist[, acumular]])
Parámetros:
- imágenes: lista de imágenes como arrays numpy. Todas las imágenes deben ser del mismo tipo y tamaño.
- canales: lista de los canales utilizados para calcular los histogramas.
- máscara: máscara opcional (array de 8 bits) del mismo tamaño que la imagen de entrada.
- histSize: tamaños de histograma en cada dimensión
- ranges: Array de las arrays de dims de los límites de bin del histograma en cada dimensión
- hist: histograma de salida
- acumular: indicador de acumulación, permite calcular un único histograma a partir de varios conjuntos de arrays.
Retorno: Devuelve una array de puntos de histograma de dtype float32.
Entendamos la función cv2.calcHist() con la ayuda de algunos ejemplos de Python.
La siguiente imagen se utiliza como imagen de entrada en los ejemplos siguientes.
Ejemplo 1:
En este ejemplo, calculamos el histograma del canal de color azul de la imagen de entrada «montaña.jpg» usando la función cv2.calcHist() . Pasamos el parámetro canales = [0] para calcular el histograma del canal azul. También trazamos el histograma usando Matplotlib.
Python3
# Python program to compute and visualize the # histogram of Blue channel of image %matplotlib inline # importing libraries import cv2 import numpy as np from matplotlib import pyplot as plt # reading the input image img = cv2.imread('mountain.jpg') # computing the histogram of the blue channel of the image hist = cv2.calcHist([img],[0],None,[256],[0,256]) # plot the above computed histogram plt.plot(hist, color='b') plt.title('Image Histogram For Blue Channel GFG') plt.show()
Producción:
Ejemplo 2:
En este ejemplo, calculamos el histograma del canal de color verde de la imagen de entrada “ montaña.jpg ” usando la función cv2.calcHist() . Pasamos el parámetro canales = [1] para calcular el histograma del canal verde. También trazamos el histograma usando Matplotlib.
Python3
# Python program to compute and visualize the # histogram of Green channel of image %matplotlib inline # importing libraries import cv2 import numpy as np from matplotlib import pyplot as plt # reading the input image img = cv2.imread('mountain.jpg') # computing the histogram of the green channel of the image hist = cv2.calcHist([img],[1],None,[256],[0,256]) # plot the above computed histogram plt.plot(hist, color='g') plt.title('Image Histogram For Green Channel GFG') plt.show()
Producción:
Ejemplo 3:
En este ejemplo, calculamos el histograma del canal de color rojo de la imagen de entrada «montaña.jpg» usando la función cv2.calcHist(). Pasamos el parámetro canales = [2] para calcular el histograma del canal rojo. También trazamos el histograma usando Matplotlib.
Python3
# Python program to compute and visualize the # histogram of Red channel of image %matplotlib inline # importing libraries import cv2 import numpy as np from matplotlib import pyplot as plt # reading the input image img = cv2.imread('mountain.jpg') # computing the histogram of the Red channel of the image hist = cv2.calcHist([img],[2],None,[256],[0,256]) # plot the above computed histogram plt.plot(hist, color='r') plt.title('Image Histogram For Red Channel GFG') plt.show()
Producción:
Ejemplo 4:
En este ejemplo, calculamos el histograma de los tres canales de color de la imagen de entrada «montaña.jpg» usando la función cv2.calcHist(). Usamos un bucle for para iterar sobre los tres canales de color. También trazamos el histograma usando Matplotlib.
Python3
# Python program to compute and visualize the # histogram of image for all three channels %matplotlib inline # importing libraries import cv2 import numpy as np from matplotlib import pyplot as plt # reading the input image img = cv2.imread('mountain.jpg') # define colors to plot the histograms colors = ('b','g','r') # compute and plot the image histograms for i,color in enumerate(colors): hist = cv2.calcHist([img],[i],None,[256],[0,256]) plt.plot(hist,color = color) plt.title('Image Histogram GFG') plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por shahidedu7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA