Python: 将二维点云转换为灰度图

Python: Convert 2d point cloud to grayscale image

我有一个可变长度的数组,其中填充了分布在 (0,0) 周围的 2d 坐标点(来自点云),我想将它们转换为 2d 矩阵(= 灰度图像)。

# have
array = [(1.0,1.1),(0.0,0.0),...]
# want
matrix = [[0,100,...],[255,255,...],...]

我如何使用 python 和 numpy

实现此目的

看起来 matplotlib.pyplot.hist2d 就是您要找的。

它基本上将您的数据分箱到二维分箱中(尺寸由您选择)。 here 下面给出了文档和一个工作示例。

import numpy as np
import matplotlib.pyplot as plt
data = [np.random.randn(1000), np.random.randn(1000)]
plt.scatter(data[0], data[1])

然后你可以对你的数据调用hist2d,例如像这样

plt.hist2d(data[0], data[1], bins=20)

请注意,hist2d 的参数是两个一维数组,因此在将数据提供给 hist2d 之前,您必须对我们的数据进行一些整形。

仅使用 numpy 的快速解决方案,无需 matplotlib 和绘图:

import numpy as np
# given a 2dArray "array" and a desired image shape "[x,y]"
matrix = np.histogram2d(array[:,0], array[:,1], bins=[x,y])