आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

आप कई कारणों से किसी वीडियो या छवि में किसी व्यक्ति के चेहरे को छिपाने के लिए चेहरा धुंधला करने का उपयोग कर सकते हैं। गोपनीयता और सुरक्षा के मुद्दे सबसे प्रमुख हैं। अधिकांश वीडियो-शेयरिंग प्लेटफ़ॉर्म और वीडियो एडिटिंग सॉफ़्टवेयर में फ़ेस-ब्लरिंग कार्यक्षमता अंतर्निहित होती है।

आप Python और OpenCV और NumPy पुस्तकालयों का उपयोग करके अपना स्वयं का फेस-ब्लरिंग प्रोग्राम स्क्रैच से बना सकते हैं।

अपने पर्यावरण की स्थापना

इस लेख के साथ पालन करने के लिए, आपको इससे परिचित होने की आवश्यकता है पायथन की मूल बातें और की बुनियादी समझ रखते हैं NumPy लाइब्रेरी का उपयोग करना.

कोई भी Python IDE खोलें जिसके साथ आप सहज हों। एक आभासी वातावरण बनाएँ जिसमें आप आवश्यक लाइब्रेरी स्थापित करेंगे। एक नई पायथन फ़ाइल बनाएँ। टर्मिनल पर नेविगेट करें और आवश्यक लाइब्रेरी स्थापित करने के लिए निम्न कमांड चलाएँ। पुस्तकालयों को अंतरिक्ष-सीमांकित सूची के रूप में पास करें।

पाइप ओपनसीवी-पायथन न्यूमपी स्थापित करें

आप वीडियो इनपुट लेने और प्री-प्रोसेस करने के लिए OpenCV का उपयोग करेंगे और सरणियों के साथ काम करने के लिए NumPy।

एक बार जब आप लाइब्रेरी स्थापित कर लेते हैं, तो प्रोजेक्ट कंकाल को अपडेट करने के लिए IDE की प्रतीक्षा करें। जब अपडेट पूरा हो जाए और परिवेश तैयार हो जाए, तो आप कोडिंग शुरू करने के लिए स्वतंत्र हैं।

पूर्ण स्रोत कोड a में उपलब्ध है गिटहब रिपॉजिटरी.

आवश्यक पुस्तकालयों का आयात करना

OpenCV और NumPy लाइब्रेरी आयात करके प्रारंभ करें। यह आपको उनके द्वारा समर्थित किसी भी फ़ंक्शन को कॉल करने और उपयोग करने में सक्षम करेगा। OpenCV-पायथन को cv2 के रूप में आयात करें।

आयात cv2
आयात Numpy जैसा एनपी

OpenCV-पायथन मॉड्यूल cv2 नाम का उपयोग OpenCV समुदाय द्वारा स्थापित एक सम्मेलन के रूप में करता है। OpenCV-python OpenCV लाइब्रेरी का Python आवरण है जो C++ में लिखा गया है।

अपना इनपुट लेना

एक चर बनाएँ और प्रारंभ करें विडियो रिकॉर्ड वस्तु। यदि आप इनपुट स्रोत के रूप में अपने कंप्यूटर के प्राथमिक कैमरे का उपयोग करना चाहते हैं तो शून्य को तर्क के रूप में पास करें। अपने कंप्यूटर से जुड़े बाहरी कैमरे का उपयोग करने के लिए एक पास करें। पहले से रिकॉर्ड किए गए वीडियो पर चेहरा धुंधला करने के लिए, इसके बजाय वीडियो का पाथ पास करें. को एक दूरस्थ कैमरे का उपयोग करें, कैमरे का URL पास करें जिसमें उसका IP पता और पोर्ट नंबर हो।

टोपी = cv2.वीडियो कैप्चर (0)

इनपुट पर चेहरा धुंधला करने के लिए, आपको तीन कार्यों की आवश्यकता होगी:

  • एक फ़ंक्शन जो इनपुट को प्री-प्रोसेस करेगा।
  • एक फ़ंक्शन जो इनपुट में चेहरे को धुंधला कर देगा।
  • एक मुख्य कार्य जो प्रोग्राम के प्रवाह को नियंत्रित करेगा और आउटपुट प्रदर्शित करेगा।

वीडियो इनपुट को प्रीप्रोसेस करना

एक इनपुट प्रीप्रोसेसिंग फ़ंक्शन बनाएं जो इनपुट वीडियो के प्रत्येक फ्रेम को इनपुट के रूप में ले जाएगा। CascadeClassifier क्लास को इनिशियलाइज़ करें जिसका इस्तेमाल आप फेस डिटेक्शन के लिए करेंगे। फ़्रेम को 640 गुणा 640 पिक्सेल में बदलें। आसान प्रसंस्करण के लिए आकार बदलने वाले फ्रेम को ग्रेस्केल में बदलें, और अंत में इनपुट में चेहरों का पता लगाएं और उन्हें आयतों से बांधें।

डीईएफ़image_preprocess(चौखटा):
face_detector = cv2.CascadeClassifier (cv2.data.haarcascades)
+ 'haarcascade_frontalface_default.xml')

resized_image = cv2.resize (फ़्रेम, (640, 640))

ग्रे_इमेज = cv2.cvtColor (resize_image,
cv2.COLOR_BGR2GRAY)

face_rects = face_detector.detectMultiScale(
ग्रे_इमेज, 1.04, 5, न्यूनतम आकार=(20, 20))

वापस करना रीसाइज़_इमेज, फेस_रेक्ट्स

यह फ़ंक्शन एक टपल लौटाता है जिसमें आकार बदलने वाली छवि और आयतों की एक सूची होती है जो पहचाने गए चेहरों का प्रतिनिधित्व करती है।

चेहरा धुंधला होना

एक धुंधला कार्य बनाएँ जो आपके इनपुट में चेहरों को धुंधला कर देगा। फ़ंक्शन रीसाइज़्ड फ़्रेम लेता है और प्रीप्रोसेसिंग फ़ंक्शन द्वारा इनपुट के रूप में लौटाए गए चेहरों को बाध्य करने वाले आयतों की सूची लेता है। प्रत्येक चेहरे के आयत पर लूप। प्रत्येक आयत के केंद्र और धुंधले वृत्त की त्रिज्या की गणना करता है। सभी पिक्सेल को शून्य पर प्रारंभ करके आकार बदलने वाले फ़्रेम के समान आयामों वाली एक काली छवि बनाता है। काली छवि पर एक सफेद वृत्त बनाता है जिसका केंद्र परिकलित त्रिज्या का उपयोग करते हुए चेहरे के आयत पर होता है। अंत में, यह छवि को सफेद वृत्त पर धुंधला कर देता है।

डीईएफ़face_blur(resize_frame, face_rects):
के लिए (एक्स, वाई, डब्ल्यू, एच) में face_rects:
# केंद्र और त्रिज्या निर्दिष्ट करना
# धुंधले घेरे का
केंद्र_एक्स = एक्स + डब्ल्यू // 3
केंद्र_य = वाई + एच // 3
त्रिज्या = एच // 1

# समान होने वाली एक काली छवि बनाना
# आयाम फ़्रेम के रूप में
मुखौटा = np.zeros ((resized_frame.shape [:3]), एनपी.यूइंट8)

# फ्रेम के चेहरे के क्षेत्र में एक सफेद वृत्त बनाएं
cv2.circle (मुखौटा, (center_x, center_y), त्रिज्या,
(255, 255, 255), -1)

# पूरे फ्रेम को धुंधला करना
धुंधला_इमेज = cv2.medianBlur (resize_frame, 99)

# फ्रेम का पुनर्निर्माण:
# - अगर मास्क > 0 है तो धुंधले फ्रेम से पिक्सल
# - अन्यथा, मूल फ़्रेम से पिक्सेल लें
resized_frame = np.where (मुखौटा> 0, धुंधली_छवि,
रीसाइज़_फ़्रेम)

