我是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 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给了我一个不同的结果。 请帮助我确定问题。
这是一个完美的示例想法-
答案 0 :(得分:0)
如下使用opencv的inrange函数:
mask = cv2.inRange(image, lower_range, upper_range)
我了解您要查找特定的像素,因此请相应调整范围。 以我的经验,无论使用哪种像素,您都将尝试完成更好的任务,这将是有益的。但是以后要取决于你。