繁体   English   中英

如何从js中的网络摄像头获取原始图像?

[英]How to get original image from webcam in js?

如何使左侧的网络摄像头视频与绘制图像的右侧的格式相同?

有这个问题一段时间了,无法解决!

在此处输入图片说明

这是代码:

document.getElementById('capture').addEventListener('click', function() {
    var w = video.videoWidth;
    var h = video.videoHeight;
    canvas.width = w;
    canvas.height = h;
    context.drawImage(video,0,0,w,h);
    canvas.style.display='block';

});

您使用的是视频html元素的大小,而不是流的大小。 这就是照片被拉伸的原因。 您应该使用视频轨道的大小。

如果在调用MediaDevices.getUserMedia时指定了它, 使用这些值。 否则,从视频轨道( MediaStreamTrack.getSettings() )中检索它们。

video.videoWidth不是视频的实际宽度,因此您在新画布上会得到不同的比率。 尝试这个:

var videoRatio = video.videoWidth / video.videoHeight;
var width = video.offsetWidth, height = video.offsetHeight;
var elementRatio = width/height;
if(elementRatio > videoRatio) width = height * videoRatio;
else height = width / videoRatio;

canvas.width = width;
canvas.height = height;
context.drawImage(video,0,0,width,height);
canvas.style.display='block';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM