2014-06-09 2 views
5

मैं पायथन में ग्रेस्केल ओपनसीवी छवि में numpy सरणी कैसे बदल सकता हूं? कुछ प्रसंस्करण के बाद मुझे निम्नलिखित एट्रिब्यूट्स के साथ एक सरणी मिली: अधिकतम मान है: 0.9 99 99 99 9988, न्यूनतम मूल्य 8.269656407e-08 है और टाइप है: <type 'numpy.ndarray'>। मैं एक छवि cv2.imshow() समारोह का उपयोग कर के रूप में यह दिखा सकते हैं, लेकिन मैं इसे cv2.AdaptiveTreshold() समारोह में पारित नहीं हो सकता, क्योंकि यह गलत प्रकार है:ग्रेस्केले ओपनसीवी छवि में numpy array को कैसे बदलें

error: (-215) src.type() == CV_8UC1 in function cv::adaptiveThreshold 

मैं कैसे प्रारूप सही करने के लिए इस np.array परिवर्तित कर सकते हैं?

उत्तर

9

दावा के अनुसार, adaptiveThreshold() को एकल-चैनल वाली 8-बिट छवि की आवश्यकता होती है।

मानते हुए अपने फ्लोटिंग प्वाइंट छवि 0 से 1, जिस स्थिति प्रतीत होता है के बीच है, तो आप 255 से गुणा और np.uint8 कास्ट कर छवि परिवर्तित कर सकते हैं:

float_img = np.random.random((4,4)) 
im = np.array(float_img * 255, dtype = np.uint8) 
threshed = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 0)