我目前正计划训练一个二值图像分类模型。我要训练的图像是两张原始图片之间的差异。换句话说,对于每个数据条目,我从 2 张图片开始,取它们的差异,并将差异标记为 0 或 1。我的问题是找到这种差异的最佳方法是什么。我知道cv2.absdiff
然后正常减去图像 - 最有效的方法是什么?
关于数据:我正在训练的图像是屏幕截图,通常相同,但可能存在细微差异。我发现正常减法似乎显示的差异小于 absdiff。
这是我用于 absdiff 的代码:
diff = cv2.absdiff(img1, img2)
mask = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
th = 1
imask = mask>1
canvas = np.zeros_like(img2, np.uint8)
canvas[imask] = img2[imask]
然后这是正常的减法:
def extract_diff(self,imageA, imageB, image_name, path):
subtract = imageB.astype(np.float32) - imageA.astype(np.float32)
mask = cv2.inRange(np.abs(subtract),(30,30,30),(255,255,255))
th = 1
imask = mask>1
canvas = np.zeros_like(imageA, np.uint8)
canvas[imask] = imageA[imask]
谢谢!