2017-09-11 7 views
-1

デプス値付きnumpy配列[i,j]があります。配列内の各セルについて、あらかじめ定義された色を割り当てたいと思います。私は現在、np.vectorizeと多くのif - 文でそれをしています。私は今、例えば(245,223,247)のような必要なものを作ることができます。numpy 3タプル配列からRGB画像

新しいnumpy配列を作成し、その配列を.png -imageとしてエクスポートできますか?

これは私が持っている配列です。

[[r,g,b],[r,g,b],[r,g,b],[r,g,b] 
[r,g,b],[r,g,b],[r,g,b],[r,g,b] 
[r,g,b],[r,g,b],[r,g,b],[r,g,b] 
[r,g,b],[r,g,b],[r,g,b],[r,g,b]] 

そして私は.pngの画像の中にそれを翻訳したいです。

編集: This Gistテキストに出力depth -array、一例です。 Pythonで表示するには大きすぎます。また、rgb-colorを作成するために、すべてのセルに適用したい機能を示しています。

これはグレースケールのサンプル画像です。上記の単位に基づきます。 enter image description here

+0

イメージを作成し、 '(245,223,247)'色で塗りつぶしますか? –

+0

各ピクセルをカラー化し、実際にエクスポートします。 –

+0

深度値はどのように保存されていますか?小さな実例を示してください。 – Joe

答えて

0

私は最も単純な(そして最も公正な)ソリューションはカラーマップを使用することだと思います。例では、あなたの目的に合わせなければならないカスタム(しかし、非常に些細なグレースケール)カラーマップを、含まれていることを

enter image description here

注:たとえば、次のよう

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import colors 

N   = 256 
cols  = np.zeros((N,4)) 
cols[:,0] = np.linspace(0,1,N) # R 
cols[:,1] = np.linspace(0,1,N) # G 
cols[:,2] = np.linspace(0,1,N) # B 
cols[:,3] = 1     # alpha 
cmap  = colors.ListedColormap(cols,name='MyColormap',N=N) 

x,y = np.meshgrid(np.linspace(0,1,100),np.linspace(0,1,100)) 
d = np.sqrt(x**2+y**2) 

fig,ax = plt.subplots() 

cax = ax.imshow(d,cmap=cmap,clim=[0,np.sqrt(2.)]) 

cbar = fig.colorbar(cax,aspect=10) 

ax.xaxis.set_ticks(range(0,101,20)) 
ax.yaxis.set_ticks(range(0,101,20)) 

plt.xlim([0,100]) 
plt.ylim([0,100]) 

plt.xlabel(r'$x$') 
plt.ylabel(r'$y$') 

plt.savefig('so.png') 

この結果はあります。また、あなたは色の離散集合をしたい場合、あなたは、単にあなたのデータに(この場合はd)のしきい値を適用することができますthe matplotlib documentation

を参照して、事前に定義されたもの(例えばcmap='afmhot'による)を使用することができます。

あなたの質問は、これをあなたの例に特化するにはあまりにも広すぎました。私たちがあなたを助けるためには、より簡潔に言い換えれば、あなたが意味するものを定式化する必要があります。しかし、ここから独立して進めることができると確信しています。

+0

matplotlibには独自の[colormap]を作成する機能もあります(http://matplotlib.org/api/colors_api.html#matplotlib.colors.from_levels_and_colors) –

+0

@MaartenFabréこれはこの回答の重要な部分です。私は例を含めるために私の答えを編集しました。 –

関連する問題