جدول المحتويات:

MATLAB Easy Face Detection: 4 خطوات
MATLAB Easy Face Detection: 4 خطوات

فيديو: MATLAB Easy Face Detection: 4 خطوات

فيديو: MATLAB Easy Face Detection: 4 خطوات
فيديو: mexopencv, Tutorial 1: Setup 2024, شهر نوفمبر
Anonim
MATLAB من السهل اكتشاف الوجه
MATLAB من السهل اكتشاف الوجه

الهدف الرئيسي من هذه التعليمات هو إظهار مدى سهولة معالجة الصور بمساعدة MATLAB

لقد كان اكتشاف الوجه وتتبعه مجالًا بحثيًا مهمًا ونشطًا ، ولهذا السبب سأشرح كيف يمكن القيام بذلك باستخدام Matlab.

في البرنامج التعليمي التالي ، سأقوم بالأشياء التالية:

1- كشف الوجوه في الصورة والعد.

2- كشف عيون الإنسان في صورة والعد.

3. كشف فم الإنسان بصورة وإحصاءه.

4- كشف الوجوه في الفيديو والعد.

5. كشف عيون الإنسان بالفيديو والعد.

6- كشف فم الإنسان بالفيديو والعد.

الخطوة 1: اكتشاف الوجوه في الصورة والعد

كشف الوجوه في صورة والعد
كشف الوجوه في صورة والعد

نص ماتلاب:

امسح الكل٪ امسح كل شاشة مسح الكائن sclc٪

FDetect = Vision. CascadeObjectDetector ؛ كشف الكائنات باستخدام خوارزمية فيولا جونز

٪ اقرأ صورة الإدخال

image = imread ('c: / Deskotp / HarryPotter.jpg') ؛ ٪ قم بتحميل الصورة باستخدام imread ('موقع الملف / name.jpg')

BB = خطوة (FDetect ، صورة) ؛ ٪ إرجاع قيم المربع المحيط بناءً على عدد الكائنات

الشكل ، imshow (أنا) ؛

يتمسك

بالنسبة إلى i = 1: الحجم (BB ، 1)

مستطيل ('Position'، BB (i،:)، 'LineWidth'، 5، 'LineStyle'، '-'، 'EdgeColor'، 'r') ؛ ٪ r الأحمر والأخضر والأزرق ب

نهاية

العنوان ("اكتشاف الوجه") ؛ ٪ لقب الرقم المقتطع؛

ستكون النتيجة مثل الصورة المرفقة في هذه الخطوة نفسها

لحساب عدد الوجوه المكتشفة:

امسح الكل٪ امسح كل شاشة مسح الكائن sclc٪

FDetect = Vision. CascadeObjectDetector ؛ ٪ كشف الكائنات باستخدام خوارزمية فيولا-جونز٪ اقرأ صورة الإدخال

image = imread ('c: / Deskotp / HarryPotter.jpg') ؛ ٪ قم بتحميل الصورة باستخدام imread ('موقع الملف / name.jpg')

BB = خطوة (FDetect ، صورة) ؛ ٪ إرجاع قيم المربع المحيط بناءً على عدد الكائنات

الشكل،

imshow (أنا) ؛

يتمسك

بالنسبة إلى i = 1: الحجم (BB ، 1)

مستطيل ('Position'، BB (i،:)، 'LineWidth'، 5، 'LineStyle'، '-'، 'EdgeColor'، 'r') ؛ ٪ r الأحمر والأخضر والأزرق ب

نهاية

text (10، 10، strcat ('\ color {red} عدد الوجوه ='، num2str (length (BB)))) ؛ هذا الخط يعطيك العد

العنوان ("اكتشاف الوجه") ؛ العنوان٪ من الرقم

خارج القبضة؛

الخطوة 2: كشف عيون الإنسان في صورة والعد

كشف عيون الإنسان في صورة والعد
كشف عيون الإنسان في صورة والعد

نص ماتلاب:

امسح الكل؛

clc

٪ لاكتشاف EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig') ؛

٪ قراءة المدخلات

image = imread ('c: / Deskotp / HarryPotter.jpg') ؛ ٪ قم بتحميل الصورة باستخدام imread ('موقع الملف / name.jpg')

BB = خطوة (EyeDetect ، image) ؛

الشكل،

imshow (صورة) ؛

مستطيل ('Position'، BB، 'LineWidth'، 4، 'LineStyle'، '-'، 'EdgeColor'، 'b') ؛

العنوان ("اكتشاف العيون") ؛

ستكون النتيجة مثل الصورة المرفقة في هذه الخطوة نفسها

لحساب عدد العيون المكتشفة:

