Увеличьте скорость извлечения массива, используя OpenCV и NumPy - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь извлечь альфа-канал матрицы RGBA в следующем формате:

[                      [
 [                      [
  [1, 2, 3, 4],   to     [4],
  [5, 6, 7, 8]   ====>   [8]
 ]                      ]
]                      ]

Я хотел знать, можно ли улучшить имеющийся у меня код с точки зрения скорости:

import numpy
import cv2

image = np.full((10, 10, 4), 0, numpy.uint8)

r, g, b, a = cv2.split(image)

rgb = cv2.merge((r, g, b))
alpha = np.array([np.vstack(e).tolist() for e in a])  # Can this be faster?

При больших матрицах выполнение последней строки может занять более 0,1 с. Мне нужно, чтобы оно было меньше этого.

Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2018

Просто измените его!

a.reshape((sizeX, sizeY, 1))

Это должно дать вам тот же эффект с простым изменением метаданных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...