Я занимаюсь обработкой видео с помощью GPUImage2. Когда приложение запускается, я создаю гексагональную сетку и добавляю ее в свой CameraView. Сетка полноэкранная и состоит из около 100 шестиугольников. В общем, я пытаюсь достичьGPUImage: Как определить средний цвет в шестиугольниках?
Для каждого кадра я хочу найти средний цвет (в RGB или даже лучше HSV) в каждой ячейке сетки. Когда цвет определен, я хочу нарисовать что-то в центре каждого шестиугольника в зависимости от его среднего цвета.
У меня есть массив с шестиугольниками, каждый из которых знает координаты его вершин и центр. У меня также есть массив с UIBezierPaths, который содержит ограничения этих шестиугольников (на всякий случай).
Так что мой код выглядит следующим образом
class ViewController: UIViewController {
var hexagons = [HKHexagon]()
var hexagonsBounds = [UIBezierPath]()
let averageColorExtractor = AverageColorExtractor()
override func viewDidLoad() {
super.viewDidLoad()
do {
camera = try Camera(sessionPreset:AVCaptureSessionPreset1920x1080)
camera.delegate = self
cameraView.orientation = .landscapeLeft
camera --> cameraView
camera.startCapture()
drawGrid()
} catch {
fatalError("Could not initialize rendering pipeline: \(error)")
}
}
}
extension ViewController: CameraDelegate {
func didCaptureBuffer(_ sampleBuffer: CMSampleBuffer) {
for hexagon in hexagons {
}
}
}
Я думаю didCaptureBuffer() должно быть место для применения averageColorExtractor для каждого шестиугольника, но не имеет представления о том, что делать дальше ..
I я новичок в разработке iOS, и это первый раз, когда я использую GPUImage2 ... Пожалуйста, направляйте меня в правильном направлении.