python - पायथन-ओपनसीवी में `cv2.inRange` का उपयोग करके दो अलग-अलग रंगों का पता कैसे लगाएं?




opencv (2)

जैसा कि आपको color एस के दो मास्क cv2.bitwise_or , तो अंतिम मास्क प्राप्त करने के लिए cv2.bitwise_or का उपयोग करें।

import cv2

## Read
img = cv2.imread("sunflower.jpg")

## convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

## mask of green (36,0,0) ~ (70, 255,255)
mask1 = cv2.inRange(hsv, (36, 0, 0), (70, 255,255))

## mask o yellow (15,0,0) ~ (36, 255, 255)
mask2 = cv2.inRange(hsv, (15,0,0), (36, 255, 255))

## final mask and masked
mask = cv2.bitwise_or(mask1, mask2)
target = cv2.bitwise_and(img,img, mask=mask)

cv2.imwrite("target.png", target)

स्रोत:

हरे और पीले रंग का पता लगाएं (रेंज उतना सटीक नहीं है):

BTW, अधिक सटीक सीमा प्राप्त करने के लिए, मेरे संबंधित उत्तर में एक संदर्भ मानचित्र है:

कैसे एक छवि में केवल हरे रंग की वस्तुओं का पता लगाने के लिए एक दहलीज मूल्य को परिभाषित करें: Opencv

मैं दो अलग-अलग रंगों की "निचली" और "ऊपरी" श्रेणी को कैसे परिभाषित कर सकता हूं, जैसे कि लाल और नीला (क्योंकि लाल और नीला एचएसवी रंग में एक दूसरे के बगल में नहीं हैं)

यह एक लाल रंग का है:

lower_red = np.array([160,20,70])
upper_red = np.array([190,255,255])

और यह नीला रंग का है:

lower_blue = np.array([101,50,38])
upper_blue = np.array([110,255,255])

मैंने उन्हें शर्त का उपयोग करके संयोजित करने का प्रयास किया या अपना स्वयं का फ़ंक्शन बनाया लेकिन काम नहीं किया, क्या आप लोग मुझे इसका समाधान दिखा सकते हैं?

पी / एस: पायथन में ओपनसीवी


नीचे की छवि एचएसवी कलर स्पेस दिखाती है, जो ह्यू, संतृप्ति और मूल्य (या लपट) का उपयोग करके काम करती है।

एचएसवी रंग की जगह में काम करते समय यह याद रखना महत्वपूर्ण है और रेड एंड ग्रीन जैसी अवधारणाएं एक अलग डेटा प्रकार में रूपांतरण का एक प्रकार है।

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

या तो दो अलग छोरों को चलाने के लिए, पहला लाल को दहलीज करने के लिए, और दूसरा आपके नीले रंग को दहलीज पर लाने के लिए और फिर OpenCV ब्लेंड फ़ंक्शन का उपयोग करके दो छवियों को एक साथ मिलाएं। दो रंग रिक्त स्थान सम्मिश्रण के लिए here देखें।







opencv