OpenCV ব্যবহার করে পাইথনে কীভাবে মানব মুখগুলি সনাক্ত করতে হয়
অবজেক্ট ডিটেকশন হ'ল কম্পিউটার দৃষ্টি এবং চিত্র প্রক্রিয়াকরণ সম্পর্কিত একটি কম্পিউটার প্রযুক্তি যা ডিজিটাল চিত্র এবং ভিডিওগুলিতে নির্দিষ্ট শ্রেণির অর্থকৃত বস্তুগুলির (যেমন মানুষের মুখ, গাড়ি, ফলমূল ইত্যাদি) সনাক্তকরণের কাজ করে।
এই টিউটোরিয়ালে, আমরা একটি সাধারণ পাইথন স্ক্রিপ্ট তৈরি করব যা একটি চিত্রে মানুষের মুখ সনাক্তকরণের বিষয়ে আলোচনা করে, আমরা ওপেনসিভি লাইব্রেরিতে Haar Cascade Classifiers in OpenCV library. হার ক্যাসকেড শ্রেণিবদ্ধ ব্যবহার করব।
ষ্টব্য: এটি উল্লেখ করার মতো বিষয় যে আপনাকে অবজেক্ট সনাক্তকরণ এবং অবজেক্টের শ্রেণিবিন্যাসের মধ্যে পার্থক্য করতে হবে, অবজেক্ট সনাক্তকরণটি কোনও নির্দিষ্ট বস্তুর সনাক্তকরণ এবং এটি কোনও চিত্রের মধ্যে কোথায় অবস্থিত, যখন অবজেক্ট শ্রেণিবদ্ধকরণটি বিষয়টিকে কোন শ্রেণীর অন্তর্গত তা স্বীকৃতি দিচ্ছে। আপনি যদি চিত্রের শ্রেণিবিন্যাসে আগ্রহী হন তবে এই টিউটোরিয়ালটিতে যান ।
হর বৈশিষ্ট্য-ভিত্তিক ক্যাসকেড শ্রেণিবদ্ধীরা হ'ল একটি মেশিন লার্নিং ভিত্তিক পদ্ধতি যেখানে একটি ক্যাসকেড ফাংশন প্রচুর ইতিবাচক এবং নেতিবাচক চিত্র থেকে প্রশিক্ষিত হয়। এরপরে এটি অন্যান্য চিত্রের অবজেক্টগুলি সনাক্ত করতে ব্যবহৃত হয়।
হর বৈশিষ্ট্য-ভিত্তিক ক্যাসকেড শ্রেণিবদ্ধীদের সম্পর্কে দুর্দান্ত জিনিসটি হ'ল আপনি যে কোনও বস্তুর পছন্দমতো শ্রেণিবদ্ধ করতে পারেন, ওপেনসিভি আপনাকে ইতিমধ্যে কিছু শ্রেণিবদ্ধ পরামিতি সরবরাহ করেছে, সুতরাং এটিতে প্রশিক্ষণের জন্য আপনাকে কোনও ডেটা সংগ্রহ করতে হবে না।
শুরু করতে, প্রয়োজনীয়গুলি ইনস্টল করুন:
pip3 install opencv-python
ঠিক আছে, একটি নতুন পাইথন ফাইল তৈরি করুন এবং অনুসরণ করুন, আসুন প্রথমে ওপেনসিভি আমদানি করুন :
import cv2
পরীক্ষা করার জন্য আপনার একটি নমুনা চিত্রের প্রয়োজন হবে, এটির সামনে পরিষ্কার মুখ আছে তা নিশ্চিত করুন, আমি এই স্টক চিত্রটি ব্যবহার করব যাতে দুটি সুন্দর সুন্দর বাচ্চা রয়েছে:
# loading the test image
image = cv2.imread("kids.jpg")
ফাংশন ইম্রেড () নির্দিষ্ট করা ফাইল থেকে একটি চিত্র লোড করে এবং এটিকে একটি অদ্ভুত এন-ডাইমেনশনাল অ্যারে হিসাবে ফিরিয়ে দেয়।
চিত্রটিতে মুখগুলি সনাক্ত করার আগে আমাদের প্রথমে চিত্রটিকে গ্রেস্কেলতে রূপান্তর করতে হবে, কারণ এটি যে ফাংশনগুলি আমরা মুখগুলি সনাক্ত করতে ব্যবহার করব তা গ্রেস্কেল চিত্রটি প্রত্যাশা করে:
# converting to grayscale
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
সিভিটি কলর () ফাংশনটি একটি ইনপুট চিত্রকে এক রঙের স্থান থেকে অন্য রঙে রূপান্তর করে, আমরা cv2.COLOR_BGR2GRAY কোড নির্দিষ্ট করেছিলাম , যার অর্থ বিজিআর ( বি লু জি রেন আর এডি) থেকে গ্রেস্কেল রূপান্তরিত ।
যেহেতু এই টিউটোরিয়ালটি মানুষের মুখগুলি সনাক্ত করার বিষয়ে, তাই এগিয়ে যান এবং এই তালিকায় মানুষের মুখ সনাক্তকরণের জন্য হ্যার ক্যাসকেডটি ডাউনলোড করুন । আরও সুনির্দিষ্টভাবে, "hacksascade_frontalface_default.xML" । আসুন এটি "ক্যাসকেডস" (বা যাই হোক না কেন) নামে একটি ফোল্ডারে রাখুন এবং তারপরে এটি লোড করুন:
# initialize the face recognizer (default face haar cascade)
face_cascade = cv2.CascadeClassifier("cascades/haarcascade_fontalface_default.xml")
আসুন এখন চিত্রের সমস্ত মুখগুলি শনাক্ত করুন:
# detect all the faces in the image
faces = face_cascade.detectMultiScale(image_gray)# print the number of faces detectedprint(f"{len(faces)} faces detected in the image.")
ডিটেক্টমুটিস্কেল () ফাংশনটি একটি প্যারামিটার হিসাবে একটি চিত্র নেয় এবং আয়তক্ষেত্রগুলির একটি তালিকা হিসাবে বিভিন্ন আকারের অবজেক্টগুলি সনাক্ত করে, আসুন চিত্রটিতে এই আয়তক্ষেত্রগুলি আঁকুন:
# for every face, draw a blue rectangle
for x, y, width, height in faces:cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2)
শেষ পর্যন্ত, নতুন চিত্রটি সংরক্ষণ করুন:
# save the image with rectangles
cv2.imwrite("kids_detected.jpg", image)
এখানে আমার ফলাফল চিত্র:

