如何比较python中两个不同文件的两个图像文件

时间:2015-04-01 08:13:11

标签: python image comparison

我想创建一个比较两个图像的程序。我需要从两个不同的文件夹中获取图像,并比较它们是否相同。然后我想打印出相同或不同的内容。 例如,文件1将具有image1和图像2以及图像3等,然后文件2将具有image1,image2和image3等。我需要做这个python。我该怎么做呢?有人能帮我吗?我是编程新手,我也是python的新手。 我已尝试过如下解决方案,但它没有用。

import cv2
import numpy as np


file1= "C:\Program Files (x86)\Python35-32\file1" 
file2="C:\Program Files (x86)\Python35-32\file2"
对于file1中的f1,

:         image1 = cv2.imread(f1)    对于file2中的f2:         image2 = cv2.imread(f2)    差异= cv2.subtract(image1,image2)

result = not np.any(差异)#if差异全部为零,它将返回False

如果结果为True:         打印(“图像相同”)    其他:         cv2.imwrite(“result.jpg”,差异)         打印(“图像不同”)

但上面的代码似乎没有按预期工作。我知道for循环不正确。我是python的新手。你能告诉我我在这里做错了吗?

实际上,我使用它来比较移动设备上的自动化和手动测试所采用的屏幕。文件是* .png。 我设法使用下面的代码。

你需要的上面的代码在命令提示符上提供image1和image 2.但是我希望python从文件中获取一个位置的图像和来自其他位置的图像并自动进行比较。如果图像相同则应该打印为零,就像上面的代码响应一样。如果它们不同则不会为零。 我面临的问题是如何从两个文件中获取并逐个从脚本中进行比较。 例如。 File1 \ Image1.png == File2 \ image1.png

1 个答案:

答案 0 :(得分:1)

使用ImageMagick,它可用于Python并包含在大多数Linux发行版中。首先熟悉命令行,然后将其用于Python。

创建两个目录

mkdir directory{1..2}

在directory1

中创建一个黑色方块
convert -size 128x128 xc:black directory1/1.png

enter image description here

在directory2

中创建一个红色10x10矩形的黑色方块
convert -size 128x128 xc:black -fill red -draw "rectangle 0,0, 9,9"  directory2/2.png

enter image description here

现在请ImageMagick告诉我们两个图像之间有多少像素不同,-metric ae是绝对错误。

convert directory1/1.png directory2/2.png -metric ae -compare -format "%[distortion]" info:

<强>输出

100

注1

如果您想让图像几乎相同,您可以添加-fuzz 10%,这样可以让每个像素与另一个图像中的相应像素相差最多10%,然后再将其计算为不同。在比较可能具有略微不同的质量/量化设置和/或抗锯齿的JPEG图像时,这可能更有用,这两者都会导致图像略有不同。

注2

你可以从Python shell out 并使用这个来运行上面的shell脚本...... link

注3

如果你创建了一个红色的GIF和一个红色的PNG,然后复制它们,它们会相同,就像这样

# Create red GIF
convert -size 128x128 xc:red red.gif
# Create red PNG
convert -size 128x128 xc:red red.png
# Compare and find no difference
convert red.png red.gif  -metric ae -compare -format "%[distortion]" info:
0

尽管这些文件差别很大

ls -l red*
-rw-r--r--  1 mark  staff  196  1 Apr 11:52 red.gif
-rw-r--r--  1 mark  staff  290  1 Apr 11:52 red.png
相关问题