2016-11-15 49 views
2

我的問題略有變化 - 請參閱下面如何找到在兩個不同的圖像兩個相同的像素(色值)與Python

UPDATE我想與Python來比較兩個不同的圖像。目標是找到兩個圖像中存在的像素顏色值。

我寫了一個小程序來收集圖像中的所有像素顏色值。而此刻我有一本字典/ output.txt的,看起來像這樣:

{"pixels": [[232, 251, 255], [231, 250, 254], [230, 249, 253], [230, 249, 252], [230, 250, 251], [230, 249, 254], [230, 249, 255], [230, 250, 255], [228, 250, 254], [228, 249, 254], [228, 249, 254], [229, 248, 252], [230, 249, 253], [230, 249, 253], [231…} 

現在我的問題是:如何可以比較其他圖像的值,這些值,看看是否有相同的顏色值在裏面?

謝謝!

UPDATE

我想更新我最初的問題。我現在有兩個(或多或少)複雜的列表。第一個包含圖像名稱和十六進制圖像像素顏色。所以它看起來像這樣:

{ 
0: {'hex': ['#c3d6db', '#c7ccc0', '#9a8f6a', '#8a8e3e'], 'filename': 'imag0'}, 
1: {'hex': ['#705b3c', '#6a5639', '#442f1e', '#4a3d28'], 'filename': 'img-xyz'}, 
… 
} 

第二個字典包含很多十六進制值作爲鍵和一個id作爲值。它看起來像:

{'#b0a7aa': '9976', '#595f5b': '19367', '#9a8f6a': '24095'…} 

現在我想要做的就是看是否有從我的圖像,與第二列表中的一個匹配的色值(第一個列表)。如果是這樣,那麼我想知道第一個列表中的文件名和第二個列表中匹配鍵的值,即id。

我怎麼能做到這一點?

+0

其他圖片的列表在哪裏? –

回答

3

我會先嚐試列表的列表轉換成一個元組集:

>>> t1 = {(r,g,b) for [r,g,b] in p1} 
>>> t2 = {(r,g,b) for [r,g,b] in p2} 

然後用交會法:

>>> t1.intersection(t2) 
set([(231, 250, 254)]) 
+0

謝謝。我知道已經將它轉換爲一組元組。現在我認爲將它們作爲HEX-Code而不是rgb-values會更好。我怎樣才能輕鬆改變所有的價值? – iMax

1

而是從其他返回一個列表的列表中程序,返回一組元組然後你可以做

set.intersection(pixels(image1), pixels(image2)) 

查找所有像素都存在於我法師。

相關問題