如何通过 C# 比较两幅图片的相似度?
生活随笔
收集整理的這篇文章主要介紹了
如何通过 C# 比较两幅图片的相似度?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
咨詢區
Byyo
我在用 C# 實現一個可以查找重復圖片的小工具,我目前是給每一個圖片做一個 md5 碼,然后通過 md5 值來判斷圖片是否相同。
但現實情況要復雜的多,比如:
圖片被旋轉了,比如:90°
圖片大小不一致
不同的壓縮比例和后綴名
請問是否有更好的方式來解決?
回答區
fubo
這種比較圖片是否相同的解決思路,可以大概總結為下面四步。
調整圖片大小為 16x16 像素
調整圖片為 黑白 色,這樣就可以用 1/0 來表示。
將行列的黑白點 讀取到 List 中,參考如下代碼:
我知道,GetPixel 方法性能不是很高,但在 16*16 像素場景下應該不會有性能問題。
比較兩幅圖片所生成的 List,然后再設置一個容忍值即可,參考如下代碼:
Fab
圖片比較算法本質上來說是非常復雜的,除非你的場景一定要實現一個原創的相似度比較算法,否則我建議你使用一些市場上已存在的開源庫,比如說:EmguCV,它是一個開源的C#實現的邊緣檢測和相關的計算機視覺算法,包裝了用 C 和 C++ 實現 的 OpenCV 上。
點評區
2013 年我在博客園寫了一篇文章,用的是 Aforge.NET 識別 得仕卡 官網上的驗證碼,有興趣的朋友可以去看一看,參考文章:https://www.cnblogs.com/huangxincheng/p/3495858.html ? 其實我也覺得場景允許,建議還是用開源的工具包。
總結
以上是生活随笔為你收集整理的如何通过 C# 比较两幅图片的相似度?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Avalonia跨平台入门第十二篇之动画
- 下一篇: 论敏捷管理与团队文化的契合度