वापस करना resize_frame

फ़ंक्शन NumPy का उपयोग करता है कहाँ() धुंधला होने के दौरान फ्रेम को फिर से बनाने के लिए कार्य करता है।

अपने कार्यक्रम के प्रवाह को नियंत्रित करना

एक मुख्य कार्य बनाएँ जो आपके कार्यक्रम के प्रवेश बिंदु के रूप में कार्य करेगा। यह तब कार्यक्रम के प्रवाह को नियंत्रित करेगा। वीडियो इनपुट के फ्रेम को लगातार कैप्चर करने के लिए फ़ंक्शन एक अनंत लूप शुरू करेगा। कैमरे से एक फ्रेम पढ़ने के लिए कैप ऑब्जेक्ट की रीड मेथड को कॉल करें।

फ़ंक्शन तब फ़्रेम को प्रीप्रोसेसिंग फ़ंक्शन में पास करेगा और धुंधली छवि प्राप्त करने के लिए रिटर्न वैल्यू को दूसरे फ़ंक्शन, face_blur पर पास करेगा। यह तब ब्लरिंग फ़ंक्शन द्वारा लौटाए गए फ़्रेम का आकार बदलता है और आउटपुट प्रदर्शित करता है।

डीईएफ़मुख्य():
जबकिसत्य:
सफलता, फ्रेम = कैप.रीड ()
resize_input, face_rects = image_preprocess (फ्रेम)
धुंधला_छवि = चेहरा_धुंधला (आकार_इनपुट, चेहरा_सही)

# धुंधली छवि प्रदर्शित करना
cv2.imshow ("धुंधली छवि", cv2.resize (धुंधली_छवि, (500, 500)))

अगर cv2.waitKey (1) == ऑर्ड ("क्यू"):
तोड़ना

जब उपयोगकर्ता q कुंजी दबाता है तो फ़ंक्शन आउटपुट डिस्प्ले को भी समाप्त कर देता है।

कार्यक्रम चलाना

जब आप स्क्रिप्ट चलाते हैं तो सुनिश्चित करें कि मुख्य फ़ंक्शन पहले चलता है। यदि आप स्क्रिप्ट को किसी अन्य प्रोग्राम में मॉड्यूल के रूप में आयात करते हैं तो यह स्थिति गलत होगी।

अगर __नाम__ == "__मुख्य__":
मुख्य()

यह आपको स्क्रिप्ट को एक मॉड्यूल के रूप में उपयोग करने या इसे एक स्टैंडअलोन प्रोग्राम के रूप में चलाने की अनुमति देता है। जब प्रोग्राम चलता है, तो आपको इसके समान आउटपुट देखना चाहिए:

चेहरा धुंधला है और पहचान में नहीं आ रहा है।

फेस ब्लरिंग के वास्तविक-विश्व अनुप्रयोग

लोगों की निजता की सुरक्षा के लिए आप कई तरह के ऐप्लिकेशन में फ़ेस ब्लरिंग लगा सकते हैं. स्ट्रीट व्यू और मैपिंग सेवाएं लोगों द्वारा खींची गई छवियों में उनके चेहरों को धुंधला करने के लिए ब्लरिंग का उपयोग करती हैं। कानून प्रवर्तन गवाहों की पहचान की रक्षा के लिए चेहरे को धुंधला करने का उपयोग करता है।

कई वीडियो-साझाकरण प्लेटफार्मों ने अपने उपयोगकर्ताओं के लिए चेहरा धुंधला करने वाली सुविधा भी एकीकृत की है। इन क्षेत्रों में फ़ेस ब्लरिंग के उपयोग की तुलना करने से आपको यह देखने में मदद मिलेगी कि अन्य प्लेटफ़ॉर्म तकनीक को कैसे एकीकृत करते हैं।