使用OpenCV/cv2比较和标记2张图像之间的差异(带图片)

Mar*_*k K 6 python opencv

我想使用Python和cv2比较2个图像,如下所示.

(Python 2.7 + Windows)

C:\ Original.jpg

C:\ Original.jpg

C:\ Edited.jpg

Edited.jpg

非常直接我可以在下面做并保存显示差异的图片:

import cv2 

Original = cv2.imread("c:\\Original.jpg")
Edited = cv2.imread("c:\\Edited.jpg")

diff = cv2.subtract(Original, Edited)

cv2.imwrite("c:\\diff.jpg", diff)
Run Code Online (Sandbox Code Playgroud)

结果如下:

C:\ diff.jpg

C:\ diff.jpg

此外,我希望根据比较的文件在图片中显示差异.换句话说,我希望有一个图片圈或标记差异,基于"Edited.jpg".可能吗?

(想一个方法可能是,识别"diff.jpg"中的可见区域,然后在"Edited.jpg"中为该区域画一个圆圈?)

Mar*_*k K 7

感谢Micka的帮助.下面是添加,它的工作原理.

im = cv2.imread('c:\\diff.jpg')
im1 = cv2.imread('c:\\Edited.jpg')


imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(im1, contours, -1, (0,255,0), 1)
cv2.imwrite("c:\\see_this.jpg", im1)
Run Code Online (Sandbox Code Playgroud)

C:\ see_this.jpg

C:\ see_this.jpg