Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/mgabir/public_html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

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

در آموزش قبلی تونستیم  اسکریپتی برای تشخیص چهره با استفاده از پایتون و OPENCV بنویسیم ، یکی از سوالاتی که برای توسعه دهندهها(Developers) پیش میاد ( البته تازه کارا!) اینه که چطوری چهره رو توی یه فیلم و یا از طریق وب کم شناسایی کنیم ؟ اگه بتونیم همچین کاری رو انجام بدیم ، میتونیم خیلی کارها باهاش بکنیم ، مثلاً بشماریم چند نفر تو یه فیلم هستن ، چند نفر از جلو دوربین رد شدن و یا… (خیلی کارها میشه کرد )

خدمت دوستان بگم که یک فیلم تشکیل شده از تعداد زیادی تصویر(عکس) که بهشون میگیم فریم . از اونجایی که ما تو آموزش قبلی یادگرفتیم چطور چهره های توی یه تصویر رو شناسایی (Detect) کنیم ، اینجا هم کار به همون منوال پیش میره با این تفاوت که باید روی تک فریم این کارو انجام بدیم ، یعنی ، ویدئو رو بگیریم ، تبدیلش کنیم به فریم ، روی هر فریم پردازش کنیم همین!

قبل از توضیح کد ها کل کد رو براتون میزاریم که اگه فقط کد رو نیاز داشتید کپی پیست کنید ( کل افتخارات علمی بعضی ها همینه ! )

بروز رسانی

اگه دقت کنید داخل کد ها ما یه فایل به نام haarcascade_frontalface_default.xml رو تو کد هامون لود کردیم ، این فایل همون آبشار های opencv هست که در آموزش قبلی درموردش صحبت کردیم ، این فایل توی پوشه opencv که دانلود کردید وجود داره ، البته میتونید از این لینک هم دانلودش کنید(بعد از باز شدن صفحه از بالای صفحه روی دکمه دانلود کلیک کنید که دانلود شه) ، دقت کنید که فایل رو دقیقاً کنار کدهایی که نوشتید قرار بدیده ، درغیر این صورت باید مسیرش رو توی کد ها تغییر بدید .

 

در بالای صفحه اومدیم و ابزار های مورد نیاز رو به پروژه اضافه کردیم:

 

توسط این چند خط هم Cascade  رو بارگذاری کردیم ، و همچنین یه فایل برای ثبت لاگ های پروژه ساختیم :

 

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

این کد ، تصویر ورودی رو از وب کم میگیره و داخل متغیر video_capture میریزه

دقت کنید که شما میتونید آدرس فایل ویدئویی رو به جای ورودی وب کم قرار بدید ، ولی حواستون باشه که باید ffmpeg رو نصب کرده باشید ، چون opencv نمیتونه مستقیماً ویدئو های فشره شده رو بخونه. برای اطلاعات بیشتر تو گوگل سرچ کنید.

بعد از گرفتن ویدئو از ورودی باید یه حلقه بی نهایت ایجاد کنیم ، همونطور که قبلاً هم گفتیم ، یه ویدئو تشکیل شده از تعداد زیادی فریم پس :

اینجا ما یک ویدئو ضبط میکنیم ، تابع read() ، یک فریم از  منبع ویدئو رو میگیره ، اینجا برای ما وب کم هست و مقادیر زیر رو بازگشت میده:

  • فریم خوانده شده ( در هر تکرار یک فریم ) (frame)
  •  کد بازگشت (ret)

کد بازگشت به ما میگه که اگه از فریم خارج شدیم و منبع تصویر ماهم فایل ویدویی بود چه اتفاقی میفته ، ولی الان که منبع ویدئوی ما وب کمه برای ما اهمیتی نداره وازش رد میشیم.

 

با کد زیر هم آشنا هستیم ، کاری که اینجا کردیم اینه که در هر فریم که گرفتیم ، چهره هارو جستجو میکنیم

 

کد زیر هم برای خروج از برنامه است ، یک کلید رو به دلخواه انتخاب کنید

 

خب کار تمومه ، با کد های زیر هم همه چیزو تمیز میکنیم

 

محمد قبادی

سلام اسممو که بالا گفتم ، دانشجوی مهندسی نرم افزار هستم ، تخصص اصلیم طراحی وب هست ، اما در حال حاضر دارم الکترونیکم کار میکنم مخصوصاً قسمت هوش مصنوعی ، نمونه کارها ، تخیل ها ، مطالب مورد علاقه و... رو کم کم رو وبلاگم میزارم.

مطالب مرتبط
ارسال یک نظر