Как точно отфильтровать значение RGB для эффекта хроматического ключа
Я просто читалэтот учебник и попробовал этот пример. Поэтому я скачал видео из Интернета для собственного тестирования. Все, что мне нужно сделать, это настроить значения RGB в условиях
ЗДЕСЬ пример кода из примера
computeFrame: function() {
this.ctx1.drawImage(this.video, 0, 0, this.width, this.height);
let frame = this.ctx1.getImageData(0, 0, this.width, this.height);
let l = frame.data.length / 4;
for (let i = 0; i < l; i++) {
let r = frame.data[i * 4 + 0];
let g = frame.data[i * 4 + 1];
let b = frame.data[i * 4 + 2];
if (g > 100 && r > 100 && b < 43)
frame.data[i * 4 + 3] = 0;
}
this.ctx2.putImageData(frame, 0, 0);
return;
}
В учебном примере это фильтрация желтого (не желтого цвета). В загруженном образце видео используется зеленый фон. Поэтому я подправил значение rgb в условии if, чтобы получить желаемый результат
После нескольких попыток мне удалось получить это.
Теперь я хочу знать, как я могу точно отфильтровать зеленый экран (или любой другой экран), не догадываясь. Или случайное изменение значений.
Просто догадываясь, что это займет несколько часов, чтобы понять все правильно. И это всего лишь пример с приложением реального мира. Это может занять больше.
ПРИМЕЧАНИЕ: пример работает в Firefox сейчас ..