我试着通过截图来识别屏幕上的一个物体,应用一些基本的过滤器,然后用过滤器应用后的图像减去它的外观。图像相减的结果应该是一个只填充了[0。。。(也就是说所有相减的像素都匹配,对吧?),但当我把数组放到np.任何函数它总是返回True,这意味着数组中的某些内容是不同的。但问题是我一直在打印这些数组进行调试,它们都显示为:
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
怎么回事?这个数组不应该返回False吗?你知道吗
#The problem code
difference = cv2.subtract(mainImg,img)
print(difference)
result = np.any(difference)
如注释所示,不可能知道正确的输出应该是什么,因为当您打印它时,数组的某些元素被抑制。你知道吗
注释中再次建议使用
np.nonzero
仅显示数组的非零元素。您还可以使用np.where
来查找这些元素的索引,这些索引将标识图像中不同的部分。你知道吗不过,我建议您不要使用} 这样的函数来测试这两个图像是否在某个给定的公差范围内,这个公差可以自己选择。你知道吗
np.any
来判断图像是否不同。如果你对图像进行数字滤波和处理,这将引入噪声,通常会导致它们总是不同的。您可能需要使用^{相关问题 更多 >
编程相关推荐