python中两个图像的差异没有得到正确的减法结果

时间:2018-06-08 03:48:31

标签: python numpy opencv

这是我的python代码,我想找到两个图像之间的差异。

import cv
import numpy as np
img1=cv.imread('/storage/emulated/0/a.jpg',0)
print(img1[0:1])
img2=img1
img2[0:1994]=1
print(img2[0:1])
rows,cols=img1[0:1].shape
print(rows)
print(cols)
rows,cols=img2[0:1].shape
print(rows)
print(cols)
print(np.subtract(img1[0:1,0:1], img2[0:1,0:1]))

我正在减去这些numpy数组,但总是得零。请帮忙解决这个问题。

1 个答案:

答案 0 :(得分:1)

问题在于您复制图像的方式。

使用赋值运算符(=)分配对象时,对一个对象所做的更改也会反映在另一个对象中。因此,当img2 = img1 img2所做的更改img1时,您的这种情况也会反映在copy()中。因此,在减法时,你总是

快速解决方法是使用img2方法。这会一起创建一个新对象img2。因此,img1中所做的更改不会反映在img2 = img1.copy() 中,反之亦然。

print(np.subtract(img1[0:1,0:1], img2[0:1,0:1]))

现在打印[[233]]会产生shapes[].mesh.indices

请同时查看THIS BLOG POST