2015-01-17 5 views
5

के साथ एक आरजीबी छवि को कैसे देखें I CIFAR-10 प्रारूप में 32x32 पिक्सेल आरजीबी छवि को देखने का प्रयास कर रहा हूं। यह एक numpy सरणी है जहां पिक्सेल मान (uint8) निम्नानुसार व्यवस्थित होते हैं: "पहले 1024 बाइट लाल चैनल मान हैं, अगले 1024 हरे रंग और अंतिम 1024 नीले रंग हैं। मान पंक्ति-प्रमुख क्रम में संग्रहीत होते हैं, तो पहले 32 बाइट छवि की पहली पंक्ति के लाल चैनल मान हैं। "पिलैब

इस प्रकार, मूल छवि आकार है:

numpy.shape(image) 
(3072L,) 

मैं इस तरह यह नयी आकृति प्रदान:

im = numpy.reshape(image, (32,32,3)) 

हालांकि, जब मैं

imshow(im) 
IPython कंसोल में

कोशिश, मैं देख रहा हूँ मूल छवि के 3 से 3 टाइल्स: enter image description here

मुझे इसके बजाय कार की एक छवि देखने की उम्मीद है। मैंने this question देखा, लेकिन मुझे यकीन नहीं है कि वे वहां क्या कर रहे हैं, और यदि यह मेरी स्थिति के लिए प्रासंगिक है।

उत्तर

8

ऑर्डर बदलने का प्रयास करें। डिफ़ॉल्ट रूप से, यह सी-संगत (जो वास्तव में row-major है) है, लेकिन matplotlib के लिए, आप लाल चैनल मान [:,:,0] में चाहते हैं। इसका मतलब है कि आपको उस डेटा को फोरट्रान क्रम में पढ़ना चाहिए ताकि वह पहले "कॉलम" भर सके (इस 3 डी संदर्भ में)।

im = numpy.reshape(c, (32,32,3), order='F') 
12

मुझे पता है कि सवाल पोस्ट होने के बाद से कुछ समय हो गया है लेकिन मैं ओलिवर के जवाब को सही करना चाहता हूं। यदि आप फोरट्रान द्वारा ऑर्डर करते हैं, तो छवि 90 डिग्री सीसीडब्लू द्वारा उलटा और घुमाया जाता है।

यदि आप अपनी सभी छवियों को इस तरह प्रारूपित करते हैं तो भी आप इस डेटा पर पाठ्यक्रम कर सकते हैं। लेकिन पागल जा रहा से रोकने के लिए, आपको क्या करना चाहिए निम्नलिखित:

im = c.reshape(3,32,32).transpose(1,2,0) 

क्या आप कर रहे हैं पहले डिफ़ॉल्ट स्वरूप है जो आप अन्य में पंक्तियों और स्तंभों पहले आयाम में आरजीबी हो जाता है और उसके बाद का उपयोग कर मैट्रिक्स देगी है दो आयाम फिर आप आयामों को घुमा रहे हैं ताकि मूल में पहला आयाम (आरजीबी, 0 पर अनुक्रमित) को तीसरे आयाम पर स्विच किया गया हो और दूसरा और तीसरा आयाम प्रत्येक 1.

आशा करता है कि इससे मदद मिली।

+0

धन्यवाद। ओपनसीवी में 'आईएम' छवि को साजिश करने के लिए आपको आर और बी कॉलम को स्वैप करना चाहिए। 'cv2.imshow (" छवि ", cv2.resize (cv2.cvtcolor (im, cv2.COLOR_BGR2RGB), (512,512), इंटरपोलेशन = cv2.INTER_AREA))' – Ruut

संबंधित मुद्दे