Я пытаюсь выполнить обработку видео, и я хочу иметь возможность эффективно получить все пиксели с красным цветом выше 100, зеленым цветом ниже 100 и синим цветом ниже 100. Мне удалось сделать это с помощью цикла for и выполнить 3 оценки на каждый пиксель, но это было слишком медленно и занимало 13 секунд на кадр. В настоящее время я использую cv2, чтобы получить изображение, и код обработки
retval = np.delete(frame, (0, 1), 2) #extracts just red of the pixels
retval = np.argwhere(retval>100) #extracts where red is above 100
retval = np.delete(retval, 2, 1) #removes the actual color value, leaving it as coordinates
Это оставляет мне частичное решение для всего, что имеет значение красного выше 100, но оно также включает в себя такие вещи, как коричневый и белый, что не является идеальным. Этот цикл должен произойти очень быстро, поэтому я хочу использовать numpy, но я не уверен, какие команды использовать. Любая помощь будет принята с благодарностью.
массив "frame" структурирован таким образом и имеет формат BGR, а не RGB. первый индекс - это координата x, второй - координата y, а третий - 0, 1 или 2, что соответствует синему, зеленому и красному.
[[[255, 0, 0],
[255, 0, 0],
[255, 0, 0],
...,
[ 8, 20, 8],
[ 12, 15, 20],
[ 16, 14, 26]],
[[255, 0, 0],
[ 37, 27, 20],
[ 45, 36, 32],
...,
[177, 187, 157],
[180, 192, 164],
[182, 193, 167]]]