2014-09-02 9 views
6

मैं अजगर का उपयोग कर opencv जानने की कोशिश कर और नीचे इस कोड में आए हूँ:Matplotlib: imshow में cmap का कार्य क्या है?

import cv2 
import numpy as np 
from matplotlib import pyplot as plt 

BLUE = [255,0,0] 

img1 = cv2.imread('opencv_logo.png') 
replicate = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE) 
reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT) 
reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101) 
wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP) 
constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE) 

plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL') 
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE') 
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT') 

plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101') 
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP') 
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT') 

plt.show() 

स्रोत: http://docs.opencv.org/master/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#exercises

क्या plt.imshow (img1, 'ग्रे') क्या करता है? मैंने Google को खोजने का प्रयास किया और मैं समझ सकता था कि 'ग्रे' तर्क रंग का नक्शा था। लेकिन मेरी छवि (तस्वीर साइट पर है। लिंक देखें) ग्रेस्केल में प्रदर्शित नहीं है। मैंने दूसरे तर्क को हटाने की कोशिश की। तो कोड plt.imshow (img1) की तरह था। यह निष्पादित करता है। छवि पहले की तरह ही बनी हुई है। फिर दूसरा तर्क 'ग्रे' क्या करता है? क्या कोई यह सब मुझे समझा सकता है? किसी भी मदद की सराहना की। धन्यवाद।

पीएस। मैं पूरी तरह

उत्तर

9

matplotlib को img1 आकार (M,N,3) या (M,N,4), img1 में मानों RGB या RGBA मान के रूप में व्याख्या कर रहे हैं जब नए हूँ। इस मामले में cmap को नजरअंदाज कर दिया जाता है। the help(plt.imshow) docstring प्रति:

CMAP: ~matplotlib.colors.Colormap, वैकल्पिक, डिफ़ॉल्ट: कोई नहीं

कोई नहीं, डिफ़ॉल्ट image.cmap मूल्य आरसी को है। cmap नजरअंदाज कर दिया है X आरजीबी (ए) जानकारी

है जब हालांकि, अगर img आकार (M,N) की एक सरणी थे, तो CMAP मूल्यों को प्रदर्शित करने के लिए इस्तेमाल रंग मैप नियंत्रित करता है।


import numpy as np 
import matplotlib.pyplot as plt 
import mpl_toolkits.axes_grid1 as axes_grid1 
np.random.seed(1) 

data = np.random.randn(10, 10) 

fig = plt.figure() 
grid = axes_grid1.AxesGrid(
    fig, 111, nrows_ncols=(1, 2), axes_pad = 0.5, cbar_location = "right", 
    cbar_mode="each", cbar_size="15%", cbar_pad="5%",) 

im0 = grid[0].imshow(data, cmap='gray', interpolation='nearest') 
grid.cbar_axes[0].colorbar(im0) 

im1 = grid[1].imshow(data, cmap='jet', interpolation='nearest') 
grid.cbar_axes[1].colorbar(im1) 
plt.savefig('/tmp/test.png', bbox_inches='tight', pad_inches=0.0, dpi=200,) 

enter image description here

+0

धन्यवाद। क्या आप समझा सकते हैं कि किस सेमीपैम का उपयोग किया जाता है? हम रंगीन मानचित्रों का उपयोग क्यों करते हैं? – Clive

+1

कोलोरैप एक शब्दकोश है जो रंगों के लिए मानचित्रों को मानचित्र करता है। Matplotlib कई [अंतर्निर्मित colormaps] प्रदान करता है (http://wiki.scipy.org/Cookbook/Matplotlib/Show_colormaps)। जब आपके पास 2 डी सरणी होती है, जैसे उपरोक्त 'डेटा', प्रत्येक ग्रिड बिंदु पर मान 0 और 1 के बीच एक फ्लोट होता है। 'ग्रे' रंगमंच मानचित्र 0 से काले और 1 से सफेद होते हैं। 'जेट' colormap नक्शे 0 नीले और 1 से लाल। बीच के रंगों के दृश्य प्रदर्शन के लिए लिंक देखें। – unutbu

+0

आपको बहुत धन्यवाद – Clive

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