簡體   English   中英

我應該如何在 python 中繪制 XYZ 數據點以在 RGB 中創建深度圖像

[英]How should I plot XYZ data points to create a depth image in RGB in python

我正在做一個小項目,在那里我得到了一個 XYZ 數據的二維數組。 這種方式的東西:

a = [[1,7,13,3,4],
     [6,21,32,11,2]]

其中x代表數組的列,y代表數組的行,z代表數組的內容,即距離。 我想要完成的是使用二維數組並在 RGB 中繪制深度圖像。 詳細說明,距離 (z) 值越近,我希望將點繪制為紅色。 隨着距離 (z) 值的增加,我想根據距離的大小將其繪制為黃色、綠色或藍色。

我添加了一個示例圖片以便更好地說明。
深度圖像

我正在嘗試在 python 中完成此操作。 我嘗試研究它,但大多數時候我發現如何從深度圖像或點雲中提取 XYZ 數據,而不是使用 XYZ 數據來繪制深度圖像。

請讓我知道這是否可行,或者有哪些 Python 庫可以實現這一點。

謝謝你。

編輯:我相信注意到二維陣列由測距儀傳感器生成的點雲數據可能會有所幫助。 我希望能夠使用數據點構建掃描區域的靜止二維圖像。 我還想利用顏色圖來可視化圖像的深度。

這是一個使用seaborn的示例:

生成樣本數據:

def func(x, y):
    return np.exp(-x**2-y**2)

xaxis = np.linspace(-1, 1, 100)
yaxis = np.linspace(-1, 1, 200)
result = func(xaxis[:,None], yaxis[None,:])

繪圖:

sns.heatmap(result, cmap=sns.color_palette("Spectral_r", as_cmap=True))
plt.yticks([],[])
plt.xticks([],[])

結果: 在此處輸入圖片說明

類似的東西?

from matplotlib.pylab import plt
a = [[1,7,13,3,4],
     [6,21,32,11,2]]
plt.matshow(a, cmap=plt.cm.viridis)
plt.colorbar()

在此處輸入圖片說明

您可以傳遞大型數組,例如圖像。 在這里,我使用來自 matplotlib 的示例圖像,我剪裁了顏色以獲得 (120, 560) 而不是 (120, 560, 3) 數組並顯示它:

from matplotlib.pylab import plt
from matplotlib.cbook import get_sample_data
fn = get_sample_data("logo2.png", asfileobj=False)
img = plt.imread(fn, format='png')[...,0] #get single color channel
plt.matshow(img,cmap=plt.cm.jet,interpolation='bicubic')#see imshow for more arguments
plt.colorbar()

在此處輸入圖片說明

如果我沒記錯的話 plt.matshow 是 plt.imshow 的子類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM