সুচিপত্র:

ওপেনসিভি মুখ সনাক্তকরণ, প্রশিক্ষণ এবং স্বীকৃতি: 3 টি ধাপ
ওপেনসিভি মুখ সনাক্তকরণ, প্রশিক্ষণ এবং স্বীকৃতি: 3 টি ধাপ

ভিডিও: ওপেনসিভি মুখ সনাক্তকরণ, প্রশিক্ষণ এবং স্বীকৃতি: 3 টি ধাপ

ভিডিও: ওপেনসিভি মুখ সনাক্তকরণ, প্রশিক্ষণ এবং স্বীকৃতি: 3 টি ধাপ
ভিডিও: How To Create a Face Recognition App in Android Studio||Face Detect App|| android ml tutorial 2024, নভেম্বর
Anonim
Opencv মুখ সনাক্তকরণ, প্রশিক্ষণ এবং স্বীকৃতি
Opencv মুখ সনাক্তকরণ, প্রশিক্ষণ এবং স্বীকৃতি

ওপেনসিভি একটি ওপেন সোর্স কম্পিউটার ভিশন লাইব্রেরি যা প্রাথমিক চিত্র প্রক্রিয়াকরণের কাজ যেমন অস্পষ্টতা, ইমেজ ব্লেন্ডিং, ইমেজ বাড়ানোর পাশাপাশি ভিডিও কোয়ালিটি, থ্রেশহোল্ডিং ইত্যাদি করার জন্য খুবই জনপ্রিয়, ইমেজ প্রসেসিং ছাড়াও এটি বিভিন্ন প্রাক-প্রশিক্ষিত গভীর শিক্ষা প্রদান করে মডেলগুলি যা সরাসরি হাতে সহজ কাজগুলি সমাধান করতে ব্যবহার করা যেতে পারে।

ওপেনসিভি ইনস্টলেশনের জন্য এই লিঙ্কটি ব্যবহার করুন

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

ধাপ 1: একটি রিয়েল টাইম ভিডিওতে মুখ সনাক্ত করা

আপনি অনেক মুখ সনাক্তকরণ প্রোগ্রামের জন্য গুগলে অনুসন্ধান করতে পারেন এবং সনাক্ত করা মুখগুলি একটি ফোল্ডারে সংরক্ষণ করা উচিত যেমন প্রশিক্ষণ এবং লেবেলিংয়ের মতো আরও চিত্র প্রক্রিয়াকরণের জিনিস। আমরা 30 টি নমুনা সংগ্রহ করতে যাচ্ছি

আমদানি cv2

np হিসাবে numpy আমদানি করুন

import os import sys

ক্যামেরা = cv2। ভিডিও ক্যাপচার (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #আপনার হারকাসকেড ফাইল পাথ যোগ করুন

নাম = raw_input ("তার নাম কি?")

#সমস্ত ফাইল ব্যবহারকারী/প্রসাদ/নথি/চিত্র ফোল্ডারের অধীনে সংরক্ষণ করা হবে

dirName = "/ব্যবহারকারী/প্রসাদ/নথি/ছবি/" + নাম

মুদ্রণ (dirName) না হলে os.path.exists (dirName): os.makedirs (dirName) মুদ্রণ ("ডিরেক্টরি তৈরি") অন্য: মুদ্রণ ("নাম ইতিমধ্যে বিদ্যমান") 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 (ফ্রেম, (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: আপনার নমুনা চিত্র প্রশিক্ষণ

ফেস ডিটেকশন সম্পন্ন হওয়ার পর আমরা ছবিগুলি প্রশিক্ষণের জন্য যেতে পারি

পিআইএল আমদানি থেকে np হিসাবে osimport numpy আমদানি করুন চিত্র আমদানি cv2 আমদানি আচার #import সিরিয়াল

#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_))

#ইমেজ ফোল্ডারের নীচে ছবিগুলি প্রশিক্ষণ দিন

imageDir = os.path.join (baseDir, "ইমেজ")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("প্রশিক্ষণ ….."। এনকোড ())

os.walk (imageDir) এ রুট, dirs, ফাইলের জন্য:

ফাইলে ফাইলের জন্য প্রিন্ট (রুট, ডাইরস, ফাইল): প্রিন্ট (ফাইল) যদি file.endswith ("png") অথবা file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) প্রিন্ট (লেবেল)

যদি লেবেল আইডিতে লেবেল না থাকে:

labelIds [label] = currentId print (labelIds) currentId += 1

id_ = labelIds [label]

pilImage = Image.open (path).convert ("L") imageArray = np.array (pilImage, "uint8") face = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbours = 5)

মুখে (x, y, w, h) জন্য:

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

খোলা ("লেবেল", "wb") হিসাবে f:

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

identizer.train (xTrain, np.array (yLabels))

identizer.save ("trainer.yml") প্রিন্ট (labelIds)

ধাপ 3: মুখ সনাক্ত করা

প্রশিক্ষণ শেষ হওয়ার পর এখন আপনি নিচের কোডটি চালাতে পারেন যাতে এটি আপনার প্রশিক্ষিত মুখগুলিকে চিনতে শুরু করে

আমদানি osos.environ ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi।

খোলা ('লেবেল', 'আরবি') হিসাবে f:

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

ক্যামেরা = cv2। ভিডিও ক্যাপচার (0)

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

শনাক্তকারী = cv2.face. LBPHFaceRecognizer_create () identizer.read ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

শেষ = ''

#camera.capture_continuous (rawCapture, format = "bgr", use_video_port = true) ফ্রেমে

সত্য যখন: ret, frame = camera.read () ধূসর = cv2.cvtColor (ফ্রেম, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (ধূসর, স্কেলফ্যাক্টর = 1.5, minNeighbours = 5) for (x, y, w, h) মুখে: roiGray = ধূসর [y: y+h, x: x+w]

id_, conf = identizer.predict (roiGray)

নামের জন্য, dicti.items () এর মান:

if value == id_: print (name) cv2.putText (frame, name, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) যদি name! = last: last = নাম যদি conf <= 70: cv2.rectangle (ফ্রেম, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('ফ্রেম', ফ্রেম)

কী = cv2.waitKey (1)

যদি কী == 27:

ব্রেক cv2.destroyAllWindows ()

প্রস্তাবিত: