我正在尝试比较两个图像并检测它们之间的差异,无论是形状还是颜色。
-形状的变化:零件数量发生了变化(增加或减少)。-颜色的变化:一些部分是粉红色的,然后变成了白色,反之亦然。
我尝试了 3 种算法:
- 通过 Compare_ssim 进行比较。
- 通过 PIL (ImageChops.difference) 进行差异检测。
- 图像减法。
第一种算法:
(score, diff) = compare_ssim(img1, img2, full=True)
diff = (diff * 255).astype("uint8")
第二种算法:
from PIL import Image ,ImageChops
img1=Image.open("canny1.jpg")
img2=Image.open("canny2.jpg")
diff=ImageChops.difference(img1,img2)
if diff.getbbox():
diff.show()
第三种算法:
image3= cv2.subtract(image1,image2)
问题是这些算法非常敏感。如果图像具有不同的噪声和不同的捕获角度,他们认为这两个图像是完全不同的。有什么想法可以解决这个问题吗?