مسح الكل ؛ ٪ للكشف عن العيون

EyeDetect = vision. CascadeObjectDetector ('EyePairBig') ؛

image = imread ('c: / Deskotp / HarryPotter.jpg') ؛ ٪ قم بتحميل الصورة باستخدام imread ('موقع الملف / name.jpg')

BB = خطوة (EyeDetect ، image) ؛ الشكل ، imshow (الصورة) ؛ مستطيل ('Position'، BB، 'LineWidth'، 4، 'LineStyle'، '-'، 'EdgeColor'، 'b') ؛

text (10، 10، strcat ('\ color {red} No of eyes ='، num2str (length (BB)))) ؛

العنوان ("اكتشاف العيون") ؛

الخطوة الثالثة: كشف الفم البشري في الصورة والعد

كشف الفم البشري في صورة والعد
كشف الفم البشري في صورة والعد

نص ماتلاب:

امسح الكل؛

clc

٪ للكشف عن الفم

MouthDetect = vision. CascadeObjectDetector ('Mouth'، 'MergeThreshold'، 16) ؛

قراءة صورة الإدخال = imread ('c: / Deskotp / HarryPotter.jpg') ؛ ٪ قم بتحميل الصورة باستخدام imread ('موقع الملف / name.jpg')

BB = الخطوة (كشف الفم ، الصورة) ؛

الشكل ، imshow (صورة) ؛

يتمسك

بالنسبة إلى i = 1: الحجم (BB ، 1)

مستطيل ('Position'، BB (i،:)، 'LineWidth'، 4، 'LineStyle'، '-'، 'EdgeColor'، 'r') ؛

نهاية

العنوان ("كشف الفم") ؛

خارج القبضة؛

ستكون النتيجة مثل الصورة المرفقة في هذه الخطوة نفسها

لحساب عدد الفم المكتشف:

امسح الكل؛ clc. ٪ للكشف عن الفم

MouthDetect = vision. CascadeObjectDetector ('Mouth'، 'MergeThreshold'، 16) ؛ ٪ قراءة المدخلات

image = imread ('c: / Deskotp / HarryPotter.jpg') ؛ ٪ قم بتحميل الصورة باستخدام imread ('file location / name.jpg') BB = step (MouthDetect، image) ؛

الشكل ، imshow (صورة) ؛

يتمسك

بالنسبة إلى i = 1: الحجم (BB ، 1)

مستطيل ('Position'، BB (i،:)، 'LineWidth'، 4، 'LineStyle'، '-'، 'EdgeColor'، 'r') ؛

نهاية

text (10، 10، strcat ('\ color {red} No of mouths ='، num2str (length (BB)))) ؛

العنوان ("كشف الفم") ؛

خارج القبضة؛

الخطوة 4: كشف الوجوه والعينين والفم في الفيديو والعد

امسح الكل؛

أغلق الكل

clc

٪ التقاط إطارات الفيديو باستخدام وظيفة إدخال الفيديو ٪ يجب عليك استبدال الدقة واسم المحول المثبت الخاص بك.

أ = Vision. CascadeObjectDetector ؛ ٪ لاكتشاف الوجه

٪ a = vision. CascadeObjectDetector ('Mouth'، 'MergeThreshold'، 16) ؛ ٪ للكشف عن الفم

٪ أ = Vision. CascadeObjectDetector ('EyePairBig') ؛ ٪ للكشف عن العيون

٪ استخدم فقط أي واحد (الوجه / العينين / الفم)

vid = videoinput ('winvideo'، 1، 'yuy2_320x240') ؛ ٪ تعيين خصائص كائن الفيديو

مجموعة (vid ، "FramesPerTrigger" ، Inf) ؛

مجموعة (vid ، "ReturnedColorspace" ، "rgb") ؛

vid. FrameGrabInterval = 5 ؛ ٪ بدء الحصول على الفيديو هنا

start (vid)٪ قم بتعيين حلقة تتوقف بعد 100 إطار من التحصيل

while (vid. FramesAcquired <= 200)٪ احصل على لقطة من الإطار الحالي

البيانات = getnapshot (vid) ؛

imshow (بيانات) ؛

ب = الخطوة (أ ، البيانات) ؛

يتمسك

بالنسبة إلى i = 1: الحجم (ب ، 1)

مستطيل ('position'، b (i،:)، 'linewidth'، 2، 'linestyle'، '-'، 'EdgeColor'، 'r') ؛

نهاية

خارج القبضة

text (10، 10، strcat ('\ color {green} عدد الوجوه ='، num2str (length (b)))) ؛

نهاية

توقف (فيد) ؛ ٪ وقف الحصول على الفيديو

موصى به: