對下面兩個影像之間的差異進行評分的pythonic方法是什么?(例如,量化第二張圖片與第一張圖片相差 25%)
OpenCV 似乎在關于影像比較的討論中出現了很多,例如在這個討論中 ->

uj5u.com熱心網友回復:
我找到了一個對我有用的答案,所以我想分享它,以防其他人有類似的問題。該代碼比較兩個影像的像素并找出差異。相同像素的值為 0。知道了這一點,我們可以使用 numpy 來查找非零像素并使用該數字來計算差異分數。
你可以使用這個代碼
import cv2
import numpy as np
img1 = cv2.imread("16x16_orig.png", 0)
img2 = cv2.imread("16x16_dif.png", 0)
#--- take the absolute difference of the images ---
res = cv2.absdiff(img1, img2)
print(res)
#--- convert the result to integer type ---
res = res.astype(np.uint8)
print(np.count_nonzero(res))
#--- find percentage difference based on number of pixels that are not zero ---
percentage = (np.count_nonzero(res) * 100)/ res.size
print(percentage)
使用下面的兩個影像將回傳 50% 的分數,這正是我們所期望的。
原圖

不同的

獲得 absdiff 后,結果陣列如下所示:
[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]]
需要注意的是,您要比較的影像大小必須相同。
對于那些對原始問題中的影像感到好奇的人。結果是 1292 個非零像素有 2.56% 的差異
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/366651.html
上一篇:特定目錄中的圖庫活動
