第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將畫布準確地堆疊在網(wǎng)絡攝像頭流的頂部?

如何將畫布準確地堆疊在網(wǎng)絡攝像頭流的頂部?

達令說 2023-01-06 09:43:12
這是代碼:<!DOCTYPE html><html>    <head>        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script>        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>        <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgl"></script>        <meta charset="UTF-8" />        <meta name="viewport" content="width=device-width, initial-scale=1.0" />        <title>Document</title>        <script>            async function get_facemesh() {                var canvas = document.getElementById("facemesh");                var draw = canvas.getContext("2d");                const stream = document.getElementById("movie");                const model = await facemesh.load((maxFaces = 1));                while (1) {                    const faces = await model.estimateFaces(stream);                    if (faces.length != 0) {                        canvas.width = canvas.width;                        var mesh = faces[0].scaledMesh;                        var widthAcross = mesh[454][0] - mesh[234][0];                        var heightVertical = mesh[152][1] - mesh[10][1];                        console.log(heightVertical);                        draw.fillStyle = "red";                        for (var i = 0; i < mesh.length; i++) {                            draw.fillRect(mesh[i][0], mesh[i][1], 2, 2);                        }                    } else {                        console.log(`No faces have been detected`);                    }                    await tf.nextFrame();                }            }這是為那些喜歡的人提供的 codepen.io 鏈接:https ://codepen.io/mdsiam8/pen/gOrPayp 。我嘗試使用位置固定技巧,但它沒有用,即使它們正好在彼此之上。感覺畫布有點拉伸或者稍微向左變形。我試著擺弄這個但我找不到解決辦法,所以如果你們中的任何人能幫助解決這個問題,我將不勝感激。順便說一下,我知道在網(wǎng)絡攝像頭上偏移的小臉網(wǎng)是不正常的,因為我有另一個文件并使用了位置固定技巧,而且那個是完美的,所以我不確定為什么它不是這個也是如此。
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經(jīng)驗 獲得超16個贊

的和屬性設置<video>元素視覺內(nèi)容的維度” ref,這意味著僅顯示元素的顯示方式。 您的面部檢測器正在視頻數(shù)據(jù)上處理視頻的固有尺寸,即由媒體本身定義的尺寸,而不是由元素定義的尺寸,元素在顯示視覺內(nèi)容時會拉伸或縮小視覺內(nèi)容。widthheight

另一方面,畫布的widthheight屬性確實設置了它的內(nèi)在尺寸。

所以這兩種媒體的內(nèi)在尺寸實際上是不同的,視頻中的坐標與畫布中的坐標不匹配。

要解決此問題,您只需將畫布的和width分別設置為和,使其與視頻內(nèi)容的固有尺寸相匹配,然后通過 CSS調(diào)整其大小,使其與元素的顯示尺寸相匹配。heightvideo.videoWidthvideo.videoHeight<video>

但是請注意,MediaStreams 可以在播放時更改其尺寸,因此您可能需要resize監(jiān)聽<video>.

鏈接到更新的代碼筆,因為 StackSnippets 不允許 gUM。

最顯著的變化:

const canvas = document.getElementById("facemesh");

const video = document.getElementById("movie");

if (navigator.mediaDevices.getUserMedia) {

  navigator.mediaDevices.getUserMedia({ video: true })

    .then( stream => {

    video.srcObject = stream;

    video.addEventListener( "resize", (evt) => {

      canvas.width = video.videoWidth;

      canvas.height = video.videoHeight;

    } );

    // don't poll, use events

    video.addEventListener( "loadedmetadata", (evt) => {

      get_facemesh();

    } );

  } );

}

video,

canvas {

  -webkit-transform: scaleX(-1);

  transform: scaleX(-1);

  position: fixed;

  margin: 0 auto;

  /* here set the same display dimensions */

  width: 600px;

  height: 450px;

  /* force same object fit too */

  object-fit: contain;

}

<div class="webcam">

  <video autoplay id="movie"></video>

  <canvas id="facemesh"> </canvas>

</div>


查看完整回答
反對 回復 2023-01-06
  • 1 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號