Uso de estadísticas de imagen
¿Qué pasa si quiero saber el color promedio o el color con mayor área en una región?
¡Use estadísticas... Statistics!
ROI, región de interés
\
El formato de roi es una tupla de (x, y, w, h).
- x: coordenada x de la esquina superior izquierda de la región ROI
- y: coordenada y de la esquina superior izquierda de la región ROI
- w: ancho de la ROI
- h: altura de la ROI
Statistics
image.get_statistics(roi=Auto)
Donde roi es la región objetivo. Tenga en cuenta que parámetros como roi y bins deben marcarse de forma explícita, por ejemplo:
img.get_statistics(roi=(0,0,10,20))
Si se escribe img.get_statistics((0,0,10,20)), el ROI no funcionará.
statistics.mean devuelve la media de la escala de grises (0-255) (int). También se puede obtener a través de statistics[0].
statistics.median devuelve la mediana de la escala de grises (0-255) (int). También se puede obtener a través de statistics[1].
statistics.mode() devuelve la moda (0-255) (int) de la escala de grises. También se puede obtener a través de statistics[2]
statistics.stdev() devuelve la desviación estándar del valor de escala de grises (0-255) (int). También se puede obtener a través de statistics[3].
statistics.min() devuelve el valor mínimo de la escala de grises (0-255) (int). También se puede obtener a través de statistics[4].
statistics.max devuelve el valor máximo de la escala de grises (0-255) (int). También se puede obtener a través de statistics[5].
statistics.lq devuelve el primer cuartil de la escala de grises (0-255) (int). También se puede obtener a través de statistics[6].
statistics.uq devuelve el tercer cuartil de la escala de grises (0-255) (int). También se puede obtener a través de statistics[7].
Lo anterior corresponde al valor de escala de grises, y lo siguiente
- l_mean, l_median, l_mode, l_stdev, l_min, l_max, l_lq, l_uq,
- a_mean, a_median, a_mode, a_stdev, a_min, a_max, a_lq, a_uq,
- b_mean, b_median, b_mode, b_stdev, b_min, b_max, b_lq, b_uq,
son la media, mediana, moda, desviación estándar, mínimo, máximo, primer cuartil y tercer cuartil de los tres canales LAB.
Ejemplo
Detecta el valor de color en el área superior izquierda.
import csi, image, time
csi0 = csi.CSI()
csi0.reset() # Inicializa la cámara
csi0.pixformat(csi.RGB565) # Formato RGB565.
csi0.framesize(csi.QVGA)
csi0.snapshot(frames=10) # Salta 10 fotogramas para que la nueva configuración surta efecto
csi0.auto_whitebal(False) # Crea un objeto de reloj para seguir los FPS.
ROI=(80,30,15,15)
while(True):
img = csi0.snapshot() # Toma una foto y devuelve la imagen.
statistics=img.get_statistics(roi=ROI)
color_l=statistics.l_mode
color_a=statistics.a_mode
color_b=statistics.b_mode
print(color_l,color_a,color_b)
img.draw_rectangle(ROI)
Resultado:

Terminal
56 66 51
56 66 55
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51
56 66 55
56 66 51
56 66 51
56 66 51
56 66 51
56 66 51