Использование статистики изображения

Что делать, если нужно узнать средний цвет или цвет с наибольшей площадью в области?

Используйте statistics - Статистику!

ROI - область интереса

\ Формат roi - это кортеж (x, y, w, h).

  • x: координата x верхнего левого угла области ROI
  • y: координата y верхнего левого угла области ROI
  • w: ширина ROI
  • h: высота ROI

Статистика

image.get_statistics(roi=Auto)

Где roi - целевая область. Обратите внимание, что такие параметры, как roi и bins, должны быть заданы явно, например:

img.get_statistics(roi=(0,0,10,20))

Если написать img.get_statistics((0,0,10,20)), roi работать не будет.

  • statistics.mean возвращает среднее значение градаций серого (0-255) (int). Его также можно получить через statistics[0].

  • statistics.median возвращает медиану градаций серого (0-255) (int). Её также можно получить через statistics[1].

  • statistics.mode() возвращает моду(0-255) (int) градаций серого. Её также можно получить через statistics[2]

  • statistics.stdev() возвращает стандартное отклонение значения градаций серого(0-255) (int). Его также можно получить через statistics[3].

  • statistics.min() возвращает минимальное значение градаций серого(0-255) (int). Его также можно получить через statistics[4].

  • statistics.max возвращает максимальное значение градаций серого (0-255) (int). Его также можно получить через statistics[5].

  • statistics.lq возвращает первый квартиль градаций серого (0-255) (int). Его также можно получить через statistics[6].

  • statistics.uq возвращает третий квартиль градаций серого (0-255) (int). Его также можно получить через statistics[7].

Всё вышеперечисленное - значения градаций серого, а далее следуют

  • 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,

средние значения, медианы, моды, стандартные отклонения, минимумы, максимумы, первый и третий квартили трёх каналов LAB.

Пример

Определяем значение цвета в области в верхнем левом углу.

import csi, image, time
csi0 = csi.CSI()

csi0.reset() # инициализируем камеру
csi0.pixformat(csi.RGB565) # формат RGB565.
csi0.framesize(csi.QVGA)
csi0.snapshot(frames=10) # пропускаем 10 кадров, чтобы новые настройки вступили в силу
csi0.auto_whitebal(False)               # Create a clock object to track the FPS.

ROI=(80,30,15,15)

while(True):
    img = csi0.snapshot()         # Take a picture and return the image.
    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)

Результат:

Терминал

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

results matching ""

    No results matching ""