【问题标题】:Using Numpy for a fast list check使用 Numpy 进行快速列表检查
【发布时间】:2019-09-10 09:15:24
【问题描述】:

假设我有一张图像,我想检查它的每个像素以检查它是否符合我的需要。在 Python 中使用“for”需要很多时间,而我在 C++ 中做同样的事情要快得多。

我听说 Numpy 正在用于它,但我不确定如何

基本上:

for x in range(0, width):
    for y in range(0, height):
        if img[x][y][0] > value:
            ...do something...

使用这种简单的 Python 格式,一帧大约需要 5 秒,而 C++ 以毫秒为单位。

【问题讨论】:

    标签: python c++ numpy


    【解决方案1】:

    假设您有一个数组array = np.array([[1,2,3],[4,5,6]]),它是一个可以是图像的 2x3 矩阵。使用 numpy,您可以通过编写 array>threshold 来简单地检查一个值是否超过阈值,这将返回一个具有真假的 2x3 矩阵。您还可以编写array[array>threshold] = some new value,它将数组中超出阈值的所有值设置为特定值

    【讨论】:

    • 甚至使用np.where(condition),如docs.scipy.org/doc/numpy-1.13.0/reference/generated/…中所述
    • 这个问题是'array[array>threshold]' 对所有像素值进行排序并将它们混合在一起。我需要检查每个像素及其三个通道来决定如何处理每个像素。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多