我的代码是:
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()
答案 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'