الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يتم برمجة Smile Detector ؟

بدأه مجلـد جديـد في 10 سبتمبر 2008 · 5 رد · 2,400 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

شدني منتج من شركة sony وهو كاميرا تحتوي على smile detector او "مكتشف الابتسامة"

وطريقة عمله هو التقاط الصور اتوماتيكياً عندما يبتسم الشخص المراد تصويره

sony-t200.jpg

العلم هذا يسمى Face Detection بشكل عام .

الادوات المستخدمة والمتاحة مجاناً (والتي اعرفها حتى الآن) هي مكتبة OpenCV و بيئة التطوير Visual Studio ( لا اعتقد ان نسخة professional متاحة مجانا :P )

عند تثبيت مكتبة OpenCV تستطيع الوصول الى مجلد samples ويحتوي على العشرات من الامثلة والبرامج المكتوبة بلغة c\c++

الهدف من استخدام بيئة التطوير Visual Studio هو استخدام مكتبة MFC لانشاء واجهة البرنامج بدلا من استخدام OpenCV لعمل واجهة للبرنامج ( ال mfc تقدم خيارات اكثر وافضل من opencv ).

بامكاني وضع برنامج لتحديد الوجهة face و العينين eyes و الانف والفم سواءاً كان مدخلات البرنامج input عبارة عن صورة واحدة ، ملف فيديو او بث حي من كاميرا.

الشيء الذي اكتشفته حتى الان ( لكن لم افهمه تماماً) هو استخدام haar cascades ، فهناك cascade مخصص للتعرف للوجهة ، للانف ، للعينين .. إلخ . وهو عبارة عن ملف xml يتم استخدامه في البرنامج.

ايضا عن تثبيت المكتبة opencv سوف تحصل على مجلد يحتوي على بعض ملفات xml التي يمكن استخدامها.

بالنسبة ل smile detector ، فيجب اولا عمل ملف xml مخصص لاكتشاف الابتسامة ، والباقي عبارة عن استخدام برامج مكتوبة سابقاً لا تحتاج الى اي جهد.

اتمنى ان اجد التعاون من قبلكم لعمل haar cascades لاكتشاف الابتسامة ، ماهي الخطوات ؟ ماذا ينقصنا؟ الى اخره من النصائح ..

مع خالص شكري وتقديري .

#2

ربما اضافة برنامج لاكتشاف الوجهة سوف ينعش الموضوع قليلاً

قبل البدء لابد من تثبيت مكتبة OpenCV:

OpenCV_1.0.exe

على المسار

C:\Program Files وهو المسار الافتراضي.

من هنا رابط التحميل والموقع الرسمي :

http://sourceforge.net/project/showfiles.php?group_id=22870

بعد ذلك انسخ جميع الملف ذات الامتداد dll الموجودة في مجلد

C:\Program Files\OpenCV\bin

الى

C:\WINDOWS\system32

البرنامج تم عمله على بيئة التطوير Visual Studio 2008 وهو عبارة عن MFC Application, dialog based :

post-73304-1221084931_thumb.png

post-73304-1221084957_thumb.png

عند تشغيل البرنامج لابد ان تختار صورة مناسبة ، وهذا يعني حجم مناسب وايضا تحتوي على وجه مقابل للصورة تماماً وليس مائل حتى تحصل على نتائج ممتازة.

بالنسبة للكود :

دالة detect_and_draw هي اهم شيء في البرنامج ، ولا تستغرب عندما تعرف انها موجودة في برنامج facedetect.c المرفق مع مكتبة opencv في مجلد samples !

المتغير cascade هو الذي يحمل ملف xml file ، بالامكان تغييره واستخدام ملف مخصص للانف مثلا، او العين .. إلخ.

رابط تحميل البرنامج:

face_detection.zip

اتمنى ان اجد تفاعلاً مع الموضوع ، سواءاً باضافة او استفسار او معلومة .

1
#3

رائع اخي ,

موضوع ممتاز اخي الكريم واشكرك عليه

يوجد مجموعة من الخوارزميات في المواقع المهتمه بهذا الموضوع , وهي تعتمد على المخططات الموجية wave في تحديد معالم الوجه بالاضافة لاستخدام فلاتر خاصة لتقليل الـ noise بالاضافة إلى مصفوفات من الصور المتدرجة الصغيرة ليتم البحث لاحقا بين عناصر هذه المصفوفة , وبناء على شكل الموجه يمكن تحديد ما اذا كانت face or not face , smile or not smile .....etc

يوجد لدي كتاب بسيط حصلت عليه من احد المواقع يتكلم عن هذا الموضوع , ويوجد في codeproject مجموعة من الامثلة بالـ SourceCode

smile_detector.zip

هذا والله اعلم .

تحياتي . . .

تم تعديل هذه المشاركة بواسطة time1 في 11 سبتمبر 2008 في 02:22

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#4

شكرا لك اخي time1 على مداخلتك الرائعة

قرأت الكتاب الذي قمت مشكوراً برفعه

لكن اضن ان هناك خطوة تم تجاهلها ، وهي بعد تحديد مكان الفم كيف يستطيع ان يعرف اذا كان مبتسماً او لا ؟ هل يقوم باستخراج ال waves من الصورة ثم مقارنتها بشيء آخر؟

#5
اقتباس
لكن اضن ان هناك خطوة تم تجاهلها ، وهي بعد تحديد مكان الفم كيف يستطيع ان يعرف اذا كان مبتسماً او لا ؟ هل يقوم باستخراج ال waves من الصورة ثم مقارنتها بشيء آخر؟

على مااعتقد انه يتم مقارنة قيم الموجة مع مجموعة من القيم التي تحدد شكل موجه الابتسامة , ستلاحظ بالكتاب هناك شكلا لموجة smile و شكلا لموجة not smile لاحظ الاختلاف بينهم .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#6

شوف اخي هذا مجال معالجة الصور image processing و به الكثير و الكثير من الامور :) .

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

مواضيع مشابهة