如何比较python中的两个图像?

时间:2015-03-02 16:39:56

标签: python

我的代码是:

import cv2

from PIL import Image

import numpy as np

img=cv2.imread("IMG040.jpg")

img2=cv2.imread("IMG040.jpg")

p1 = np.array(img)

p2 = np.array(img2)

img3=img-img2

p3 = np.array(img3)

if p3==0 :
    print "the same"
else: 
    print"not the same"


but I have this problem
File "part2.py", line 10, in <module>
    if p3==0 :

错误讯息:

**ValueError:** The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()

2 个答案:

答案 0 :(得分:1)

表达式

p3==0

创建一个布尔numpy数组。 Python if语句不知道如何将整个数组解释为true或false。这就是错误信息的含义。您可能想要知道所有元素是否为零,这就是错误消息建议您应该使用all()的原因。

为此,您最终会将行更改为

if (p3==0).all():

然而,最好将numpy数组与allclose方法进行比较,这可以解释数字错误。所以尝试替换这个

img3=img-img2

p3 = np.array(img3)

if p3==0 :
    print "the same"
else: 
    print"not the same"

if np.allclose(img, img2):
    print "the same"
else:
    print "not the same"

答案 1 :(得分:0)

你需要像这样做if语句:

if np.all(p3==0):
    print 'The same'
else:
    print 'Not the same'