-
QR碼的幾大開源庫對比:
二維碼已經進入人們的日常生活中,尤其是日本Denso Wave公司1994年發明的QR碼(Quick Response),由於其易於檢測、寫入信息量大、提供強大的糾錯機制,應用最爲廣泛,可說是名副其實的第一大圖像識別應用。
QR碼的檢測和解碼成爲很多應用開發的必備,面對衆多的開源庫,到底哪一種是比較好的呢?
BoofCV的作者Peter Abeles對較有影響力的五大開源庫中檢測算法進行了比較,值得大家參考。
- 參與比較的開源庫:
BoofCV (Ver. 0.33):一種用Java實現的開源、實時的計算機視覺庫;
http://boofcv.org/
OpenCV (Ver. 4.0.1):OpenCV 4.0後加入了QR碼檢測和解碼功能,C++實現;
http://opencv.org/
Quirc (Feb 1, 2018. SHA 307473db):一種專門面向QR碼的檢測和解碼庫,C語言實現;
ZBar (Ver. 0.10):一種被廣泛使用的包含各種條碼檢測識別的專門庫,支持各種平臺,支持Python, Perl, C++等語言;
ZXing (Ver. 3.3.3):一種面向Java Android開發的各種條碼檢測識別庫,用Java開發,支持多種語言;
- 圖像分類:
爲全方位比較各個開源庫檢測QR碼的性能,作者收集了在應用中大量常見的情況。
包括模糊、陰影、高光、扭曲、被塗損等15種情況,如下圖:
各類別包含的圖像數:
- 檢測結果:
作者以檢測到的位置和標籤位置重合10%爲閾值定義檢測成功,計算true positives, false positives, true negatives, 與 false negatives,並最終計算F-Measure來比較檢測結果。
分類別的檢測結果統計:
不分類別的全局統計:
可見,沒有哪個庫處於統治地位完全比其他庫更好,但BoofCV在大多數情況下爲最好或者接近次好。Zbar在大多數類別下比ZXing好,但在ZXing最擅長的類別,Zbar不夠好。quirc在一般情況下都表現良好,但在其他庫表現最好的類別卻不是很好。OpenCV則是毫無疑問總是最差。
- 檢測速度結果比較:
在哪一類別的表現均一致,ZXing是最快的庫,BoofCV次之。OpenCV的速度表現很穩定,最慢。。。
- 結論:
選擇哪個庫取決於你的應用,如果二維碼比較標準建議BoofCV,它的檢測精度高而且速度也很好,如果二維碼有污損或外觀變化,ZXing是不錯的選擇。如果只能使用C++,則推薦Zbar。
(反正OpenCV是不被推薦的!)
其中Zbar的環境配置博客:Zbar開源項目二維碼識別(測試)