25 Dec

การใช js face detect vdo

fdet

เนื่องจากเป็น app อย่าง snapchat , SNOW ซึ่งเป็นการใส่ลูกเล่นให้กับวีดีโอที่เราถ่าย  จึงเกิดความสงสัยว่าเขามีหลักการหรือวิธีการอย่างไร ในบทความนี้จะเป็นการทำแบบเบื้องต้น โดยการใช้ javascript + html canvas ครับ

ในการทำการนั้นต้องใช้ html cavans + js ชื่อ tracking.js เป็น lib สำหรับ detect vdo และ image ซึ่งจะสามารถ detect ได้หลายแบบ ทั้ง ปาก จมูก ตา โครงหน้า สี เป็นต้น
เรามาดูแบบที่เสร็จแล้วกันครับ

 

จากตัวอย่าง
-ใช้ tracking js ในการจับ ตำแหน่งของหน้า

– ทำการ render รูปภาพหน้ากากเข้าไปใน vdo ตามขนาดที่ tracking js คื่นค่าตำแหน่งมาให้

เราจะมาดู code ทังหมดกันครับ

1 เราจะ include lib tracking js

<script src="build/tracking-min.js"></script>  
<script src="build/data/face-min.js"></script>

 

2 ส่วนของ html ที่ใช้

<div class="center">
      <video id="video" width="240" height="320" preload autoplay loop muted>
	  <source src="assets/java.mp4" type="video/mp4">
       </video>
      <canvas id="canvas" width="240" height="320"></canvas>
</div>

 

 

3 ส่วนของ js ในการควบคุม

   window.onload = function() { 
      var video = document.getElementById('video');  // Object vdo
      var canvas = document.getElementById('canvas'); // Object cavas
      var context = canvas.getContext('2d');
	  
	 
	 var watermark = new Image();       
      watermark.src = 'assets/face1.png';  // รูปภาพที่ใช้เป็นหน้ากาก


      var tracker = new tracking.ObjectTracker('face');  // instant tracker เลือก face
      tracker.setInitialScale(4);      
      tracker.setStepSize(1);
      tracker.setEdgesDensity(0.12);

      tracking.track('#video', tracker);

      tracker.on('track', function(event) {       
        context.clearRect(0, 0, canvas.width, canvas.height); // เคลีย canvas

        event.data.forEach(function(rect){  // loop detect  ค่า rect คือค่า ตำแหน่ง x , y , width , height ของ หน้าที่ tracker จัดได้จาก vdo

	   context.drawImage(watermark, rect.x, rect.y, rect.width, rect.height);  // ทำการ render image ลงไปใน canvas ตามตำแหน่งที่ต้องที่รับค่า
		  
		  
        });
      });

 

เป็นอันเรียบร้อยสำหรับการทำในการ detect หน้าเบื้องอย่างเดียว แต่ถ้าอยากทำให้เนียนนั้นอาจต้อง detect ในหลายๆส่วนทั้งหน้า จมูก ปาก ตา เพื่อให้ลูกเล่นมีมากขึ้น

สามารถโหลดไปศึกษากันได้ครับ

DOWNLOAD SOURCE

Leave a Reply

Your email address will not be published. Required fields are marked *