У меня есть видео с зеленым фоном. Я хочу удалить этот зеленый раздел (хроматический ключ), сделав его прозрачным, а затем отобразить видео поверх фон сайта.
Я могу найти только сложный код, который использует изображения.
У меня есть видео с зеленым фоном. Я хочу удалить этот зеленый раздел (хроматический ключ), сделав его прозрачным, а затем отобразить видео поверх фон сайта.
Я могу найти только сложный код, который использует изображения.
Исходная информация: video element
может быть источником изображения для холста html5. Это означает, что кадр видео можно нарисовать на холсте (и управлять им).
Обзор. Метод context.getImageData
получает пиксельные данные RGBA холста в виде массива. После изменения данных пикселей массива context.putImageData
поместит измененные пиксели обратно на холст.
План Используйте CSS, чтобы расположить холст html5 поверх фона сайта. Используйте этот холст для рисования видеокадров поверх сайта (с зеленоватыми видеопикселями, сделанными прозрачными, чтобы сквозь них был виден фон сайта).
(с вашей стороны требуется некоторая сборка и обучение):
Разместите элемент холста html5, закрывающий фон веб-сайта.
Внутри временной петли (requestAnimationFrame
):
context.clearRect
,context.drawImage(video,0,0)
,context.getImageData
,if(green>220 && red<20 && blue<20)
,(alpha=0)
,context.putImageData
,Ссылки, которые помогут вам в обучении
Предыдущее сообщение Stackoverflow относительно № 2: Поместите тег видео на тег холста
Предыдущий пост Stackoverflow относительно № 3-6: Циклический просмотр пикселей в изображении< /а>
rec<20 && green<20 && blue>220
. :-)
- person markE; 02.11.2016
green > red + reverse_tolerance && green > blue + tolerance
у меня работал лучше, но все равно очень плохо. А нет ли более точного? Я думаю, что формат HSL может помочь больше.
- person Eksapsy; 06.03.2018