首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SVG filter feMatrixColor实现HTML页面中的Chromakey

使用SVG filter feMatrixColor实现HTML页面中的Chromakey
EN

Stack Overflow用户
提问于 2019-04-25 23:01:39
回答 1查看 342关注 0票数 0

我正在实现一个实时色键,以便将网页中摄像头显示的绿色像素转换为透明像素。

我发现的SVG过滤器看起来非常强大,但我仍然不清楚如何使用它。

来自SVG:https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix的feMatrixColor过滤器

我发现这个示例https://codepen.io/iamschulz/pen/MmxdMQ与我正在尝试做的事情很接近。

我必须在应用程序加载时校准颜色,为此,我需要生成匹配的颜色矩阵。

代码语言:javascript
复制
 <feColorMatrix type="matrix" 
   values="1   0   0   0   0 
           0   1   0   0   0  
           0   0   1   0   0 
           1.5 -2  1.5 0   1" />

上面是一个例子,对于定义的绿色,alpha设置为零。我没有把它作为一个完美的参考,但它是有效的。此外,我注意到最后一列在渲染中做了很多工作,我不知道它的作用是什么。根据这个值,最终结果的质量会有很大的变化。

我想创建一个函数,它返回一个矩阵,在输入中选择一个颜色,但我不理解该矩阵背后的逻辑。

EN

回答 1

Stack Overflow用户

发布于 2019-04-26 01:50:14

这是一个我使用svg滤镜去除绿色的例子。我已经使用了这个工具(可以拖放图像)来获得正确的过滤器:https://codepen.io/enxaneta/full/ENRZGO

代码语言:javascript
复制
<svg viewBox="0 0 90 50">
  <defs>
<filter id="f">
   <feColorMatrix in="SourceGraphic" 
                  type="matrix" 
                  values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 -1 1 "></feColorMatrix>
</filter>
  </defs>
  <g filter="url(#f)">
  <rect fill="red" width="30" height="50" />
  <rect fill="green" x="30" width="30" height="50" />
  <rect fill="blue" x="60" width="30" height="50" />
  </g>
</svg>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55852338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档