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

الكشف عن الوجه والتدريب والتعرف عليه: 3 خطوات
الكشف عن الوجه والتدريب والتعرف عليه: 3 خطوات

فيديو: الكشف عن الوجه والتدريب والتعرف عليه: 3 خطوات

فيديو: الكشف عن الوجه والتدريب والتعرف عليه: 3 خطوات
فيديو: كيف تكشف الكذاب ب3 طرق سريعة!! 2024, شهر نوفمبر
Anonim
كشف الوجه والتدريب والاعتراف Opencv
كشف الوجه والتدريب والاعتراف Opencv

OpenCV هي مكتبة رؤية حاسوبية مفتوحة المصدر تحظى بشعبية كبيرة لأداء مهام معالجة الصور الأساسية مثل التعتيم ومزج الصور وتحسين الصورة بالإضافة إلى جودة الفيديو والعتبة وما إلى ذلك ، بالإضافة إلى معالجة الصور ، فهي توفر العديد من التعلم العميق المدربين مسبقًا النماذج التي يمكن استخدامها مباشرة لحل المهام البسيطة في متناول اليد.

لتثبيت opencv ، استخدم هذا الرابط

www.instructables.com/id/Opencv-and-Python…

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

يمكنك البحث في Google عن العديد من برامج اكتشاف الوجوه ويجب حفظ الوجوه المكتشفة في مجلد لمزيد من معالجة الصور مثل التدريب ووضع العلامات. سنقوم بجمع 30 عينة

استيراد السيرة الذاتية 2

استيراد numpy كـ np

استيراد نظام استيراد نظام التشغيل

الكاميرا = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") # قم بإضافة مسار ملف harcascade

name = raw_input ("ما هو اسمه / اسمها؟")

# سيتم حفظ جميع الملفات ضمن مجلد Users / prasad / Documents / images

dirName = "/ Users / prasad / Documents / images /" + name

طباعة (dirName) إذا لم يكن os.path.exists (dirName): os.makedirs (dirName) طباعة ("Directory Created") وإلا: print ("الاسم موجود بالفعل") sys.exit ()

العد = 1

# سنقوم بجمع 30 عينة

أثناء العد 30: كسر # إطار = إطار. رمادي رمادي = cv2.cvtColor (إطار ، cv2. COLOR_BGR2GRAY) وجوه = faceCascade.detectMultiScale (رمادي ، 1.5 ، 5) لـ (x ، y ، w ، h) في الوجوه: roiGray = رمادي [y: y + h، x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName، roiGray) cv2.imshow ("face"، roiGray) cv2.rectangle (frame، (x، y)، (x + w، y + h)، (0، 255، 0)، 2) count + = 1 cv2.imshow ('frame'، frame) key = cv2.waitKey (1)

إذا كان المفتاح == 27:

استراحة

# camera.release ()

cv2.destroyAllWindows ()

الخطوة 2: تدريب عينة الصور الخاصة بك

بعد اكتمال اكتشاف الوجه ، يمكننا أن نذهب للتدريب على الصور

استيراد osimport numpy كـ np من PIL استيراد صورة استيراد cv2 استيراد مخلل # استيراد مسلسل

#ser = serial. Serial ('/ dev / ttyACM0' ، 9600 ، المهلة = 1)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

أداة التعرف = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ file_))

#train الصور تحت مجلد الصور

imageDir = os.path.join (baseDir، "الصور")

المعرف الحالي = 1

labelIds = {} yLabels = xTrain = # ser.write ("تدريب…..". تشفير ())

للجذر ، dirs ، الملفات في os.walk (imageDir):

print (root، dirs، files) للملف في الملفات: print (file) if file.endswith ("png") أو file.endswith ("jpg"): path = os.path.join (root، file) label = os.path.basename (الجذر) طباعة (التسمية)

إذا لم يكن العنوان في labelIds:

labelIds [التسمية] = معرّف الطباعة الحالي (معرف الطباعة) الحالي + = 1

id_ = labelIds [التسمية]

PilImage = Image.open (path).convert ("L") imageArray = np.array (pilImage، "uint8") وجوه = faceCascade.detectMultiScale (imageArray، scaleFactor = 1.1، minNeighbours = 5)

لـ (س ، ص ، ث ، ح) في الوجوه:

roi = imageArray [y: y + h، x: x + w] xTrain.append (roi) yLabels.append (id_)

ذات ("التصنيفات" ، "wb") مفتوحة مثل f:

pickle.dump (labelIds، f) f.close ()

أداة التعرف. القطار (xTrain ، np.array (yLabels))

Recognizer.save ("trainer.yml") print (labelIds)

الخطوة الثالثة: التعرف على الوجوه

بعد انتهاء التدريب الآن ، يمكنك تشغيل الكود أدناه حتى يبدأ في التعرف على وجوهك المدربة

استيراد osos.environ ['PYTHONINSPECT'] = 'on' استيراد cv2 استيراد numpy كـ np import pickle #import RPi. GPIO كـ GPIO من وقت استيراد السكون

مع open ("labels"، "rb") مثل f:

Dicti = pickle.load (f) f.close ()

الكاميرا = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

أداة التعرف = cv2.face. LBPHFaceRecognizer_create () أداة التعرف على القراءة ("trainer.yml")

الخط = cv2. FONT_HERSHEY_SIMPLEX

الماضي ="

# for frame in camera.capture_continuous (rawCapture، format = "bgr"، use_video_port = True):

بينما صحيح: ret ، frame = camera.read () gray = cv2.cvtColor (frame ، cv2. COLOR_BGR2GRAY) الوجوه = faceCascade.detectMultiScale (رمادي ، scaleFactor = 1.5 ، min الجيران = 5) لـ (x ، y ، w ، h) في الوجوه: roiGray = رمادي [y: y + h ، x: x + w]

id_، conf = Recognizer.predict (roiGray)

للاسم والقيمة فيicti.items ():

إذا كانت القيمة == id_: print (name) cv2.putText (frame، name، (x، y)، font، 2، (0، 0، 255)، 2، cv2. LINE_AA) إذا كان الاسم! = الأخير: الأخير = name if conf <= 70: cv2.rectangle (frame، (x، y)، (x + w، y + h)، (0، 255، 0)، 2)

cv2.imshow ("إطار" ، إطار)

مفتاح = cv2.waitKey (1)

إذا كان المفتاح == 27:

كسر cv2.destroyAllWindows ()

موصى به: