Python – извлечение ненулевых пикселей изображения RGBA – ускорение цифровой маскиPython

Программы на Python
Anonymous
Python – извлечение ненулевых пикселей изображения RGBA – ускорение цифровой маски

Сообщение Anonymous »

Мне нужно извлечь ненулевые пиксели из изображения RGBA. Код ниже работает, но поскольку мне приходится иметь дело с действительно огромными изображениями, некоторое ускорение будет полезно. Получение «f_mask» — самая долгая задача. Можно ли как-то ускорить работу? Как быстрее удалить строки со всеми нулевыми значениями ([0, 0, 0, 0])?
import numpy as np
import time

img_size = (10000, 10000)
img = np.zeros((*img_size, 4), float) # Make RGBA image

# Put some values for pixels [float, float, float, int]
img[0][1] = [1.1, 2.2, 3.3, 4]
img[1][0] = [0, 0, 0, 10]
img[1][2] = [6.1, 7.1, 8.1, 0]

def f_img_to_pts(f_img): # Get non-zero rows with values from whole img array
f_shp = f_img.shape
f_newshape = (f_shp[0]*f_shp[1], f_shp[2])
f_pts = np.reshape(f_img, f_newshape)
f_mask = ~np.all(f_pts == 0, axis=1)
f_pts = f_pts[f_mask]
return f_pts

t1 = time.time()
pxs = f_img_to_pts(img)
t2 = time.time()
print('PIXELS EXTRACTING TIME: ', t2 - t1)
print(pxs)


Подробнее здесь: https://stackoverflow.com/questions/787 ... k-speed-up

Вернуться в «Python»