Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
New
/
update
:
detection03.html
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<!doctype html> <head> <title>motion detection</title> </head> <body> <video autoplay id="vid"></video> <canvas id="canvas" width="640" height="480" style="border:1px solid #d3d3d3;"></canvas><br> <script type="text/javascript"> var video = document.querySelector("#vid"); var canvas = document.querySelector('#canvas'); var ctx = canvas.getContext('2d'); var localMediaStream = null; // var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); var prevImageData = ctx.getImageData(0,0,canvas.width,canvas.height); // // var onCameraFail = function (e) { console.log('Camera did not work.', e); }; function transformGrab() { // console.log("transform grab"); // imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); // var input = document.querySelector('#setPixelSize'); var p = parseFloat(input.value); console.log("p = " + p); pixellate(p); } function pixellate(size) { var x, y; for(x = 0; x < canvas.width; x += size) { for(y = 0; y < canvas.height; y += size) { //console.log("tick", y * canvas.width + x) ctx.fillStyle = getPixel(imageData, x, y); ctx.fillRect(x, y, size, size); } } } function getPixel(imageData, x, y) { var r, g, b, a, offset = x * 4 + y * 4 * imageData.width; r = imageData.data[offset]; g = imageData.data[offset + 1]; b = imageData.data[offset + 2]; a = imageData.data[offset + 3]; return "rgba(" + r + "," + g + "," + b + "," + a + ")"; } function getPixel2(imageData, prevImageData, x, y) { // var cr, cg, cb, ca, pr, pg, pb, pa, offset = x * 4 + y * 4 * imageData.width; cr = imageData.data[offset]; cg = imageData.data[offset + 1]; cb = imageData.data[offset + 2]; ca = imageData.data[offset + 3]; // pr = prevImageData.data[offset]; pg = prevImageData.data[offset + 1]; pb = prevImageData.data[offset + 2]; pa = prevImageData.data[offset + 3]; // var diff = Math.abs(pr-cr) + Math.abs(pg-cg) + Math.abs(pb-cb); var str = new Object(); if(diff > 20) { //str = "rgba(" + 255 + "," + 0 + "," + 0 + "," + 255 + ")"; str.r = cr; str.g = cg; str.b = cb; str.a = 255; } else { //str = "rgba(" + 255 + "," + 255 + "," + 255 + "," + 255 + ")"; str.r = 555; str.g = 555; str.b = 555; str.a = 255; } str.d = diff; // return str; //return "rgba(" + (255-(cr-pr)) + "," + (255-(cg-pg)) + "," + (255-(cb-pb)) + "," + 255 + ")"; } function motionDetect() { // imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); // var size = 5; var startPoint = (Math.PI/180)*0; var endPoint = (Math.PI/180)*360; // ctx.clearRect(0,0,canvas.width, canvas.height); // var x, y; for(x = 0; x < canvas.width; x += size) { for(y = 0; y < canvas.height; y += size) { // //var obj1 = getPixel2(imageData, prevImageData, x, y); var cob = getPixel2(imageData, prevImageData, x, y); //console.log(cob.g); if(cob.g < 555) { ctx.fillStyle = "rgba(" + cob.r + "," + cob.g + "," + cob.b + "," + 255 + ")"; //ctx.fillRect(x, y, size, size); ctx.beginPath(); ctx.arc(x,y,cob.d/10, startPoint, endPoint,true); ctx.fill(); ctx.closePath(); } else { //ctx.fillStyle = "rgba(" + cob.r + "," + cob.g + "," + cob.b + "," + 255 + ")"; //ctx.fillRect(x, y, size, size); } //console.log("obj", obj1.r); } } // update previous frame image data prevImageData = imageData; } function drawVideoAtCanvas(obj, context) { window.setInterval(function() { // draw video image to canvas context.drawImage(obj, 0, 0); // update pixel data //imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); // pixellate //var input = document.querySelector('#setPixelSize'); //var p = parseFloat(input.value); //pixellate(p); // motionDetect(); // }, 60); // } video.addEventListener('play', function() { drawVideoAtCanvas(video, ctx) }, false); navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; window.URL = window.URL || window.webkitURL; navigator.getUserMedia({video:true}, function (stream) { video.src = window.URL.createObjectURL(stream); localMediaStream = stream; }, onCameraFail); </script> </body> </html>