Python 将多个图像与一个图像进行比较

Python 将多个图像与一个图像进行比较,python,opencv3.0,cv2,Python,Opencv3.0,Cv2,我试图将一个图像与一个充满图像的文件夹进行比较,并试图找到一个相同的图像,但我不知道如何将一个图像与一个充满图像的文件夹进行比较 我试着用fnmatch和os制作一个文件列表,但它只需要少数几张图片中的一张 #导入 进口cv2 将numpy作为np导入 导入操作系统,fnmatch #收集所有图像 listOfFiles=os.listdir(“./images”) pattern=“*.jpg” 对于列表文件中的条目: 如果fnmatch.fnmatch(条目、模式): Allimages=(

我试图将一个图像与一个充满图像的文件夹进行比较,并试图找到一个相同的图像,但我不知道如何将一个图像与一个充满图像的文件夹进行比较

我试着用fnmatch和os制作一个文件列表,但它只需要少数几张图片中的一张

#导入
进口cv2
将numpy作为np导入
导入操作系统,fnmatch
#收集所有图像
listOfFiles=os.listdir(“./images”)
pattern=“*.jpg”
对于列表文件中的条目:
如果fnmatch.fnmatch(条目、模式):
Allimages=(“图像/”+条目)
#定义变量
upload=cv2.imread(“images/img1.jpg”)
复制=cv2.imread(所有图像)
#检查“复制”是否为“复制”
如果upload.shape==duplicate.shape:
打印(“图像具有相同的大小和通道”)
差异=cv2.减法(上传,复制)
b、 g,r=cv2.分割(差异)
如果cv2.countNonZero(b)=0和cv2.countNonZero(g)=0和cv2.countNonZero(r)=0:
打印(“图像相同”)
其他:
打印(“图像不同”)

您必须在
内为
循环执行所有操作

可能您只能使用

if (upload == duplicate).all():
代码:


filenames=list(os.listdir(dirname))
或直接在循环
中查找os.listdir(dirname)中的文件名:打印(“检查”,文件名)
显示您如何使用
fnmatch
os
我需要将其放在哪里?(对于最后一条评论。)如果将文件名分配给变量
Allimages=
,则无法获得多个名称-必须将其保留在列表
Allimages=[]
和for循环
Allimages.append(文件名)中
当您将有list
Allimage
时,您将需要另一个
for
-循环来检查每个图像。或者在一个for-loop中执行所有操作。这会产生多个错误,我认为在
if entry.lower().endswith(('.jpg','.jpeg'))
之后必须有一个:并且它会给出一个ValueError:包含多个元素的数组的真值是不明确的。在第21行是的,我在写了之后测试了它,现在应该可以了。比较图像应该是
if(upload==duplicate)。all():
import cv2
import os

directory = './images'
upload = cv2.imread("images/img1.jpg")

for entry in os.listdir(directory):

    if entry.lower().endswith( ('.jpg', '.jpeg', '.png', '.gif') ):

        fullname = os.path.join(directory, entry)
        print('fullname:', fullname)
        duplicate = cv2.imread(fullname)

        if upload.shape == duplicate.shape:
            print("The images have same size and channels")

            #difference = cv2.subtract(upload, duplicate)
            #b, g, r = cv2.split(difference) 
            #if cv2.countNonZero(b) == 0 and cv2.countNonZero(g) == 0 and cv2.countNonZero(r) == 0:
            if (upload == duplicate).all():
                print("images are the same")

        else:
            print("images are different")