python:来自ndindex的图像索引
我通过以下代码迭代图像(我还是python初学者): 图像的形状是:(900L、1600L、3L)python:来自ndindex的图像索引,python,python-2.7,numpy,Python,Python 2.7,Numpy,我通过以下代码迭代图像(我还是python初学者): 图像的形状是:(900L、1600L、3L) 除了RGB之外,还有什么方法可以在迭代时获得像素的行和列吗?您的方法很好!如果您还想获得该像素位置的RGB值,可以尝试imRGB[pixel]。但是,只使用两个python循环在轴上迭代会更快。我对这两种方法的计时如下: import numpy as np import time random_data = np.random.random_sample((900, 1600, 3)) imR
除了RGB之外,还有什么方法可以在迭代时获得像素的行和列吗?您的方法很好!如果您还想获得该像素位置的RGB值,可以尝试
imRGB[pixel]
。但是,只使用两个python循环在轴上迭代会更快。我对这两种方法的计时如下:
import numpy as np
import time
random_data = np.random.random_sample((900, 1600, 3))
imRGB = np.round(256 * random_data)
start = time.time()
for pixel in np.ndindex(imRGB.shape[:2]):
x, y = pixel
rgb = imRGB[pixel]
end = time.time()
print(end - start)
start = time.time()
for x in xrange(imRGB.shape[0]):
for y in xrange(imRGB.shape[1]):
x, y, imRGB[x, y]
end = time.time()
print(end - start)
第一种方法在我的笔记本电脑上花费了1.29秒,而第二种方法花费了0.53秒。根据您希望在循环中执行的操作,可能还有其他特定于numpy的操作,这些操作可能比写出循环更快。希望这有帮助 这里的
pixel
是当前两个索引的元组,(0,0)、(0,1)…
。这些可以被描述为像素的(X,Y)。这就是你想要的吗?在问题中,数组是3D的,像素只是给你第三维度,我对第一和第二(行,列)感兴趣你的问题不清楚。
import numpy as np
import time
random_data = np.random.random_sample((900, 1600, 3))
imRGB = np.round(256 * random_data)
start = time.time()
for pixel in np.ndindex(imRGB.shape[:2]):
x, y = pixel
rgb = imRGB[pixel]
end = time.time()
print(end - start)
start = time.time()
for x in xrange(imRGB.shape[0]):
for y in xrange(imRGB.shape[1]):
x, y, imRGB[x, y]
end = time.time()
print(end - start)