Quirc二維碼識別模塊

背景

  師兄要用這個參加集賽,但是說自己C語言不太行,花了一個多小時幫他分析了一下(雖然自己也不太行)。

  對應模塊的GitHub地址:https://github.com/dlbeer/quirc

  記錄一下,一旦以後用到呢。

內容

  下載下來的文件主要有demo、tests、lib,由於自己對二維碼識別過程不是十分了解,本文主要對demo的一部分進行了分析。

 

  首先是main()函數。這裏使用了一系列命令行參數,主要是跑了run_demo()這個函數。

  

 

 

 

 

  run_demo()這一函數。方框部分主要是錯誤處理,包含對攝像頭初始化和內存分配等出現的問題輸出。圓框部分mjpeg()應該是對MJPEG譯碼器進行初始化,經過循環後釋放掉了。所以主要操作還是main_loop()對數據進行了處理

 

 

 

 

 

  main_loop()前一部分應該主要是轉成reg32,然後獲取灰度,用於識別二維碼信息。方框中主要是將格式轉換成rgb32,圓框中應該是獲取灰度信息。注意到該部分用到了quirc_begin()和quirc_end(),根據官方說法,這兩個函數將灰度圖像直接輸入了quirc用於圖像處理的緩衝區。quirc_begin()返回了一個之前已經分配的buffer的指針,可以通過quirc_count和quirc_extract來找到對應二維碼。

 

 

  quirc_decode()實現譯碼,在main_loop()中的draw_qr()中。官方示例中quirc_decode()以引用方式傳遞參數,函數內對data進行的修改直接影響到對應data,譯碼成功則打印出來。

 

 

  具體譯碼實現還未細看,就醬~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章