angular - 检测画布视频中的颜色变化
问题描述
我有一个 Angular 项目,它使用JSMPpeg 库在画布内显示实时流视频。有没有办法在帧更改时添加一些侦听器,可以检测画布特定部分的颜色?基本上,我需要检测流视频上的特定部分何时变为绿色。我注意到 JSMpeg 中有特定的选项:
onVideoDecode(decoder, time) 在每个解码和渲染的视频帧之后调用的回调
可能它应该有助于检测帧变化,但没有成功实现它,我仍然没有关于检测颜色的想法。甚至可能吗?
谢谢
解决方案
如果它是一个 2d 画布,你可以得到一个像素
const ctx = someCanvas.getContext('2d');
const imgData = ctx.getImageData(x, y, 1, 1);
const [r, g, b] = imgData.data;
如果它是一个 webgl 画布,你可以得到一个像素
const gl = someCanvas.getContext('webgl');
const data = new Uint8Array(4);
// in WebGL y = 0 is bottom of canvas
gl.readPixel(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, data);
const [r, g, b] = data;
在这两种情况下,r、g 和 b 的值都在 0 到 255 之间
因此,您可以检查某些 rgb 范围内的颜色或转换为其他颜色空间