OpenCV4.1.2 QRCode解碼體驗測評(附源碼+支持中文)

目前官方Release的OpenCV最新版本爲4.1.2,偶然看到更新信息裏面QRCode解碼性能有提高,因此火燒眉毛想嘗試一下,由於上次測試了4.0版本的效果不太好。python

下載和配置OpenCV的步驟此處略過,網上均可以找到資料,步驟比較簡單,你們本身完成便可。接下來做爲檢測和識別的第一步,咱們首先要有QRCode二維碼,你們能夠網上下載,也能夠用下面的python代碼生成,後面是我用代碼生成的三個二維碼用於後續測試。性能

from PIL import Image
import qrcode


def make_code():
    url = u'OpenCV與AI深度學習'
    qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=8, border=4)
    qr.add_data(url)
    qr.make(fit=True)

    img = qr.make_image()
    img = img.convert("RGBA")

    icon = Image.open("opencv.png")

    img_w, img_h = img.size
    factor = 4
    size_w = int(img_w / factor)
    size_h = int(img_h / factor)

    icon_w, icon_h = icon.size
    if icon_w > size_w:
        icon_w = size_w
    if icon_h > size_h:
        icon_h = size_h
    icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)

    w = int((img_w - icon_w)/2)
    h = int((img_h - icon_h)/2)
    icon = icon.convert("RGBA")
    img.paste(icon, (w, h), icon)
    # img.show()
    img.save('logo-qrcode.png')

make_code()
print("Finished!")

  

       

接下來新建Win32控制檯程序,複製示例代碼qrcode.cpp,在opencv安裝目錄下sources/samples/cpp/qrcode.cpp位置,配置好後運行代碼,會打開攝像頭,進行實時QRCode二維碼的檢測和識別,下面是我檢測的效果:學習

須要注意的是默認解碼以後若是二維碼內容中有中文會顯示爲亂碼,使用下面代碼可講中文正常顯示。測試

if (result_detection)
{
  decode_info = qrcode.decode(src, transform, straight_barcode);
  if (!decode_info.empty()) 
  { 
    //cout << decode_info << endl;   //原來直接輸出std string     
    std::wstring wtxt = utf8string2wstring(decode_info);    // 將utf-8的string轉換爲wstring
    std::string txt_gbk = wstring2string(wtxt, "Chinese");    // 再將wstring轉換爲gbk的string
    std::cout << txt_gbk << endl;
  }
}

那麼你將會看到這樣的結果:優化

  

最後對OpenCV4.1.2版本QRCode解碼功能作個簡單總結:url

① 二維碼檢測和識別不論從速度和準確率方面都有了很大提高。code

② 支持各類角度和各類顏色QRCode解碼orm

③ 支持中文解碼(輸出內容轉碼便可)blog

④ 同時存在多個二維碼時找不到utf-8

展望:期待後面可以支持多個二維碼解碼,同時能支持DataMatrix和其餘類型二維碼就更好了。

 

固然,若是有興趣本身優化的朋友能夠編譯源碼查看優化。

關注【OpenCV與AI深度學習】

長按或者掃描下面二維碼便可關注

相關文章
相關標籤/搜索