এখানে একটি সমাধান ব্যবহার করে python
এবং opencv
:
এটি left, right, top, bottom
ভেরিয়েবল দ্বারা নির্দিষ্ট প্যাডিং সহ আপনি যে কোনও ফোল্ডারে এটি চালাচ্ছেন সেটিতে জেপিগ ফটোগুলিতে পাওয়া সমস্ত মুখগুলি কাটবে :
import cv2
import sys
import glob
cascPath = "haarcascade_frontalface_default.xml"
# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)
files=glob.glob("*.jpg")
for file in files:
# Read the image
image = cv2.imread(file)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Detect faces in the image
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.cv.CV_HAAR_SCALE_IMAGE
)
print "Found {0} faces!".format(len(faces))
# Crop Padding
left = 10
right = 10
top = 10
bottom = 10
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
print x, y, w, h
# Dubugging boxes
# cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
image = image[y-top:y+h+bottom, x-left:x+w+right]
print "cropped_{1}{0}".format(str(file),str(x))
cv2.imwrite("cropped_{1}_{0}".format(str(file),str(x)), image)
ব্যবহার করা
উপরের স্ক্রিপ্টটি ব্যবহার করার জন্য আপনার প্রয়োজন python
এবং opencv
ইনস্টল করা হয়েছে ( opencv
আপনার প্ল্যাটফর্মের জন্য কীভাবে ইনস্টল করবেন তা কেবল গুগল )।
তারপরে উপরের কোডটি .py
ফাইল "autocrop.py"
বা অন্য কিছু হিসাবে সংরক্ষণ করুন , তারপরে এই ফাইলটি ডাউনলোড করুন এবং সংরক্ষণ করুন এবং আপনার চিত্রগুলির মতো একই ডিরেক্টরিতে রেখে দিন।
স্ক্রিপ্টে .jpg
ফোল্ডারে সমস্ত ফাইল সন্ধান করা উচিত এবং পাইথন কোডে সেট করা প্যাডিং সেটিংসের ভিত্তিতে সেগুলি ক্রপ করা উচিত ।
উদাহরণ:
উপরের কোডটি 10 পিক্স প্যাডিংকে নাটকীয় হিসাবে সেট করে, এখানে উত্স এবং ফলাফল:
ফলাফল:
আমি নির্লজ্জভাবে অভিযোজিত টিউটোরিয়ালটি এখানে:
https://realpython.com/blog/python/face-recognition-with-python/
এই টিউটোরিয়ালটি আমার চেয়ে সমস্ত কিছু ব্যাখ্যা করার চেয়ে অনেক ভাল। মূলত আমি সেই কোডটি নিয়েছি এবং সামান্য কিছুটা ব্যাচ-প্রক্রিয়া স্টাফগুলিতে যুক্ত করেছি (ফাইলের নাম লিখার পরিবর্তে) এবং পরে এটি ক্রপ করতে এবং একটি আয়তক্ষেত্র আঁকতে এবং চিত্র প্রদর্শনের পরিবর্তে সংরক্ষণ করতে বলেছি।