我嘗試處理許多圖像表示爲NumPy數組,但它需要很長時間。這就是我嘗試做我如何加快與Python中的NumPy數組的操作2.7
# image is a list with images
max = np.amax(image[k])# k is current image index in loop
# here i try to normalize SHORT color to BYTE color and make it fill all range from 0 to 255
# in images max color value is like 30000 min is usually 0
i = 0
while i < len(image[k]):
j = 0
while j < len(image[k][i]):
image[k][i][j] = float(image[k][i][j])/(max) * 255
j += 1
i += 1
如果我只看過圖片(共170(圖片512×512是)),而它需要大約7秒,如果我這樣做正常化需要20分鐘。這一切都在代碼中。在這裏,我試圖讓我的圖像着色
maskLoot1=np.zeros([len(mask1), 3*len(mask1[0])])
for i in range(len(mask1)):
for j in range(len(mask1[0])):
maskLoot1[i][j*3]=mask1[i][j]
maskLoot1[i][j*3+1]=mask1[i][j]
maskLoot1[i][j*3+2]=mask1[i][j]
接着我嘗試用彩色那些來替換選定的區域中的像素,例如120(灰色) - >(255 40 0)在RGB模型。
for i in range(len(mask1)):
for j in range(len(mask1[0])):
#mask is NumPy array with selected pixel painted in white (255)
if (mask[i][j] > 250):
maskLoot1[i][j * 3] = lootScheme[mask1[i][j]][1] #red chanel
maskLoot1[i][j * 3+1] = lootScheme[mask1[i][j]][2] #green chanel
maskLoot1[i][j * 3+2] = lootScheme[mask1[i][j]][3] #bluechanel
而且它也需要很多時間,而不是20分鐘,但長期以來讓我的腳本滯後。認爲這僅僅是我在數組上的很多操作中的2個,而如果是第二種情況,我們可以爲別人使用一些bultin函數是不太可能的。那麼有沒有辦法加快我的節奏?
'image [k] = image [k]/max * 255'? – furas
@furas對於這種情況是的,但我也在試圖做下一步:我有一個座標列表(x,y)代表所選區域,我嘗試用有色區域代替它們,例如120(灰色) - >(255 40 0)in rgb model。我編輯了一個問題。 – tttaaabbb
@tttaaabbb將您的問題逐個填寫,不要將這3-4個問題合併爲一個問答。我沒有看到這些問題之間的關係,以證明他們被放在一個地方。 – Divakar