Last chance! 50% off DataCamp Premium
Sale ends in
OpenCV, यानी Open Source Computer Vision Library, एक सशक्त ओपन-सोर्स लाइब्रेरी है जिसे कंप्यूटर विज़न प्रोजेक्ट्स में व्यापक रूप से अपनाया गया है। OpenCV को रियल-टाइम कंप्यूटर विज़न के लिए एक एकीकृत फ़्रेमवर्क प्रदान करने के लिए डिज़ाइन किया गया है और यह एक ऐसा प्लेटफ़ॉर्म है जो अनेक इमेज और वीडियो विश्लेषण अनुप्रयोगों को संभव बनाता है।
OpenCV लाइब्रेरी डेवलपर्स और शोधकर्ताओं को विज़ुअल डेटा प्रोसेसिंग के लाभ उठाने में अहम भूमिका निभाती है। इसकी क्षमताएँ बुनियादी इमेज प्रोसेसिंग से लेकर उन्नत कार्यों, जैसे ऑब्जेक्ट पहचान और चेहरा पहचान, तक फैली हुई हैं। एल्गोरिद्म, विधियों और इमेज डेटा प्रोसेसिंग ऑपरेशनों के विस्तृत संग्रह के साथ, OpenCV ऐसे बुद्धिमान सिस्टम के विकास को सुगम बनाता है जो विज़ुअल सामग्री को पहचानने और वर्गीकृत करने में सक्षम हों।
OpenCV का एक उल्लेखनीय अनुप्रयोग ऑब्जेक्ट रिकग्निशन में है, जहाँ इसके एल्गोरिद्म इमेज या वीडियो स्ट्रीम में वस्तुओं की पहचान और लोकेलाइज़ेशन को संभव बनाते हैं। यह क्षमता अन्य कंप्यूटर विज़न कार्यों, जैसे चेहरा पहचान, मूवमेंट ट्रैकिंग, और ऑगमेंटेड रियलिटी तकनीकों के समर्थन तक भी विस्तृत है।
इस लेख में, हम निम्न बिंदुओं का अन्वेषण करेंगे:
इस OpenCV ट्यूटोरियल को पूरा करने के लिए, आपको Python का मध्यम स्तर का ज्ञान और कंप्यूटर विज़न की बुनियादी समझ की आवश्यकता होगी। इमेज प्रोसेसिंग सिद्धांतों से परिचित होना भी सीखने के अनुभव को बेहतर बनाएगा, हालांकि प्रमुख अवधारणाएँ उल्लेख के समय परिभाषित की गई हैं।
!pip install opencv-python
यदि आप Anaconda का उपयोग कर रहे हैं, तो आप निम्न कमांड का उपयोग कर सकते हैं:
!conda install -c conda-forge opencv
यह पुष्टि करने के लिए कि इंस्टॉलेशन सफल रहा है, निम्न कोड को Python इंटरप्रेटर या Jupyter Notebook पर चलाएँ:
import cv2
print(cv2.__version__)
सफल इंस्टॉलेशन पर, यह इंस्टॉल की गई OpenCV लाइब्रेरी का वर्ज़न नंबर प्रिंट करेगा। यदि टर्मिनल या कंसोल पर वर्ज़न नंबर प्रिंट नहीं होता है, तो इसका अर्थ है कि इंस्टॉलेशन प्रक्रिया सफल नहीं हुई।
Google Colab का उपयोग करने पर महत्वपूर्ण नोट: Google Colab नोटबुक्स में इमेज प्रदर्शित करने के लिए, पारंपरिक cv2.imshow फ़ंक्शन को Google Colab की विशिष्ट लाइब्रेरी द्वारा प्रदत्त cv2_imshow से बदलना आवश्यक है। यह समायोजन Colab पर्यावरण के साथ संगतता सुनिश्चित करता है, जो cv2.imshow का समर्थन नहीं करता। इस परिवर्तन को लागू करने के लिए, नीचे दिखाए अनुसार Google Colab के patches से cv2_imshow फ़ंक्शन इम्पोर्ट करें:
from google.colab.patches import cv2_imshow
# Displaying an image in a window
cv2_imshow(image)
नीचे दिया गया कोड स्निपेट इमेज प्रोसेसिंग के लिए OpenCV लाइब्रेरी का उपयोग शुरू करने का एक बुनियादी प्रवेश-बिंदु प्रस्तुत करता है। किसी इमेज को डेवलपमेंट एनवायरनमेंट में लोड करना सरल कंप्यूटर विज़न प्रोजेक्ट्स से लेकर प्रोडक्शन में जटिल रियल-टाइम ऑब्जेक्ट डिटेक्शन अनुप्रयोगों तक अनेक क्षेत्रों में किया जाता है। इमेज को प्रदर्शित करना भी किसी इमेज की सामग्री या प्रोसेसिंग परिणाम का अवलोकन करने के लिए महत्वपूर्ण है। नीचे दिए कोड में, हम फ़ाइल से एक JPG पढ़ते हैं और उसे OpenCV लाइब्रेरी का उपयोग करके प्रदर्शित करते हैं।
OpenCV में इमेज लोड और डिस्प्ले करने के लिए आप निम्न कोड स्निपेट का उपयोग कर सकते हैं:
import cv2
# Loading image from a file
image = cv2.imread('your/image/path.jpg')
# Displaying an image in a window
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

लैपटॉप के आसपास बैठे ऑफिस कर्मचारी। स्रोत: Canva
इस कोड में, इमेज को फ़ाइल से ‘cv2.imread’ के माध्यम से पढ़ा जाता है और फिर ‘imshow’ की मदद से एक विंडो में प्रदर्शित किया जाता है। 'cv2.waitKey(0)' फ़ंक्शन यह सुनिश्चित करता है कि विंडो तब तक खुली रहे जब तक उपयोगकर्ता कोई कुंजी दबाकर उसे बंद न कर दे।
इमेज प्रोसेसिंग का अर्थ है किसी इमेज में पिक्सेल डेटा में इस प्रकार हेरफेर करना कि वह आरंभिक इमेज की दृश्य उपस्थिति को परिवर्तित कर दे—चाहे वह फीचर एक्सट्रैक्शन, इमेज विश्लेषण, या अन्य कंप्यूटर विज़न-संबंधित कार्यों के लिए हो। इमेज प्रोसेसिंग तकनीकों के उदाहरण हैं: कलर प्रोसेसिंग, फ़िल्टरिंग, सेगमेंटेशन, एज डिटेक्शन आदि।
नीचे दिया गया कोड स्निपेट, पिछले कोड स्निपेट में लोड की गई इमेज पर एक सरल इमेज प्रोसेसिंग तकनीक प्रदर्शित करता है। यहाँ दर्शाई गई तकनीक एक साधारण रंग रूपांतरण है—विशेष रूप से, ग्रेस्केल रूपांतरण। ग्रेस्केल रूपांतरण इमेज प्रोसेसिंग की एक बुनियादी तकनीक है, जो इमेज को इंटेंसिटी मानों के एकल चैनल तक सीमित कर देती है।
# Converting an image to grayscale form
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Displaying the grayscale image
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
यहाँ, cv2.cvtColor() लोडेड इमेज को ग्रेस्केल में बदलता है।

लैपटॉप के आसपास बैठे ऑफिस कर्मचारी (ग्रेस्केल)। स्रोत: Canva
एज डिटेक्शन इमेज प्रोसेसिंग और कंप्यूटर विज़न की एक बुनियादी तकनीक है। यह उन बिंदुओं की पहचान करती है जहाँ किसी इमेज में ब्राइटनेस तीव्रता से बदलती है या असंततता होती है। फीचर्स का पता लगाने में एज डिटेक्शन विशेष रूप से महत्वपूर्ण है। सामान्यतः यह पिक्सेल इंटेंसिटी में तीव्र बदलाव का पता लगाकर कार्य करता है। इमेज ब्राइटनेस में इन तीव्र परिवर्तन बिंदुओं को जोड़कर, इमेज में वस्तुओं की रूपरेखा बनाने वाली रेखाएँ और किनारे निर्मित होते हैं।
एज डिटेक्शन एल्गोरिद्म की मदद से इमेज में किसी वस्तु की सूक्ष्म टेक्स्चरल और स्ट्रक्चरल विशेषताओं का भी पता लगाया जा सकता है।
कई एज डिटेक्शन एल्गोरिद्म, जैसे Canny Edge Detector, Sobel Method, और Fuzzy Logic method, का उपयोग ऑब्जेक्ट रिकग्निशन, इमेज सेगमेंटेशन और फीचर एक्सट्रैक्शन में किया जाता है। नीचे दिया गया कोड स्निपेट OpenCV का उपयोग करके बेसिक एज डिटेक्शन दर्शाता है:
# Applying Canny edge detection (a simple edge detection method)
edges = cv2.Canny(gray_image, 50, 150)
# Displaying the edge-detected image
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
Canny एज डिटेक्शन एल्गोरिद्म OpenCV लाइब्रेरी में 'cv2.Canny()' फ़ंक्शन द्वारा उपलब्ध है, जो ग्रेस्केल इमेज के लिए ऑब्जेक्ट के किनारों का पता लगाने हेतु लागू होता है।

लैपटॉप के आसपास बैठे ऑफिस कर्मचारी (ग्रेस्केल)। स्रोत: Canva
इमेज का रिसाइज़ और रोटेट करना इमेज प्रोसेसिंग की बुनियादी आवश्यकताएँ हैं क्योंकि ये विज़ुअल कंटेंट के अनुकूलन और रूपांतरण को संभव बनाती हैं। रिसाइज़िंग का अर्थ है इमेज के आयाम बदलना—चाहे बढ़ाना हो या घटाना—और यह फ़ंक्शन विशिष्ट परिवेशों में इमेज को स्केल और प्लेस करने के लिए आवश्यक है।
रोटेशन वह समायोजन है जो किसी निर्दिष्ट कोण पर इमेज को देखने के कोण को बदलता है। दोनों ऑपरेशन्स आमतौर पर प्री-प्रोसेसिंग चरणों के रूप में लागू होते हैं—कंप्यूटर विज़न, मशीन लर्निंग और ग्राफ़िक्स सहित विभिन्न उद्देश्यों के लिए। उदाहरण के लिए, डीप न्यूरल नेटवर्क्स के प्रशिक्षण में, इमेज को रोटेट और रिसाइज़ करना डेटा ऑगमेंटेशन तकनीकें हैं जिनका उपयोग ट्रेनिंग डेटा की विविधता बढ़ाने के लिए किया जाता है। डेटा ऑगमेंटेशन का उद्देश्य ऐसे डेटासेट से नेटवर्क को प्रशिक्षित करना है जिसमें पर्याप्त वैरिएंस हो ताकि प्रशिक्षित नेटवर्क अनदेखे डेटा पर अच्छी तरह सामान्यीकरण कर सके।
OpenCV का उपयोग करके इमेज को रिसाइज़ और रोटेट करने के लिए आप निम्न कोड का उपयोग कर सकते हैं:
# Resizing the image
resized_image = cv2.resize(image, (width, height))
# Rotating the image by 45 degrees
rotation_matrix = cv2.getRotationMatrix2D((width / 2, height / 2), 45, 1)
rotated_image = cv2.warpAffine(resized_image, rotation_matrix, (width, height))
# Displaying the resized and rotated images
cv2.imshow('Resized Image', resized_image)
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
जहाँ 'cv2.resize' इमेज का आकार बदलने के लिए प्रयोग होता है, वहीं 'cv2.getRotationMatrix2D' तथा 'cv2.warpAffine' दोनों इमेज को रोटेट करने के लिए उपयोग किए जाते हैं।

