canvas像素点操作之视频绿幕抠图

这篇文章主要介绍了canvas像素点操作之视频绿幕抠图的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

 本文介绍了canvas像素点操作之视频绿幕抠图,分享给大家,具体如下:

用法:

context.putImageData(imgData, x, y, dX, dY, dWidth, dHeight);

登录后复制

 1.jpg

下面的栗子简单实现了几个简单的滤镜效果,具体算法参考的这里,学过《数字图像处理》的同学应该对此理解更深刻。

demo

canvas像素点操作之视频绿幕抠图

该栗子纯属为了演示功能而做,如果只强调效果而不在乎数据的话,用CSS3的filter属性便能高效又轻松地搞定。

部分代码

import imgUrl from './component/sample.jpg';export default {data () {return {imgUrl: imgUrl}},methods: {onOperate1 () {this.ctx.putImageData(this.onCompute1(), 0, 0);},onOperate2 () {this.ctx.putImageData(this.onCompute2(), 0, 0);},...onCancel () {this.reload();},onCompute1 () {let data = this.frameData.data;        for (let i = 0; i 

上周跟同学去了一趟溧阳天目湖的南山竹海,在景区被忽悠拍了一张照片,就是这张 ——

canvas像素点操作之视频绿幕抠图

然后被朋友圈吐槽抠图。其实当时就是站在一块绿幕前拍的:joy: 。

PS中魔法棒工具可以把图片中一定容差下的相近像素都选中、清空,轻松做到一键“抠图”,前提是主体一定要与背景有大的差异,即像素值差值越大,抠图效果越好。

Canvas同样可以做到,并且可以处理视频帧,其中的原理是一样的 —— 将每个视频帧中绿幕的像素块透明度置0即可。像这样 ——

demo

canvas像素点操作之视频绿幕抠图

部分代码

import videoUrl from './component/video.ogv';import imgUrl from './component/sample.jpg';const TOLERANCE = 5;export default {data () {return {videoUrl: videoUrl,imgUrl: imgUrl}},methods: {draw () {if (this.video.paused || this.video.ended) {          return;        }this.ctx.drawImage(this.video, 0, 0, this.width, this.height);this.ctx.putImageData(this.cutOut(), 0, 0);},cutOut () {let frameData = this.ctx.getImageData(0, 0, this.width, this.height),len = frameData.data.length / 4;        for (let i = 0; i = TOLERANCE            && g - 100 >= TOLERANCE            && b - 43  {            this.width = this.video.videoWidth;            this.height = this.video.videoHeight;            this.timer && clearInterval(this.timer);            this.timer = setInterval(() => {            this.draw();            }, 50);        }, false);}}

登录后复制

参考资料

Manipulating video using canvas

 Pixel manipulation with canvas

Canvas and images and pixels

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问Html5视频教程!

相关推荐:

php公益培训视频教程

HTML5图文教程

HTML5在线手册

以上就是canvas像素点操作之视频绿幕抠图的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2908991.html

(0)
上一篇 2025年3月11日 03:18:13
下一篇 2025年3月11日 03:18:25

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • html5使用canvas压缩图片的示例代码

    这篇文章主要介绍了html5使用canvas压缩图片的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。 前俩天做了一个图片转base64上传的功能,发现如果图片的base64过大的话,请求会变的很慢,严重的直接超时了…

    编程技术 2025年3月11日
    000
  • 用canvas画心电图的示例代码

    这篇文章主要介绍了用canvas画心电图的示例代码的相关资料,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 本文介绍了用canvas画心电图的示例代码,分享给大家,具体如下: 效果图: 思路: 1.模拟点(如果你有真实的…

    2025年3月11日
    200
  • Html5 canvas实现粒子时钟的示例代码

    这篇文章主要介绍了html5 canvas实现粒子时钟的示例代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 我们先看看粒子时钟的效果,如下: 下面我们将通过canvas和js实现, 首先要创建一个html文件并添加一…

    2025年3月11日
    200
  • canvas离屏技术与放大镜实现代码示例

    这篇文章主要介绍了canvas离屏技术与放大镜实现代码示例的相关资料,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 利用 canvas 除了可以实现滤镜,还可以利用 离屏技术 放大镜功能。 为了方便讲解,本文分为 2 个…

    2025年3月11日
    200
  • canvas学习和滤镜实现代码

    这篇文章主要介绍了canvas学习和滤镜实现代码,利用 canvas,前端人员可以很轻松地、进行图像处理,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 在这个数码产品泛滥的时代里,拍照已经成为生活不可或缺的一部分,不管是…

    2025年3月11日
    200
  • 基于 HTML5 Canvas 的 3D 渲染引擎界面以及吸附等效果的运用

    本文给大家介绍基于 html5 canvas 的 3d 渲染引擎界面以及吸附等效果的运用 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 效果图 代码实现 HT 提供了基于 WebGL 的 3D 技术的图形组件 ht.g…

    2025年3月11日 编程技术
    200
  • 如何使用canvas画出平滑的曲线?(代码)

    本篇文章给大家带来的内容是关于如何使用canvans画出平滑的曲线?(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 背景概要 相信大家平时在学习canvas 或 项目开发中使用canvas的时候应该都遇到过这样的需…

    2025年3月11日 编程技术
    200
  • html5 canvas如何实现图片切换(代码)

    本篇文章给大家带来的内容是关于html5 canvas如何实现图片切换(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 这几天研究canvas制作动态背景的时候,发现这个东西稍微改改就变成图片切换的功能了,可以代替动…

    编程技术 2025年3月11日
    200
  • Canvas中beginPath()和closePath()的分析总结(附示例)

    本篇文章给大家带来的内容是关于Canvas中beginPath()和closePath()的分析总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在学习h5新元素的时候,了解到了画布canvas:可以在网页中绘…

    2025年3月11日
    200
  • 用canvas实现简单的下雪效果(附代码)

    本篇文章给大家带来的内容是关于用canvas实现简单的下雪效果(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 首先新建一个html文件,将body的背景设置为天空的那种深蓝色,并创建一个canvas,canvas…

    2025年3月11日
    200

发表回复

登录后才能评论