【问题标题】:Faster way to calculate pixel intensity(color value) without iterating through all the pixels in image无需遍历图像中的所有像素即可更快地计算像素强度(颜色值)
【发布时间】:2019-03-12 03:10:36
【问题描述】:

我正在执行一个操作,如果像素值 >0,我必须计算所有像素强度的总和。目前,我正在遍历每个像素,这比较慢。谁能建议一种更快的方法来改进我的代码?

h, w = image.shape[:]
total_intensity = 0
for x in range(h):
    for y in range(w):
        if (image[x][y] > 0):
            total_intensity += image[x][y]

【问题讨论】:

    标签: python opencv image-processing


    【解决方案1】:

    如果图像是一个 numpy 数组,你可以这样做:

    total_intensity = image[image > 0].sum()
    

    如果你有一个非常大的图像,你应该担心总和的溢出问题,所以我强烈建议先投射图像

    image = np.int64(image)
    

    【讨论】:

    • @snehipachchigar:如果此答案对您有用,您应该单击答案左侧投票计数下方的复选标记,而不是评论“谢谢”。见here。这就是说谢谢的方式。
    【解决方案2】:

    你可以这样做:

    total_intensity = sum(sum(filter(lambda i: i > 0, image[j])) for j in image)

    你的最低强度条件为 0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多