简单的人脸识别(video+canvas)

文章讲述了使用HTML5的video和canvas元素结合JavaScript来访问摄像头并实时截图。通过navigator.mediaDevices.getUserMedia获取摄像头流,然后将视频流绑定到video元素,并在canvas上绘制视频帧以实现截图。截取的图片转化为base64编码,进一步转换为file对象,最后发送到后端进行人脸识别,后端利用阿里云的API处理这些数据。
摘要由CSDN通过智能技术生成
  <video v-show="isVideo" id="video" autoplay playsinline webkit-playsinline="true"
            style="transform: rotate(-90deg);width:266px;height:199px;position: absolute;top:0;right:-33px;z-index: 10;"></video>
        <canvas style="display: none;position: absolute;top:0;right:-33px;;z-index: 12;transform: rotate(-90deg);"
            width="300" height="300" id="canvasCamera"></canvas>

使用的是常见的video+canvas方法。创建dom元素,绑定ID,

js部分就是获取设备的摄像头并和dom部分的元素绑定,

//打开摄像头
const startCamera = () => {
    try {
        navigator.mediaDevices.getUserMedia({ video: { width: 266, height: 199 } })
            .then((stream) => {
                video = document.querySelector('video')
                canvas = document.querySelector('canvas')
                var _context2d = canvas.getContext("2d");
                MediaStreamTrack = typeof stream.stop === 'function' ? stream : stream.getTracks()[0];
                video.srcObject = stream;
                video.onloadedmetadata = function (e) {
                    video.play();
                };
                //延时截取画面
                setTimeout(() => {
                    btnTakePhotoClicked(_context2d, canvas, video)
                }, 1000)
            })
            .catch(function (err) {
                console.log("Error accessing camera: " + err);
            });

    } catch (error) {
        console.log(error);
    }
}

上面这一步就是点击打开按钮,就有画面了,切记若是开发环境调试,需要将开发的IP地址添加到浏览器的可信任网址当中。不然无法打开设备的摄像头。还有就是video元素不能使用v-if控制显示隐藏,会导致不知名错误。

//打开摄像头 截取画面
const btnTakePhotoClicked = (_context2d, canvas, video) => {
    _context2d.drawImage(video, 0, 0, 300, 300)
    var img = document.createElement("img"); // 创建img元素
    img.src = canvas.toDataURL("image/png"); // 截取视频第一帧
    base64ToFile(img.src, 'image')
}

这部分是对开启的摄像进行截图获取照片 里面的base64ToFile 是将base64 转化为file 文件传参给后端 在这里找到的方法。Uncaught DONException: Failed to execute ‘atob‘ on “window ‘: The string to be decoded is not carrec..._hello芳芳的博客-CSDN博客

 之后就是将处理好的图片 传给后端进行人脸识别,后端使用的是阿里的API。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值