2014-12-09 3 views
0

두 이미지를 비교하고 그들 간의 % 차이를 알고 싶습니다. 나는 라스베리 파이와 파이썬 언어에 raspbian을 사용하고 있습니다. 필자는 PIL과 magickimage를 찾았지만 magick 이미지로는이 기능을 찾을 수 없으며 PIL로는 이상한 결과가 있습니다. 난 intervall 0.5 초 개의 사진 (NO 차분) 걸릴 때이 결과를두 이미지를 비교하고 차이 %를 찾으십시오.

h1 = image1.histogram() 
h2 = image2.histogram() 
rms = math.sqrt(reduce(operator.add,map(lambda a,b: (a-b)**2, h1, h2))/len(h1)) 

: 제가 간 동안 이동하면 .... 4743.766를 RMS = 필 옵션

는이 코드를 사용하여 두 사진 내가 가지고있는 rms : 4699.288 ..... 그래서 그것은 두 "sames"이미지의 차이를 만들어 내지 않습니다./

+0

무엇을, 정확하게, * "이상한 결과"*는 의미합니까? 코드는 어디에 있고 정확히 그 문제는/ – jonrsharpe

+0

내가 편집 : 죄송합니다. – user3466795

답변

1

ImageMagick의 일부인 compare을 사용하십시오. 이 같은

compare -metric AE image1.png image2.png null: 

AE 픽셀 차의 수의 카운트의 관점에서, 절대 에러를 제공한다. MAE (평균 절대 오류) 또는 PAE (절대 절대 오차) 또는 RMSE (평균 제곱 오차)을 사용할 수도 있습니다. 또한 허용하는 fuzz 요소를 추가 할 수 있습니다 같은 픽셀 값에 약간의 차이 : 당신은 쉘 변수에 대답을하려면

compare -fuzz 10% -metric AE image1.png image2.png null: 

, 당신이 할 수있는, ndiff 말 :

ndiff=`compare -fuzz 10% -metric AE image1.png image2.png null: ` 
echo $ndiff 
+0

저는 리눅스에서 매우 나쁩니다. 콘솔에서는 괜찮습니다. 값을 주었지만 스크립트에서 어떻게 쓰는지 모르겠습니다. 나는 그것을 시도했다 : diff = compare -metric AE image1.png image2.png null print (diff) 그러나 그는 "AE"에 오류가 있다고 말했다. 콘솔에서 잘 작동하기 때문에 이상하다. 도와 주셔서 대단히 감사합니다. – user3466795

+0

답변을 업데이트 드리겠습니다. –

+0

$에 잘못된 구문이있는 것 같습니다. 따라서 스크립트를 실행할 수 없습니다 :/ – user3466795