如何从numpy的2D图像矩阵生成所有(x,y,像素值)元组的列表?

时间:2016-06-29 03:50:16

标签: python opencv numpy scipy

使用python并且可能是numpy,如何使用(x,y,pixelValue(x,y))格式生成所有坐标的列表?我可以使用以下内容实现for循环:

img = cv2.imread('messi5.jpg',0)

data = []

for x in range(img.shape[1]):
    for y in range(img.shape[0]):
        data.append((x, y, data[x, y]))

但是当我的图像包含大约400万像素时,这样做需要相当长的时间。谢谢!

1 个答案:

答案 0 :(得分:2)

numpy.ndenumerate将立即创建一个生成器。如果你真的需要(???)到。

,你可以将它转换成一个列表
>>> np.ndenumerate(np.eye(2))
<numpy.lib.index_tricks.ndenumerate at 0x20d485f8>

>>>for elem in np.ndenumerate(np.eye(2)):
...    print elem
...
((0L, 0L), 1.0)
((0L, 1L), 0.0)
((1L, 0L), 0.0)
((1L, 1L), 1.0)

>>>list(np.ndenumerate(np.eye(2)))
[((0L, 0L), 1.0), ((0L, 1L), 0.0), ((1L, 0L), 0.0), ((1L, 1L), 1.0)]