二維碼解碼器Zbar+VS2010開發環境配置(使用opencv庫)

Zbar條碼解碼器是一個開源的二維碼(包括條形碼)解碼器,能夠識別來至於視頻流,圖像文件、手持掃碼器和視頻設備(如攝像頭)等二維碼識別,支持EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, QR Code(二維碼)等經常使用編碼方式的條形碼/二維碼。html

 

下邊這個簡單粗暴的圖標就是Zbar:ios

 

Zbar的SDK支持包括C、C++、Python在內的多種語言,也提供了iOS和Androdi的SDK可供使用,用起來也很是方便,只須要在編譯環境裏添加相應的路徑就好了,再加上圖像處理包,如ImageMagick++或Opencv的輔助讀圖,就能夠編寫準確高效的二維碼識別程序了,下邊就一步一步的介紹如何在vs2012中配置Zbar。c++

 

1. Zbar安裝包下載

點擊下載:Zbar官網下載連接,提供了Linux、Windows等版本的下載,目前最新版本是zbar-0.10。ide

 

2. Zbar安裝

雙擊zbar-0.10-setup.exe,開始安裝Zbar,其實就是對安裝包的解壓縮,以下圖:測試

 

勾選「Development Headers and Libraries」:ui

 

選擇安裝路徑:編碼

 

安裝完成以後在對應目錄下出現下列文件夾,表明安裝成功了:spa

 

3. VS2012工程項目屬性配置

3.1 添加屬性表

新建Win32控制檯應用程序,工程名命名爲ZbarTest,過程圖就省略~.net

在工程ZbarTest工程的視圖目錄的下拉菜單中打開屬性管理器:code

 

 

在屬性管理器的Debug|Win32目錄上單擊選擇「添加新項目屬性表」,新建屬性表,並命名爲「Zbar_Debug_Setting.props「,以下圖所示:

 

點擊添加,完成對項目屬性表的添加。

 

3.2 VC++目錄配置

雙擊剛纔添加的「Zbar_Debug_Setting.props「屬性表,選擇通用屬性->VC++目錄:

 

在VC++目錄->包含目錄裏添加1個目錄: D:\ProgramFilesD\ZBar\include

 

 

選擇VC++目錄->庫目錄:

 

在庫目錄裏添加1個目錄: D:\ProgramFilesD\ZBar\lib

 

3.3 輸入目錄配置

打開通用屬性->連接器->輸入:

 

在附加依賴項裏添加1個依賴項: libzbar-0.lib

 

點擊肯定,完成對IDE環境的配置。

 

4. 環境變量配置:

 

打開環境變量列表,這裏跟在另外一篇文章裏Opencv+VS2010裏的配置環境變量是同樣的 ,如不知道環境變量如何配置,能夠查看詳細步驟。

 

 

添加Zbar的動態庫所在目錄:D:\ProgramFilesD\ZBar\bin;  添加以後系統就不會找不到須要的dll文件了。



添加完以後務必記得註銷電腦後生效。

OK!完成這4個步驟的動做,整個Zbar和VS2012的配置工做就所有完成了。

 

5. 環境測試

最後經過一個例程,來測試一下配置是否OK,這個例子的實現是查找到輸入圖片中的二維碼,並在控制檯窗口和圖片窗口中分別輸出二維碼的內容。

注意圖片的位置和名稱

#include "zbar.h"        
#include "cv.h"        
#include "highgui.h"        
#include <iostream>        

using namespace std;        
using namespace zbar;  //添加zbar名稱空間      
using namespace cv;        

int main(int argc,char*argv[])      
{        
    ImageScanner scanner;        
    scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);      
    Mat image = imread("K1.jpg");    
    if(!image.data)  
    {  
        cout<<"請確認圖片"<<endl;  
        system("pause");  
        return 0;  
    }  
    Mat imageGray;        
    cvtColor(image,imageGray,CV_RGB2GRAY);        
    int width = imageGray.cols;        
    int height = imageGray.rows;        
    uchar *raw = (uchar *)imageGray.data;           
    Image imageZbar(width, height, "Y800", raw, width * height);          
    scanner.scan(imageZbar); //掃描條碼      
    Image::SymbolIterator symbol = imageZbar.symbol_begin();    
    if(imageZbar.symbol_begin()==imageZbar.symbol_end())    
    {    
        cout<<"查詢條碼失敗,請檢查圖片!"<<endl;    
    }    
    for(;symbol != imageZbar.symbol_end();++symbol)      
    {        
        cout<<"類型:"<<endl<<symbol->get_type_name()<<endl<<endl;      
        cout<<"條碼:"<<endl<<symbol->get_data()<<endl<<endl;         
    }        
    imshow("Source Image",image);          
    waitKey();      
    imageZbar.set_data(NULL,0);    
    return 0;    
}

 

注意把二維碼圖片放入程序所在路徑下,運行效果以下:

 

 

換用二維碼圖片:

 

 若是編譯提示找不到

"cv.h"
"highgui.h"

兩個頭文件,請配置opencv的引用,具體方法可參看前面博文。

若是編譯過程當中提示錯誤   「error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.」 

能夠嘗試如下解決方案:

項目 =》屬性 =》c/c++  =》預處理器=》點擊預處理器定義,編輯,加入_CRT_SECURE_NO_WARNINGS

相關文章
相關標籤/搜索