2014-09-02 20 views
6

:Matplotlib: imma gösterisinde cmap işlevi nedir? Aşağıda bu kod karşısında piton kullanarak OpenCV öğrenmeye çalışıyorum ve geldi ediyorum

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() 

kaynak: http://docs.opencv.org/master/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#exercises

plt.imshow (img1, 'gri') ne işe yarar? Google'da arama yapmayı denedim ve anlayabildiğim tek şey, 'gri' argümanın bir Renk haritası olmasıydı. Ama benim resmim (pic sitede var. Linke bakınız) gri tonlarında görüntülenmiyor. İkinci tartışmayı kaldırmayı denedim. Yani kod plt.imshow (img1) gibiydi. Yürütür. Görüntü önceki gibi aynı kalır. O zaman ikinci argüman 'gri' ne yapar? Birisi bana tüm bunları açıklayabilir mi? Herhangi bir yardım takdir edildi. Teşekkürler.

PS. Ben img1(M,N,3) veya (M,N,4), img1 değerler RGB veya RGBA değerleri olarak yorumlanır şekil varsa

cevap

9

Matplotlib tamamen yeniyim. Bu durumda cmap göz ardı edilir. the help(plt.imshow) docstring başına:

CMAP: ~matplotlib.colors.Colormap, isteğe bağlı, varsayılan: Yok

Yok, varsayılan image.cmap değer rc durumunda. X Ancak RGB (A), bilgi

olduğunda img şekil (M,N) bir dizi olsaydı cmap, göz ardı edilir, daha sonra CMAP değerleri görüntülemek için kullanılan renk haritası kontrol eder.


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

teşekkürler. Cmap'in ne için kullanıldığını açıklar mısınız? Neden renk haritalarını kullanıyoruz? – Clive

+1

Colormap, sayıları renklerle eşleyen bir sözlüktür. Matplotlib birçok [yerleşik renk haritası] sağlar (http://wiki.scipy.org/Cookbook/Matplotlib/Show_colormaps). Yukarıdaki "veri" gibi bir 2D diziniz olduğunda, her bir ızgara noktasındaki değerler 0 ile 1 arasında bir kayan noktadır. "Gri" renk haritası, 0 ile siyah arasında ve 1 ile beyaz arasında eşleşir. Jetma colormap 0'ı maviye ve 1'den kırmızıya eşler. Aradaki renklerin görsel bir gösterimi için bağlantıya bakın. – unutbu

+0

Çok teşekkürler – Clive

İlgili konular