【问题标题】:Improve array extraction speed using OpenCV and NumPy使用 OpenCV 和 NumPy 提高数组提取速度
【发布时间】:2018-10-10 06:23:51
【问题描述】:

我正在尝试以以下格式提取 RGBA 矩阵的 Alpha 通道:

[                      [
 [                      [
  [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 秒。我需要它比那个少。

谢谢!

【问题讨论】:

  • ..a[...,None]?
  • @Divakar 哇,这真的很完美!你能简单地向我解释一下为什么会这样吗?
  • stackoverflow.com/a/40383002 和下面的 cmets。

标签: python arrays performance numpy opencv


【解决方案1】:

只需重塑它!

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

通过简单的元数据更改应该会给您同样的效果。

【讨论】:

    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 2015-03-11
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2022-06-30
    • 1970-01-01
    相关资源
    最近更新 更多