基於OpenCV+ZXing手工打造,FPS300+的二維碼識別庫


基於OpenCV+ZXing手工打造,FPS300+的二維碼識別庫

圖片

點擊上方藍字關注我們

微信公眾號:OpenCV學堂

關注獲取更多計算機視覺與深度學習知識

軟件版本信息

Windows10系統OpenCV4.5.1VS2017

OpenCV官方支持函數

 OpenCV在4.5.1中支持的了微信開源的二維碼識別,通過檢測模型與超像素模型分別實現了檢測與預處理,然后基於ZXing實現了解碼。當前還在擴展模塊中,而且還需要DNN模型加持,模型雖小,但是也費電!好處是三行代碼,調用簡單:

import cv2detector = cv2.wechat_qrcode_WeChatQRCode("detect.prototxt", "detect.caffemodel", "sr.prototxt", "sr.caffemodel")image = cv2.imread("weixin.png")res, points = detector.detectAndDecode(image)

視頻檢測+識別的速度大概FPS 70+左右,有人已經測試過!我看到這個以后的第一感覺就是我有一個更加環保+快速的方案。

他山之石可以攻玉

在我之前傳統的二維碼檢測基礎上,重新整理並優化了流程,使用二值分析方法實現二維碼檢測定位,然后基於ZXing解碼實現了二維碼的檢測與識別。對輸入圖像大小為:

 

3508x2480的圖像!檢測+識別平均速度在25毫秒左右!

基於攝像頭的二維碼實時識別,640x480分辨率,檢測+識別速度超過350+FPS,比直接調用OpenCV官方支持函數快5倍!而且支持旋轉、低像素重建、邊緣干擾修復等預處理。不信請看圖:

圖片

圖片

代碼就不放出來了,好久以前在OpenCV還沒有二維碼檢測函數的時候,我寫過一篇文章,教大家如何基於OpenCV手工寫代碼實現高精准的二維碼檢測。鏈接在這里:

OpenCV二維碼檢測與定位

干貨 | 基於OpenCV Python實現二維碼檢測與識別

現在的代碼就是基於當時文章代碼上修改的,然后添加了ZXing庫支持,實現了檢測+識別。可以說速度完全吊打OpenCV官方提供三行代碼!其實我封裝好了函數,調用很簡單,測試代碼如下:

cv::Mat codeROI;
std::vector<cv::Point> pts;
ResultInfo rsinfo;
QRCodeDetector qrdetector;
cv::VideoCapture cap(0);
while (true) {
    cap.read(image);
    int64 start = cv::getTickCount();
    qrdetector.detectQR(image, pts, codeROI);
    if (!codeROI.empty()) {
        qrdetector.decode(codeROI, rsinfo);
        if (rsinfo.status == 0) {
            //printf("QR Code Detected! \n");
            //printf("QR Code recognized! \n");
            //std::cout << rsinfo.code << std::endl;
            cv::putText(image, rsinfo.code, pts[0], cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 0, 0), 2, 8);
        }
    }
    double ct = (cv::getTickCount() - start) / cv::getTickFrequency();
    // printf("execution time : %.5f ms\n", ct * 1000);
    cv::putText(image, cv::format("FPS: %.2f", 1.0/ct), cv::Point(50, 50), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(0, 0, 255), 2, 8);
    cv::imshow("識別結果", image);
    cv::waitKey(1);
}

 

什么都別說了,點贊,轉發,后續還有故事繼續講......

OpenCV學堂
OpenCV學堂
專注計算機視覺開發技術分享,技術框架使用,包括OpenCV,Tensorflow,Pytorch教程與案例,相關算法詳解,最新CV方向論文,硬核代碼干貨與代碼案例詳解!作者在CV工程化方面深度耕耘15年,感謝您的關注!期待您的一直支持!
338篇原創內容
公眾號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM