HTML 5 태그 비디오 위에 직사각형 그리기

앤더슨 로시

캔버스를 사용하여 웹캠 ( "navigator.mediaDevices.getUserMedia"사용)과 HTML 5 태그 "video"로 캡처 한 이미지 중앙 위에 직사각형 100 x 100을 그리려고했습니다.

웹캠 이미지를 캡처하려면 다음을 사용합니다.

if (navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({audio: false, video: {facingMode: 'user'}})
        .then( function(stream) {
            //Definir o elemento víde a carregar o capturado pela webcam
            video.srcObject = stream;
            return stream;            
        })
        .catch(function(error) {
            alert("Error on open device");
        });
    }

이 이미지를 줄에 표시하려면 다음을 사용하십시오.

<video autoplay="true" id="webCamera">
            </video>

HTML 5 태그 비디오로 인쇄 된 이미지 위에 직사각형을 어떻게 그릴 수 있습니까?

내 코드는 다음과 같습니다.

camera.html

<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <!--Título-->
        <title>Camera Test</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="Apenas um teste"/>

        <!--OpenType-->
        <meta property="og:locale" content="pt_BR" />
        <meta property="og:type" content="website" />
        <meta property="og:title" content="" />
        <meta property="og:description" content="" />
        <meta property="og:url" content="" />
        <meta property="og:site_name" content="" />

        <!--CSS-->
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <div class="area">
            <video autoplay="true" id="webCamera">
            </video>
            <form target="POST">
                <textarea  type="text" id="base_img" name="base_img"></textarea>
                <button type="button" onclick="takeSnapShot()">Snapshot</button>
            </form>
            <img id="imagemConvertida"/>
            <p id="caminhoImagem" class="caminho-imagem"><a href="" target="_blank"></a></p>
            <!--Scripts-->
            <script src="script.js"></script>
        </div>
    </body>
</html>

script.js

function loadCamera(){
    //Captura elemento de vídeo
    var video = document.querySelector("#webCamera");
        //As opções abaixo são necessárias para o funcionamento correto no iOS
        video.setAttribute('autoplay', '');
        video.setAttribute('muted', '');
        video.setAttribute('playsinline', '');
        //--

    //Verifica se o navegador pode capturar mídia
    if (navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({audio: false, video: {facingMode: 'user'}})
        .then( function(stream) {
            //Definir o elemento víde a carregar o capturado pela webcam
            video.srcObject = stream;
            return stream;            
        })
        .catch(function(error) {
            alert("Error on open device");
        });
    }
}

function takeSnapShot(){
    //Captura elemento de vídeo
    var video = document.querySelector("#webCamera");

    //Criando um canvas que vai guardar a imagem temporariamente
    var canvas = document.createElement('canvas');
    canvas.width = video.videoWidth;
    canvas.height = video.videoHeight;
    var ctx = canvas.getContext('2d');

    //Desnehando e convertendo as minensões
    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);

    //Criando o JPG
    var dataURI = canvas.toDataURL('image/jpeg'); //O resultado é um BASE64 de uma imagem.
    document.querySelector("#base_img").value = dataURI;

    sendSnapShot(dataURI); //Gerar Imagem e Salvar Caminho no Banco
}

function sendSnapShot(base64){  
    var request = new XMLHttpRequest();
        request.open('POST', 'save_photos.php', true);
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');

        request.onload = function() {
            console.log(request);
            if (request.status >= 200 && request.status < 400) {
                //Colocar o caminho da imagem no SRC
                var data = JSON.parse(request.responseText);

                //verificar se houve erro
                if(data.error){
                    alert(data.error);
                    return false;
                }

                //Mostrar informações
                document.querySelector("#imagemConvertida").setAttribute("src", data.img);
                document.querySelector("#caminhoImagem a").setAttribute("href", data.img);
                document.querySelector("#caminhoImagem a").innerHTML = data.img.split("/")[1];
            } else {
                alert( "Error on save. Status:" + request.status );
            }
        };

        request.onerror = function() {
            alert("Error on save. Back-End fail.");
        }

        request.send("base_img="+base64); // Enviar dados
}


loadCamera();

style.css

body{
    font-family: sans-serif;
    margin: 0;
}

.area{
    margin: 10px auto;
    box-shadow: 0 10px 100px #ccc;
    padding: 20px;
    box-sizing: border-box;
    max-width: 500px;
}

.area video{
    width: 100%;
    height: auto;
    background-color: whitesmoke;
}

.area textarea{
    width: 100%;
    margin-top: 10px;
    height: 80px;
    box-sizing: border-box;
}

.area button{
    -webkit-appearance: none;
    width: 100%;
    box-sizing: border-box;
    padding: 10px;
    text-align: center;
    background-color: #068c84;
    color: white;
    text-transform: uppercase;
    border: 1px solid white;
    box-shadow: 0 1px 5px #666;
}

.area button:focus{
    outline: none;
    background-color: #0989b0;
}

.area img{
    max-width: 100%;
    height: auto;
}

.area .caminho-imagem{
    padding: 5px 10px;
    border-radius: 3px;
    background-color: #068c84;
    text-align: center;
}

.area .caminho-imagem a{
    color: white;
    text-decoration: none;
}

.area .caminho-imagem a:hover{
    color: yellow;
}
앤더슨 로시

내가 찾은 가장 좋은 방법은 캔버스에 비디오를 그리고 그 후에 직사각형을 그리는 것입니다.

1 단계 : 태그 비디오 숨기기.

<video autoplay="true" id="webCamera" style="display: none"> </video>

2 단계 : 내 div에 태그 캔버스 삽입

<canvas id="videoCanvas"></canvas>

3 단계 : 캔버스에 비디오와 사각형을 그리는 함수를 자바 스크립트에 만듭니다.

function drawImge(){
    var video = document.querySelector("#webCamera");
    var canvas = document.querySelector("#videoCanvas");
    var ctx = canvas.getContext('2d');

    canvas.width = video.videoWidth;
    canvas.height = video.videoHeight;


    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);

    var faceArea = 300;
    var pX=canvas.width/2 - faceArea/2;
    var pY=canvas.height/2 - faceArea/2;

    ctx.rect(pX,pY,faceArea,faceArea);
    ctx.lineWidth = "6";
    ctx.strokeStyle = "red";    
    ctx.stroke();


    setTimeout(drawImge , 100);
}

4 단계 : 비디오를 재생할 때 내 함수를 실행합니다.

 var video = document.querySelector("#webCamera");
 video.onplay = function() {
  setTimeout(drawImge , 300);
 };

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XPage에서 html5 비디오 태그 사용

분류에서Dev

MATLAB-비디오 입력에 직사각형 ROI 그리기

분류에서Dev

HTML5의 비디오 태그에서 오디오 스펙트럼 읽기

분류에서Dev

QT5 : drawPixMap ()을 사용하여 다른 직사각형 위에 직사각형 그리기

분류에서Dev

Reactjs에서 HTML5 오디오 태그 사용

분류에서Dev

html5 비디오 태그에서 미디어 파일의 원활한 사전로드

분류에서Dev

비디오에서 전경을 추적하고 그 위에 직사각형을 그리는 방법

분류에서Dev

HTML 캔버스-선택한 위치에 직사각형 그리기

분류에서Dev

오른쪽에 직사각형 그리기

분류에서Dev

HTML 5 비디오 태그에서 비디오 자막이 작동하지 않음

분류에서Dev

HTML5에서 비디오 태그를 사용하여 비디오 재생에서 뒤로 이동하는 것을 방지하는 방법

분류에서Dev

nodejs에서 html5 오디오 태그로 오디오 스트리밍

분류에서Dev

직사각형 안에 직사각형 그리기

분류에서Dev

HTML5 : 밀리 초 단위로 오디오 태그의 currentTime 및 기간을 가져 오는 방법

분류에서Dev

pyqtgraph에서 직사각형 그리기

분류에서Dev

오디오 태그 HTML5

분류에서Dev

HTML 5 캔버스 직사각형 (픽셀 크기)으로 그림을 그리면 파란색 대신 검은 색 직사각형이 나타 납니까?

분류에서Dev

html 비디오 태그를 사용하여 www 폴더에서 비디오 재생 (android)

분류에서Dev

HTML 비디오 태그를 사용하여 서버에서 HLS 파일 재생

분류에서Dev

LWJGL 텍스처 위에 직사각형 그리기

분류에서Dev

차이 영역 주위에 직사각형 그리기

분류에서Dev

Windows 7의 Safari 5.1에서 HTML5 비디오 태그가 지원되지 않습니까?

분류에서Dev

HTML5 비디오 태그의 플래시 대체가 Opera에서 작동하지 않습니다.

분류에서Dev

HTML5 비디오 태그가 호환되는 브라우저에 표시되지 않음

분류에서Dev

브라우저에서 HTML5 비디오 태그 용 RTSP 트랜스 코딩

분류에서Dev

HTML5 캔버스 태그를 사용하여 비디오를 표시하는 방법

분류에서Dev

직사각형 그리기

분류에서Dev

Windows Form에 움직이는 직사각형 그리기

분류에서Dev

Rails에 비디오 HTML 태그가 표시되지 않음

Related 관련 기사

  1. 1

    XPage에서 html5 비디오 태그 사용

  2. 2

    MATLAB-비디오 입력에 직사각형 ROI 그리기

  3. 3

    HTML5의 비디오 태그에서 오디오 스펙트럼 읽기

  4. 4

    QT5 : drawPixMap ()을 사용하여 다른 직사각형 위에 직사각형 그리기

  5. 5

    Reactjs에서 HTML5 오디오 태그 사용

  6. 6

    html5 비디오 태그에서 미디어 파일의 원활한 사전로드

  7. 7

    비디오에서 전경을 추적하고 그 위에 직사각형을 그리는 방법

  8. 8

    HTML 캔버스-선택한 위치에 직사각형 그리기

  9. 9

    오른쪽에 직사각형 그리기

  10. 10

    HTML 5 비디오 태그에서 비디오 자막이 작동하지 않음

  11. 11

    HTML5에서 비디오 태그를 사용하여 비디오 재생에서 뒤로 이동하는 것을 방지하는 방법

  12. 12

    nodejs에서 html5 오디오 태그로 오디오 스트리밍

  13. 13

    직사각형 안에 직사각형 그리기

  14. 14

    HTML5 : 밀리 초 단위로 오디오 태그의 currentTime 및 기간을 가져 오는 방법

  15. 15

    pyqtgraph에서 직사각형 그리기

  16. 16

    오디오 태그 HTML5

  17. 17

    HTML 5 캔버스 직사각형 (픽셀 크기)으로 그림을 그리면 파란색 대신 검은 색 직사각형이 나타 납니까?

  18. 18

    html 비디오 태그를 사용하여 www 폴더에서 비디오 재생 (android)

  19. 19

    HTML 비디오 태그를 사용하여 서버에서 HLS 파일 재생

  20. 20

    LWJGL 텍스처 위에 직사각형 그리기

  21. 21

    차이 영역 주위에 직사각형 그리기

  22. 22

    Windows 7의 Safari 5.1에서 HTML5 비디오 태그가 지원되지 않습니까?

  23. 23

    HTML5 비디오 태그의 플래시 대체가 Opera에서 작동하지 않습니다.

  24. 24

    HTML5 비디오 태그가 호환되는 브라우저에 표시되지 않음

  25. 25

    브라우저에서 HTML5 비디오 태그 용 RTSP 트랜스 코딩

  26. 26

    HTML5 캔버스 태그를 사용하여 비디오를 표시하는 방법

  27. 27

    직사각형 그리기

  28. 28

    Windows Form에 움직이는 직사각형 그리기

  29. 29

    Rails에 비디오 HTML 태그가 표시되지 않음

뜨겁다태그

보관