বেশ সুন্দর, তাই না? অন্যান্য অবজেক্ট শ্রেণিবদ্ধকারী, অন্যান্য চিত্র এবং আরও আকর্ষণীয় ব্যবহার করতে নির্দ্বিধায় আপনার ওয়েবক্যামটি ব্যবহার করুন! তার জন্য কোডটি এখানে:
import cv2
# create a new cam objectcap = cv2.VideoCapture(0)# initialize the face recognizer (default face haar cascade)face_cascade = cv2.CascadeClassifier("cascades/haarcascade_fontalface_default.xml")while True:# read the image from the cam_, image = cap.read()# converting to grayscaleimage_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# detect all the faces in the imagefaces = face_cascade.detectMultiScale(image_gray, 1.3, 5)# for every face, draw a blue rectanglefor x, y, width, height in faces:cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2)cv2.imshow("image", image)if cv2.waitKey(1) == ord("q"):breakcap.release()cv2.destroyAllWindows()
একবার আপনি এটি সম্পাদন করেন (যদি আপনার অবশ্যই একটি ওয়েবক্যাম থাকে), এটি আপনার ওয়েবক্যামটি খুলবে এবং চিত্রের সমস্ত সামনের মুখের চারদিকে নীল আয়তক্ষেত্র আঁকতে শুরু করবে। কোড চ্যালেঞ্জিং, সমস্ত আমি, এর পরিবর্তে একটি ফাইল থেকে ইমেজ পড়ার পরিবর্তিত নয়, আমি একটি নির্মিত VideoCapture বস্তু তা থেকে একটি প্রত্যেক সময় সার্চ করার সময় লুপ, একবার আপনি টিপুন কুই বোতাম, প্রধান লুপ শেষ হয়ে যাবে ।
মুখ সনাক্তকরণের জন্য অফিসিয়াল ওপেনসিভি ডকুমেন্টেশন পরীক্ষা করুন ।
ঠিক আছে, তাহলে এটি আপনাকে সব টিউটোরিয়াল উপকরণ (পরীক্ষার ইমেজ, Haar ক্যাসকেড, এবং সম্পূর্ণ কোড সহ) পেতে পারেন এই টিউটোরিয়ালের জন্য তা না হয়, এখানে ।
Code for How to Detect Human Faces in Python using OpenCV
You can also view the full code on github.
face_detection.py
import cv2
# loading the test imageimage = cv2.imread("kids.jpg")# converting to grayscaleimage_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# initialize the face recognizer (default face haar cascade)face_cascade = cv2.CascadeClassifier("cascades/haarcascade_fontalface_default.xml")# detect all the faces in the imagefaces = face_cascade.detectMultiScale(image_gray, 1.3, 5)# print the number of faces detectedprint(f"{len(faces)} faces detected in the image.")# for every face, draw a blue rectanglefor x, y, width, height in faces:cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2)# save the image with rectanglescv2.imwrite("kids_detected.jpg", image)
live_face_detection.py
import cv2
# create a new cam objectcap = cv2.VideoCapture(0)# initialize the face recognizer (default face haar cascade)face_cascade = cv2.CascadeClassifier("cascades/haarcascade_fontalface_default.xml")while True:# read the image from the cam_, image = cap.read()# converting to grayscaleimage_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# detect all the faces in the imagefaces = face_cascade.detectMultiScale(image_gray, 1.3, 5)# for every face, draw a blue rectanglefor x, y, width, height in faces:cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2)cv2.imshow("image", image)if cv2.waitKey(1) == ord("q"):breakcap.release()cv2.destroyAllWindows()
0 comments:
Post a Comment