2015-04-01 138 views
-1

我想創建一個程序來比較兩個圖像。我需要從兩個不同的文件夾拍攝圖像,並比較這些圖像,如果它們相同或不相同。然後我想打印出相同或不同的。 例如文件1將有圖像1和圖像2以及圖像3等,然後文件2將具有圖像1,圖像2和圖像3等。我需要做這個python。我該怎麼做呢?有人能幫我嗎?我是編程新手,我也是python的新手。 我已經嘗試了下面的解決方案,但它沒有奏效。如何比較python中兩個不同文件中的兩個圖像文件

import cv2 
import numpy as np 


file1= "C:\Program Files (x86)\Python35-32\file1" 
file2="C:\Program Files (x86)\Python35-32\file2" 

在文件1 F1: image1的= cv2.imread(F1) 爲file2中F2: IMAGE2 = cv2.imread(F2) 差= cv2.subtract(圖像1,圖像2)

結果=不np.any(差)#如果差都是零,將返回False

如果結果爲真: 打印(「上的影像是相同的」) 其他: cv2.imwrite(「結果.jpg「,區別) print(「圖像不同」)

但上述代碼似乎無法按預期方式工作。我知道for循環是不正確的。我是python的新手。你能讓我在這裏做錯什麼嗎?

實際上,我正在使用它來比較移動設備上自動化和手動測試所採用的屏幕。這些文件是* .png。 我設法得到這與下面的代碼工作。

上面的代碼需要在命令提示符下提供image1和image2.But我希望python從一個位置的文件中獲取圖像並從其他位置獲取圖像並自動進行比較。如果圖像相同,則應如上面的代碼響應那樣打印爲零。如果他們不同,那麼它不會是零。 我面臨的問題是如何從兩個文件中取出並從腳本中逐一比較。例如, File1 \ Image1.png == File2 \ image1.png

+0

什麼樣的圖像?您是否需要逐個像素地比較它們,還是隻需檢查文件是否是逐字節相同的?另一種解決方案「不工作」的方式是什麼? – DNA 2015-04-01 08:17:04

+0

沒有工作*如何*?顯示你的代碼並說明你得到了什麼錯誤。 – TZHX 2015-04-01 08:18:39

+0

所以你想要檢索兩個不同目錄中的文件?看看http://stackoverflow.com/questions/120656。 – philant 2015-04-01 09:32:22

回答

1

使用ImageMagick,它可用於Python幷包含在大多數Linux發行版中。首先熟悉命令行,然後將其應用到Python中。

創建兩個目錄

mkdir directory{1..2} 

在directory1中創建一個黑色方形

convert -size 128x128 xc:black directory1/1.png 

enter image description here

創建directory2一個黑色的正方形有紅色10×10的矩形

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腳本像... link

注3

如果創建,說一個紅色的GIF和一個紅色的PNG,並copare他們,他們會拿出相同的,像這樣

# 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 

儘管文件theselves不同極大

+0

有沒有反饋? – 2015-04-02 10:12:27