ساخت وبکم تشخیص چهره با Node.js و OpenCV - قسمت اول

ترجمه و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 13 خرداد 98
خواندن در 2 دقیقه
دسته بندی ها : نود جی اس

بخش دیداری کامپیوتر بدین صورت تعریف شده: "چیزی که باعث میشه کامپیوترها مثل انسان ها ببینند و چیزهایی رو متوجه شوند". درک این راحته اما در عمل بسیار پیچیدست.

اگر شما میخواهید اهمیت بخش دیداری کامپیوترها رو متوجه بشید بهتره این ویدیو رو مشاهده کنید که چطور آمازون با استفاده از این تکنولوژی نسل بعدی فروشگاه ها رو میسازه.

پس بیایید بیشتر درمورد این قابلیت بدونیم و با استفاده از Node.js ازش استفاده کنیم.

یادگیری بخش دیداری کامپیوتر

این کار ممکن نیست که در یک یا حتی چند مقاله بشه موضوع دیداری کامپیوترها رو توضیح داد. اینجا می خواهیم مقدمه ای از این بحث رو یاد بگیریم تا بتونیم به سمت توسعه پیش بریم.

شما میتونید برای مطالعه ی جامع تر از سرویس هایی مثل EDX استفاده کنید.

یک کتابخانه ی سازماندهی شده برای کار کردن با Computer Vision (دیداری کامپیوتر) وجود داره که OpenCV نام داره.  این کتابخانه بصورت رسمی از C,C++,Pyton و جاوا پشتیبانی میکنه و ماژول رسمی برای Node.js وجود نداره. اما چند توسعه دهنده با همکاری هم ماژولی به اسم node-opencv ساخته اند. در ادامه ی مقاله ما میخواهیم از این ماژول استفاده کنیم.

در این سری مقالات ما بخش های زیر رو پوشش میدیم :

  • نصب OpenCV
  • ماژول node-opencv
  • ساخت یک وبکم تشخیص چهره

نصب OpenCV

شما اول باید کتابخانه ی OpenCV رو در کامپیوترتون نصب کنید. اگر از Ubuntu استفاده می کنید این دستورات برای شما OpenCV رو نصب می کند. این در ورژن 16٫04 اوبونتو تست شده.

اول باید وابستگی های OpenCV رو نصب کنیم :

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

حالا میتونیم خود OpenCV رو با دستور زیر نصب کنیم :

sudo apt-get install libopencv-dev

برای مشاهده مستندات رسمی نصب این کتابخانه به این لینک مراجعه کنید.

همچنین شما میتونید اون رو در ویندوز هم نصب کنید. نحوه نصب در ویندوز

و برای سیستم عامل مک شما میتونید از دستور زیر هم استفاده کنید :

brew tap homebrew/science
brew install opencv

ماژول Node-OpenCV

همان طور که مطرح شد OpenCV ماژول رسمی برای Node.js ندارد. اما یک ماژول غیررسمی توسط Peter Barden و تیمش طراحی شده و در Npm موجود است. این ماژول درحال توسعه هست و هنوز تمام امکانات API OpenCV رو نداره.

نکته : هم اکنون آخرین نسخه ی موجود در Github با نسخه ی node-opencv در Npm ادغام نشده پس اگر بصورت مستقیم از NPM اون رو نصب کنید ممکنه به مشکلات جزئی برخورد کنید.

ماژول رو بصورت مستقیم از Github و با استفاده از دستور زیر نصب می کنیم :

npm install peterbraden/node-opencv

حالا نوبت کدزنی هست.

ساخت وبکم تشخیص چهره

قبل از اینکه بخواهیم تشخیص چهره از وبکم رو انجام بدیم, این کار رو درمورد عکس ها انجام میدیم.

ساخت وبکم تشخیص چهره با Node.js و OpenCV - قسمت اول

حالا چطوری چهره ها رو از یک عکس تشخیص بدیم؟ OpenCV برای ما دسته بندی های مختلفی رو فراهم میکنه که شما میتونید چهره ها, چشم ها, ماشین ها و ... رو تشخیص بدید. از اونجایی که این تشخیص ها توسط ماشین انجام میشوند و بسیار پیشرفته نیستند احتمالا درصد تشخیص درست حدود 80 درصد باشه.

حالا کد تشخیص چهره ی این عکس رو می نوبیسیم. این یک تیکه کد هست که فایل رو از دیسک میخونه و فایل تصویر خروجی رو تولید میکنه :

var cv = require('opencv');

cv.readImage("./friends.jpg", function(err, im){
  if (err) throw err;
  if (im.width() < 1 || im.height() < 1) throw new Error('Image has no size');

  im.detectObject(cv.FACE_CASCADE,{}, function(err, faces){
    if (err) throw err;

    for (var i = 0; i < faces.length; i++){
      var face = faces[i];
      im.ellipse(face.x + face.width / 2, face.y + face.height / 2, face.width / 2, face.height / 2);
    }

    im.save('./friends-faces.jpg');
    console.log('Image saved as friends-faces.png');
  });
});

این هم تصویر بعد از تشخیص چهره هست :

ساخت وبکم تشخیص چهره با Node.js و OpenCV - قسمت اول

همانطور که مطرح شد یکسری خطاها هم وجود داره.

درقسمت بعد نحوه استفاده از این قابلیت برای وبکم رو توضیح میدیم.

منبع

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید