Python 3.x 使用np.isin和np.where[issue]进行快速像素处理
我是python和图像处理的新手。我正在尝试使用np.isin和np.where(我希望避免在所有像素上嵌套循环)在输入图像中查找给定RGB值的列表。 这里是输入和输出 输入: 输出: 我正在使用以下代码-Python 3.x 使用np.isin和np.where[issue]进行快速像素处理,python-3.x,numpy,opencv,Python 3.x,Numpy,Opencv,我是python和图像处理的新手。我正在尝试使用np.isin和np.where(我希望避免在所有像素上嵌套循环)在输入图像中查找给定RGB值的列表。 这里是输入和输出 输入: 输出: 我正在使用以下代码- fliterlist = [ [244,240,255], [253,239,255], [255,234,249], [255,230,245], [255,229,243], [255,228,242] ] # actual list ha
fliterlist = [
[244,240,255],
[253,239,255],
[255,234,249],
[255,230,245],
[255,229,243],
[255,228,242]
]
# actual list has more than 100 elements
def imageTest(img,count=0):
outImg = np.zeros(img.shape,dtype=np.uint8)
posArray=(np.isin(img,bb)).all(axis=2)
outImg[np.where(posArray)] = [255,255,255]
outname = './fast/imageTest_'+str(count)+'.jpg'
outputlist[outname]=outImg
return
由于某些原因,我没有得到预期的输出。我的意思是,如果我使用双嵌套循环来迭代所有像素,我会得到想要的结果。但这里看起来np.isin给了我一个不同的数组。
请帮我找出问题所在
下面是一个非常有效的示例想法-
image-使用opencv的inrange函数,如下所示:
mask = cv2.inRange(image, lower_range, upper_range)
我知道你想找到一个特定的像素,所以相应地调整范围。
根据我的经验,无论你想完成什么任务,最好使用一系列像素,这样会很有好处。但以后由您决定。使用opencv的inrange函数,如下所示:
mask = cv2.inRange(image, lower_range, upper_range)
我知道你想找到一个特定的像素,所以相应地调整范围。
根据我的经验,无论你想完成什么任务,最好使用一系列像素,这样会很有好处。但以后由您决定。您能具体说明您想做什么吗?我能理解的是,你正在尝试设置一个图像的阈值。假设有一个图像。我需要找出其中的特定RGB值。例如,假设我正在查找值为[255,0,0]的所有像素。因此,输出图像基本上是黑色图像,只有标记为[255255]的像素。这有帮助吗?你能具体说明你想做什么吗?我能理解的是,你正在尝试设置一个图像的阈值。假设有一个图像。我需要找出其中的特定RGB值。例如,假设我正在查找值为[255,0,0]的所有像素。因此,输出图像基本上是黑色图像,只有标记为[255255]的像素。有帮助吗?