opencv 叠加两张图_「干货」教你如何用OpenCV快速寻找图像差异处
如何使用結(jié)構(gòu)相似性指數(shù)(SSIM)將兩個圖像與Python進行比較。
使用這種方法,我們能夠輕松確定兩個圖像是否相同或由于輕微的圖像處理,壓縮偽像或有目的的篡改而產(chǎn)生差異。
今天我們將擴展SSIM方法,以便我們可以使用OpenCV和Python可視化圖像之間的差異。具體來說,我們將在兩個不同的輸入圖像中的區(qū)域周圍繪制邊界框。
與OpenCV和Python的圖像差異
為了計算兩個圖像之間的差異,我們將利用結(jié)構(gòu)相似性指數(shù),由Wang等人首先介紹。在2004年的論文中,圖像質(zhì)量評估:從錯誤可見性到結(jié)構(gòu)相似性。此方法已在scikit-image 庫中實現(xiàn)以進行圖像處理。
訣竅是學(xué)習(xí)如何根據(jù)(x,y) -坐標(biāo)位置精確確定圖像差異的位置。
為此,我們首先需要確保我們的系統(tǒng)具有Python,OpenCV,scikit-image和imutils。
您可以使用我的OpenCV安裝教程學(xué)習(xí)如何在系統(tǒng)上配置和安裝Python和OpenCV 。
如果您還沒有 scikit - 已安裝/升級映像,請通過以下方式升級:
$ pip install --upgrade scikit-image當(dāng)你在這里時,繼續(xù)安裝/升級 imutils :
$ pip install --upgrade imutils現(xiàn)在我們的系統(tǒng)已經(jīng)準(zhǔn)備好了先決條件,讓我們繼續(xù)。
計算圖像差異
你能發(fā)現(xiàn)這兩個圖像之間的區(qū)別嗎?
圖1:手動檢查兩個輸入圖像(源)之間的差異
如果您花一秒鐘研究這兩張信用卡,您會注意到MasterCard徽標(biāo)出現(xiàn)在 左側(cè)圖像上,但已從右側(cè)圖像中刪除 。
您可能已經(jīng)立即注意到這種差異,或者可能已經(jīng)花了幾秒鐘。無論哪種方式,這都證明了比較圖像差異的一個重要方面 - 有時圖像差異是微妙的 - 如此微妙以至于肉眼難以立即理解差異(我們將在本博文后面看到這樣一個圖像的例子)。
那么為什么計算圖像差異如此重要呢?
一個例子是 網(wǎng)絡(luò)釣魚。攻擊者可以稍微操縱圖像,以欺騙不驗證URL的毫無戒心的用戶,使他們認(rèn)為他們正在登錄他們的銀行網(wǎng)站 - 后來發(fā)現(xiàn)這是一個騙局。
將網(wǎng)頁上的徽標(biāo)和已知用戶界面(UI)元素與現(xiàn)有數(shù)據(jù)集進行比較有助于減少網(wǎng)絡(luò)釣魚攻擊(非常感謝Chris Cleveland傳遞 PhishZoo:通過查看網(wǎng)絡(luò)釣魚網(wǎng)站作為應(yīng)用計算機視覺預(yù)防的示例來檢測網(wǎng)絡(luò)釣魚網(wǎng)站網(wǎng)絡(luò)釣魚)。
開發(fā)網(wǎng)絡(luò)釣魚檢測系統(tǒng)顯然比簡單的圖像差異復(fù)雜得多,但我們?nèi)匀豢梢詰?yīng)用這些技術(shù)來確定是否已經(jīng)操縱了給定的圖像。
現(xiàn)在,讓我們計算兩個圖像之間的差異,并使用OpenCV,scikit-image和Python并排查看差異。
打開一個新文件并將其命名為 image_diff .py ,并插入以下代碼:
# import the necessary packagesfrom skimage.measure import compare_ssimimport argparseimport imutilsimport cv2 # construct the argument parse and parse the argumentsap = argparse.ArgumentParser()ap.add_argument("-f總結(jié)
以上是生活随笔為你收集整理的opencv 叠加两张图_「干货」教你如何用OpenCV快速寻找图像差异处的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git拉取代码如何解决冲突_开源项目 g
- 下一篇: 罗汉果壳的功效与作用、禁忌和食用方法