1. 程式人生 > >python影象處理工具opencv練習:比較影象差異!

python影象處理工具opencv練習:比較影象差異!

為了計算兩幅影象之間的差異,我們將利用Wang等人介紹的結構相似性指數:Image Quality Assessment: From Error Visibility to Structural Similarity。此方法已在scikit-image庫中實現,論文下載: https://itbooks.pipipan.com/fs/18113597-326895607 。

首先需要安裝Python,OpenCV,scikit-image和imutils。

計算影象差異

你能發現這兩個影象之間的區別嗎?

python影象處理工具opencv練習:比較影象差異!

 

圖片.png

程式碼:

python影象處理工具opencv練習:比較影象差異!

 

執行結果

python影象處理工具opencv練習:比較影象差異!

 

圖片.png

原始碼: https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/image_diff_pil.py

程式碼及配套圖片: https://itbooks.pipipan.com/fs/18113597-326879233

使用scikit-image中的compare_ssim函式,我們計算得分和差異影象diff。

分數表示兩個輸入影象之間的結構相似性指數。 該值在[-1,1]範圍內,值為1是“完美匹配”。

差異影象包含我們希望視覺化的兩個輸入影象之間的實際影象差異。 差異影象當前表示為[0,1]範圍內的浮點資料型別,因此我們首先將陣列轉換為[0,255]範圍內的8位無符號整數,然後我們才能使用OpenCV進一步處理它 。

然後我們找到輪廓,以便我們可以在標識為“不同”的區域周圍放置矩形。

。我們使用門限cv2.THRESH_BINARY_INV和cv2.THRESH_OTS。參考: https://docs.opencv.org/trunk/d7/d4d/tutorial_py_thresholding.html 。

下面圖4中的影象清楚地顯示了已被操縱的影象的ROI:

python影象處理工具opencv練習:比較影象差異!

 

圖片.png

我們將輪廓儲存在列表中,併為影象的不同區域周圍繪製矩形:

使用cv2.boundingRect函式計算輪廓周圍的邊界框。然後我們使用這些值在cv2.rectangle的影象上繪製紅色矩形。此時可以基於長寬,過濾掉過小的矩形區域。

執行: python image_diff.py --first images/original_01.png --second images/modified_01.png

python影象處理工具opencv練習:比較影象差異!

 

圖片.png

參考資料

  • how to compare two images with Python
  • python測試開發專案實戰-目錄
  • python工具書籍下載-持續更新
  • python 3.7極速入門教程 - 目錄
  • 討論qq群630011153 144081101
  • 本文涉及的python測試開發庫 謝謝點贊!
  • [本文相關海量書籍下載]( https://github.com/china-testing/python-api-tesing/blob/master/books.md
  • http://scikit-image.org/docs/dev/api/skimage.measure.html#skimage.measure.compare_ssim

更多例項

$ python image_diff.py --first images/original_02.png --second images/modified_02.png

python影象處理工具opencv練習:比較影象差異!

 

圖片.png

$ python image_diff.py --first images/original_03.png --second images/modified_03.png

進群:960410445  即可獲取原始碼!

python影象處理工具opencv練習:比較影象差異!

 

私信菜鳥007獲取神祕驚喜!