В области лба вычисляются средние значения красного и синего цвета для текущего кадра. Формируется массив разностей значений цвета для n последних кадров
Делаю я это вот так:
import random from PIL import Image def averageColor(cv, image, frequency = 1): size = cv.GetSize(image) width = size[0] height = size[1] count = int(round((frequency * (width * height)) / 100)) sumR = 0 sumB = 0 squareR = 0 squareB = 0 rgb = [] i=0 while i < count: x = random.randint(0, width - 1) y = random.randint(0, height - 1) color = image[y, x] sumR += color[0]; sumB += color[2]; averR = int((sumR / count) << 16) averB = int( sumB / count) i += 1 return (averR, averB)
Получаю массив разностей:
colors = average.averageColor(cv, image) diff = colors[0] ^ colors[1]
Дальше к нему надо применить БПФ:
К массиву применяется быстрое преобразование Фурье. В полученном спектре ищется частота, удовлетворяющая следующим условиям: лежит в диапазоне, соответствующем пульсу (0.9-2.0 Гц); является максимальной в указанном диапазоне.
И тут собственно и застрял. Пробовал сделать как на скрине, не помогло.
Взято отсюда http://www.mce.su/rus/presentations/p184924/