جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
الهدف الرئيسي من هذه التعليمات هو إظهار مدى سهولة معالجة الصور بمساعدة 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)))) ؛
نهاية
توقف (فيد) ؛ ٪ وقف الحصول على الفيديو