Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन के साथ ओपनसीवी का उपयोग करके एक विशिष्ट रंग (यहां नीला) का पता लगाना?

कई लोगों के लिए, इमेज प्रोसेसिंग एक डरावना और कठिन काम लग सकता है लेकिन यह उतना कठिन नहीं है जितना कि कई लोगों ने सोचा था। इस ट्यूटोरियल में हम python के साथ openCv में बेसिक कलर डिटेक्शन कर रहे हैं।

कंप्यूटर पर रंग कैसे काम करता है?

हम कंप्यूटर पर कलर-स्पेस या कलर मॉडल द्वारा रंगों का प्रतिनिधित्व करते हैं जो मूल रूप से रंगों की श्रेणी को संख्याओं के टुपल्स के रूप में वर्णित करता है।

प्रत्येक रंग के लिए जाने के बजाय, हम सबसे आम रंग-स्थान पर चर्चा करेंगे जिसका हम उपयोग करते हैं। आरजीबी (लाल, हरा, नीला) और एचएसवी (ह्यू, संतृप्ति, मान)।

आरजीबी मूल रूप से रंग को तीन घटकों के टपल के रूप में वर्णित करता है। प्रत्येक घटक 0 और 255 के बीच मान ले सकता है, जहां टपल (0, 0, 0) काले रंग का प्रतिनिधित्व करता है और (255, 255, 255) सफेद का प्रतिनिधित्व करता है। उदाहरण के लिए, अगर हम स्क्रीन पर एक शुद्ध नीला पिक्सेल दिखाना चाहते हैं, तो R मान 0 होगा, G मान 0 होगा और B मान 255 होगा।

RGB में रंगों के कुछ और उदाहरण नीचे दिए गए हैं:

रंग RGB मान
लाल 255, 0, 0
ऑरेंज 255, 128, 0
गुलाबी 255, 153, 255

HSV के साथ, एक पिक्सेल को 3 मापदंडों द्वारा भी दर्शाया जाता है, लेकिन इसके बजाय यह ह्यू, संतृप्ति और मान है। हालांकि, आरजीबी के विपरीत, एचएसवी एक पिक्सेल का प्रतिनिधित्व करने के लिए प्राथमिक रंग का उपयोग नहीं करता है। इसके बजाय, यह रंग का उपयोग करता है, जो कि पिक्सेल का रंग या छाया है।

संतृप्ति रंग की तीव्रता है, जहां 0 की संतृप्ति 0 का प्रतिनिधित्व करती है और 255 की संतृप्ति अधिकतम तीव्रता है। मान बताएगा कि रंग कितना उज्ज्वल या गहरा है।

सही रंग का पता लगाना

तो चलिए सबसे पहले उस इमेज को डाउनलोड करते हैं जिसके साथ हम काम करेंगे,

पायथन के साथ ओपनसीवी का उपयोग करके एक विशिष्ट रंग (यहां नीला) का पता लगाना?

अब जब हमें रंगों की छवि मिल गई है, तो हम मज़ेदार भाग शुरू कर सकते हैं। बस अपना पसंदीदा पायथन टेक्स्ट एडिटर या आईडीई खोलें और चलिए शुरू करते हैं।

import cv2
import numpy as np
import imutils
img = cv2.imread('color2.jpg')

कोड की उपरोक्त पंक्ति में, पहली दो पंक्तियाँ सभी आयातों को संभालती हैं। तीसरी पंक्ति में, मैं इम्यूटिल्स मॉड्यूल आयात कर रहा हूं, जो छवियों का आकार बदलने और रंगों की सीमा खोजने में मदद करता है। पंक्ति 4 में हमने चित्र को खोल दिया है।

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

अब हमने इमेज को hsv इमेज में बदल दिया है क्योंकि hsv तीव्रता को रंग से अलग करने में मदद करता है।

lower_range = np.array([110,50,50])
upper_range = np.array([130,255,255])

अब हम नीले रंग की ऊपरी और निचली सीमा को परिभाषित करते हैं जिसका हम पता लगाना चाहते हैं। इन सीमाओं को खोजने के लिए हम imutils लाइब्रेरी में रेंज-डिटेक्टर स्क्रिप्ट का उपयोग कर सकते हैं। हम इन मानों को एक NumPy सरणी में रखते हैं।

mask = cv2.inRange(hsv, lower_range, upper_range)

यहां हम वास्तव में निर्दिष्ट नीले रंग के साथ एक मुखौटा बना रहे हैं। मुखौटा केवल छवि के एक विशिष्ट भाग का प्रतिनिधित्व करता है। इस मामले में, हम hsv छवि के माध्यम से जाँच कर रहे हैं, और उन रंगों की जाँच कर रहे हैं जो निम्न-श्रेणी और ऊपरी-श्रेणी के बीच हैं। मेल खाने वाले क्षेत्र एक छवि को मुखौटा चर पर सेट करेंगे।

cv2.imshow('image', img)
cv2.imshow('mask', mask)

while(True):
   k = cv2.waitKey(5) & 0xFF
   if k == 27:
      break

cv2.destroyAllWindows()

अंत में, हम अंतर देखने के लिए मूल और मुखौटा छवि को साथ-साथ दिखा सकते हैं। यदि आप यह समझना चाहते हैं कि कोड में 0xFF का क्या अर्थ है, तो इसे पढ़ें। कोड तब उपयोगकर्ता के 'Esc' बटन को हिट करने की प्रतीक्षा करता है जो इसे छोड़ देगा और सफाई के लिए सभी विंडो को नष्ट कर देगा।

अंतिम कार्यक्रम

import cv2
import numpy as np
import imutils

img = cv2.imread('color2.jpg')

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_range = np.array([110,50,50])
upper_range = np.array([130,255,255])

mask = cv2.inRange(hsv, lower_range, upper_range)

cv2.imshow('image', img)
cv2.imshow('mask', mask)

while(True):
   k = cv2.waitKey(5) & 0xFF
   if k == 27:
      break

cv2.destroyAllWindows()

आउटपुट

पायथन के साथ ओपनसीवी का उपयोग करके एक विशिष्ट रंग (यहां नीला) का पता लगाना?

ऊपर, हम देखते हैं कि मुखौटे में काले धब्बे के जोड़े हैं, वह है शोर।


  1. पायथन ओपनसीवी मॉड्यूल का उपयोग करके छवियों पर ज्यामितीय आकार बनाएं

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

  1. पायथन में टिंकर का उपयोग करके रंग खेल

    जीयूआई अनुप्रयोगों के विकास के लिए टिंकर बहुत लोकप्रिय और आसान है। tkinter का उपयोग करके आसानी से GUI गेम विकसित करें। यहां भी हम कलर गेम विकसित करने की कोशिश कर रहे हैं। इस गेम में खिलाड़ी को स्क्रीन पर दिखाई देने वाले शब्द का रंग दर्ज करना होता है और इसलिए स्कोर एक से बढ़ जाता है, इस गेम को खेलने

  1. Python OpenCv का उपयोग करके रिवर्स मोड में एक वीडियो चलाएं

    ओपनसीवी का फुल फॉर्म ओपन सोर्स कंप्यूटर विज़न है, इस लाइब्रेरी का उपयोग करके हम इमेज, वीडियो पर अलग-अलग ऑपरेशन कर सकते हैं। OpenCV के अनुप्रयोग क्षेत्र चेहरे की पहचान प्रणाली मोशन ट्रैकिंग कृत्रिम तंत्रिका नेटवर्क डीप न्यूरल नेटवर्क वीडियो स्ट्रीमिंग वगैरह. विंडोज़ पर इंस्टाल करने के लिए हम इस कम