如何根据 numpy 中给定的条件更改特定范围的像素?

问题描述

导入的库:

    %matplotlib inline
    import numpy as np
    from scipy import misc
    import imageio
    import matplotlib.pyplot as plt
    from skimage import data

就像我创建了一个

    low_value_filter= dogs2 < 80

并且做到了:

     dogs2[low_value_filter]=0 

所以图像中像素值小于80的所有像素都变成黑色。 我想将 low_value_filter 添加到图像的右半部分(或实际上是特定范围的像素)而不是整个图像。下面是我所做的一些尝试的图片

This is the image after adding a circular mask Low_value_filter to whole image Attempt 1Attempt 2Attempt 3

编辑:

     center_col= total_cols/2

解决方法

嘿,我找到了解决这个问题的方法。

创建一个与图像形状相同的零数组:

low_value_filter = np.zeros_like(dogs)

选择要添加过滤器的图像范围:

low_value_filter[upper:lower,left:right] = dogs[upper:lower,left:right] < 80 (这将使 low_value_filter 成为与您选择的范围相关的 0 和 1 数组)

现在,只需将过滤器作为 bool 类型的索引范围添加到您的图像中,并将其设置为您想要的任何像素值(在这种情况下我选择了 0)

dogs[low_value_filter.astype(bool)] = 0