लैपटॉप के आसपास बैठे ऑफिस कर्मचारी (घुमाया हुआ)। स्रोत: Canva
वीडियो क्रमवार रूप से प्रस्तुत की गई इमेजों की एक श्रृंखला होते हैं। कंप्यूटर विज़न में, वीडियो प्रोसेसिंग क्षमताएँ रियल-टाइम और रिकॉर्डेड डेटा को प्रोसेस करने वाले अनुप्रयोगों के विकास और निर्माण के लिए महत्वपूर्ण हैं। इमेज की स्थिर प्रकृति के विपरीत, वीडियो प्रोसेसिंग इमेजों के कालानुक्रमिक अनुक्रम से संबंधित होती है, जो मूवमेंट, समय के साथ बदलाव, और टेम्पोरल पैटर्न के निष्कर्षण का विश्लेषण संभव बनाती है।
वीडियो डेटा में कंटेंट की गतिशील प्रकृति के कारण वीडियो प्रोसेसिंग तकनीकों का कुशल होना आवश्यक है, विशेषकर महत्त्वपूर्ण प्रणालियों में—जैसे निगरानी, स्वायत्त ड्राइविंग, गतिविधि पहचान आदि—जहाँ मूवमेंट और परिवर्तन को समझना अनिवार्य होता है।
वीडियो प्रोसेसिंग कार्यों के लिए OpenCV का उपयोग करने का एक बड़ा लाभ यह है कि यह वीडियो स्ट्रीम को कुशलतापूर्वक संभालने के लिए व्यापक फीचर्स का एक सेट प्रदान करता है। OpenCV इमेज की तरह ही वीडियो कैप्चर, प्रोसेसिंग और विश्लेषण के उपकरण उपलब्ध कराता है।
निम्न कोड स्निपेट का उपयोग लोकल रूप से स्थित किसी वीडियो को लोड और प्रोसेस करने के लिए किया जा सकता है:
import cv2
# Open a video capture object
cap = cv2.VideoCapture("Your video's path.mp4")
# To check if the video has opened successfully of not
if not cap.isOpened():
print("Error: Couldnot open the video.")
exit()
# Loop through the video frames
while True:
# Reading a frame from the video
ret, frame = cap.read()
# Break the loop if the video has ended
if not ret:
break
# Display the original frame
cv2.imshow('Original Video', frame)
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('Black and White Video', gray_frame)
# Perform edge detection on the video
edges_frame = cv2.Canny(gray_frame, 50, 150)
cv2.imshow('Edges Video', edges_frame)
# Break the loop if 'q' key is pressed
if cv2.waitKey(25) & 0xFF == ord('q'):
break
# Release the video capture object and close all windows
cap.release()
cv2.destroyAllWindows()
इस कोड में, ‘cv2.VideoCapture’ क्लास का उपयोग वीडियो फ़ाइल तक पहुँचने और उसके ‘cap.read' नामक मेथड के माध्यम से फ़्रेम पढ़ने के लिए किया जाता है। यह पहले ओरिजिनल वीडियो दिखाता है, फिर उसे ब्लैक एंड व्हाइट में बदलता है, और अंत में प्रत्येक फ़्रेम पर एज डिटेक्शन करता है। लूप तब तक चलता है जब तक वीडियो समाप्त नहीं हो जाता या बंद करने के लिए कीबोर्ड से इनपुट नहीं लिया जाता। ‘cv2.waitKey(25)’ फ़्रेमों के बीच थोड़ी देरी देता है ताकि उन्हें प्रदर्शित किया जा सके, जिससे समान रूप से प्लेबैक सुनिश्चित होता है।
ऑब्जेक्ट डिटेक्शन कंप्यूटर विज़न का एक बुनियादी कार्य है जिसका उद्देश्य इमेज या वीडियो में वस्तुओं का पता लगाना और उन्हें लोकेलाइज़ करना है तथा मान्यता परिणाम प्रदान करना है—डिटेक्टेड क्लास लेबल्स की सूची और उनके अनुरूप बॉन्डिंग बॉक्स। पीपल डिटेक्शन, जो ऑब्जेक्ट रिकग्निशन का एक प्रकार है, विज़ुअल जानकारी के भीतर लोगों की पहचान और लोकेलाइज़ेशन पर केंद्रित होता है।
पीपल डिटेक्शन के अनुप्रयोगों में निगरानी, भीड़ प्रबंधन, लोगों की गिनती, ट्रैकिंग, मानव-कंप्यूटर अंत:क्रिया, और स्मार्ट परिवेश शामिल हैं। निगरानी में, यह तकनीक संदिग्ध गतिविधियों का पता लगाने में सहायक होती है, जबकि भीड़ प्रबंधन में यह जेस्चर पहचान और ट्रैकिंग का समर्थन करती है। मानव-कंप्यूटर अंत:क्रिया में पीपल डिटेक्शन महत्वपूर्ण भूमिका निभाता है और स्मार्ट परिवेशों में संसाधन अनुकूलन और उन्नत सुरक्षा के लिए भी उपयोग किया जाता है।
YOLO, जिसका पूर्ण रूप "You Only Look Once" है, रियल-टाइम ऑब्जेक्ट रिकग्निशन को कुशलतापूर्वक प्राप्त करने वाली एक प्रचलित प्रणाली के रूप में उभरा है। पारंपरिक ऑब्जेक्ट डिटेक्शन विधियों के विपरीत, YOLO इमेज को कोशिकाओं के एक ग्रिड में विभाजित करता है और प्रत्येक सेल के लिए एक साथ बॉन्डिंग बॉक्स तथा क्लास प्रायिकताएँ अनुमानित करता है।
हमारे व्यापक गाइड में YOLO ऑब्जेक्ट डिटेक्शन के बारे में और पढ़ें।
नीचे OpenCV और Yolo का उपयोग करते हुए किसी इमेज में व्यक्ति का पता लगाने का कोड स्निपेट दिया गया है:
import cv2
net = cv2.dnn.readNet('yolov3.weights', 'yolov3.cfg')
layer_names = net.getUnconnectedOutLayersNames()
image = cv2.imread('image path.jpg')
height, width = image.shape[:2]
blob = cv2.dnn.blobFromImage(image, 1/255.0, (416, 416), swapRB=True, crop=False)
net.setInput(blob)
outs = net.forward(layer_names)
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.5 and class_id == 0: # Class ID for person
box = detection[:4] * np.array([width, height, width, height])
(x, y, w, h) = box.astype(int)
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('Person Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
इसी प्रकार, वीडियो में व्यक्ति का पता लगाने के लिए कोड संरचना समान सिद्धांतों का पालन करती है। एक स्थिर इमेज को प्रोसेस करने के बजाय, स्क्रिप्ट या अनुप्रयोग लगातार वीडियो फ़्रेम प्रोसेस करता है।
इमेज और वीडियो क्लिप दोनों में लोगों की पहचान का आधार समान सिद्धांत है, मुख्य अंतर समय का होता है। इमेज में, कार्य एकल स्थिर फ़्रेम में लोगों की पहचान और पोज़िशनिंग करना है।
यह अनुप्रयोग निगरानी स्नैपशॉट्स और अन्य गैर-ओवरलैपिंग फ़ोटोग्राफ़्स के लिए सबसे उपयुक्त है। इसके विपरीत, वीडियो में लक्ष्य यह है कि व्यक्तियों की पहचान और ट्रैकिंग की जाए जब वे अगले फ़्रेमों में आगे बढ़ते हैं। इसे कभी-कभी वीडियो में ऑब्जेक्ट ट्रैकिंग भी कहा जाता है। समयात्मक पहलू मानव गतियों और अंतःक्रियाओं पर विचार करते समय महत्वपूर्ण हो जाता है, जिससे वीडियो-आधारित व्यक्ति-पहचान सुरक्षा निगरानी, भीड़ की निगरानी, और व्यवहार विश्लेषण सहित रियल-टाइम अनुप्रयोगों के लिए एक महत्वपूर्ण उपकरण बन जाती है।
पीपल डिटेक्शन के अन्य वास्तविक दुनिया के उपयोग मामलों में स्मार्ट शहर, रिटेल एनालिटिक्स, और सार्वजनिक सुरक्षा शामिल हैं। फिर भी, गोपनीयता, सहमति और तकनीक के दुरुपयोग से जुड़े नैतिक विचार मौजूद हैं। विभिन्न डोमेनों में जिम्मेदार परिनियोजन लाभों और नैतिक चिंताओं के बीच संतुलन बनाकर प्राप्त किया जाता है।
इस ट्यूटोरियल में विभिन्न कंप्यूटर विज़न कार्यों के लिए OpenCV लाइब्रेरी के साथ काम करने के बुनियादी पहलुओं को प्रदर्शित किया गया। मूल बातों से शुरू करते हुए, इसमें दिखाया गया कि Python परिवेश में OpenCV कैसे इंस्टॉल करें। इमेज को लोड और डिस्प्ले करने के लिए OpenCV ऑपरेशनों के साथ-साथ इमेज प्रोसेसिंग तकनीकें, जैसे इमेज को ग्रेस्केल में बदलना और एज डिटेक्शन लागू करना, प्रदर्शित की गईं। समग्र रूप से, यह स्पष्ट है कि OpenCV जटिल इमेज ट्रांसफ़ॉर्मेशन और विश्लेषण कर सकता है, जिसमें वीडियो फ़्रेम पर इमेज प्रोसेसिंग तकनीकों का अनुप्रयोग भी शामिल है।
विशेष रूप से, OpenCV एप्लाइड कंप्यूटर विज़न में महत्वपूर्ण भूमिका निभाता है क्योंकि यह बहुमुखी और मज़बूत क्षमताएँ प्रदान करता है, जिससे कंप्यूटर विज़न इंजीनियर और मशीन लर्निंग प्रैक्टिशनर विज़ुअल डेटा प्रोसेसिंग से संबंधित अनेक चुनौतियों का समाधान कर सकते हैं। OpenCV लाइब्रेरी का उपयोग करने का प्रमुख लाभ यह है कि यह कंप्यूटर विज़न एल्गोरिद्म लागू करने की प्रक्रिया को सुव्यवस्थित करता है और एप्लिकेशन कॉन्सेप्ट्स को कुशलतापूर्वक व्यावहारिक इम्प्लीमेंटेशन्स में बदल देता है।
इस लेख में चर्चा की गई अवधारणाओं की समझ को और गहरा करने के लिए एक सुव्यवस्थित कोर्स के ज़रिए Python में इमेज प्रोसेसिंग में डूबें। यह कोर्स Sci-kit Image और Numpy जैसी अतिरिक्त लाइब्रेरी के साथ आपके इमेज प्रोसेसिंग और कंप्यूटर विज़न टूलकिट का विस्तार करता है।
10 लाख+ व्यूज़ वाले मशीन लर्निंग कंटेंट क्रिएटर— कंप्यूटर विज़न इंजीनियर। प्रौद्योगिकी और वित्त पर ज्ञान अर्जित करने और साझा करने में रुचि रखते हैं
आज ही अपनी Python यात्रा शुरू करें!
कोर्स
कोर्स
कोर्स