में गहराई रंग के आधार पर जुड़े क्षेत्र को कैसे विभाजित करना है मेरे पास जैसी एक तस्वीर है, जिसे मुझे तस्वीर को 8 ब्लॉक में विभाजित करने की आवश्यकता है।ओपनसीवी
के बाद इस सीमा विधि
img_gray = cv2.imread(input_file,cv2.IMREAD_GRAYSCALE)
ret,thresh = cv2.threshold(img_gray,254,255,cv2.THRESH_BINARY) =
kernel = np.array(cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3), (-1, -1)))
img_open = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
cv2.imshow('abc',img_open)
ret1,thresh1 = cv2.threshold(img_open,254,255,cv2.THRESH_BINARY_INV) #
contours, hierarchy = cv2.findContours(thresh1, cv2.RETR_CCOMP ,cv2.CHAIN_APPROX_NONE)
for i in range(len(contours)):
if len(contours[i]) > 20:
x, y, w, h = cv2.boundingRect(contours[i])
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
print (x, y),(x+w, y+h)
की कोशिश की है अंतिम परिणाम कुछ एक साथ जुड़े ब्लॉकों एक बड़ा हिस्सा है, जो नहीं है कि मैं क्या आशा व्यक्त की में गठित कर रहे हैं। किसी भी अन्य तरीकों से चारों ओर
मैं ओपनसीवी से परिचित नहीं हूं, लेकिन मुझे लगता है कि समस्या इस तथ्य में निहित है कि आप बाइनरी थ्रेसहोल्ड कर रहे हैं, या तो यह है या नहीं। लेकिन आपको आवश्यक परिणाम ट्रिनरी हैं - दोनों पंक्तियां और फिर पृष्ठभूमि। 'Cv2.THRESH_BINARY' का उपयोग करने के बजाय पृष्ठभूमि को छोड़ने के लिए 'cv2.THRESH_TRUNC'' का प्रयास करें, और उसके बाद लाइटर की पिछली पंक्ति को हल्का पिछला पंक्ति से अलग करने के लिए बाइनरी तुलना करें। अंत में दोनों के लिए समोच्चों को पुनः प्राप्त करें, उन्हें गठबंधन करें, और आपको सिद्धांत में 8 क्षेत्रों के साथ समाप्त होना चाहिए। – Enfyve
क्या आपने स्थान + गहराई के आधार पर अर्थोत्तर विभाजन की कोशिश की है? – Shai
@Shai मैं अर्थात् विभाजन से देखता हूं – user824624