zxing, zbar放在arm中的测试报告

Zxing 及zbar二维码识别比较

实现过程比较

Zxing:

https://github.com/glassechidna/zxing-cpp

把程序加入,zxing只需要用cmake及make就可以编译好静态库,把include文件和lib文件位置加入到cmakelist里面就可以了。

加入

 

                          zxing::ArrayRefimaget = zxing::ArrayRef(pTemp, comps*w*h);

                          Refsource=Ref(new ImageReaderSource(imaget, w, h, comps));

                          inthresult = read_image(source);

zbar

https://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.bz2/download

Zbar则复杂好多,先用./configure--prefix=$PWD/bin/ --without-gtk --without-qt --without-python --without-imagemagick--host=arm-linux  -with-jpeg=no  -with-x=no -with-python=no --disable-video

然后再用make-> make check->make install,中间几经反复,终于搞定,删除了la,so文件,直接用了静态库文件,把include,lib文件夹加入到cmakelist.

 

         Mat im = imread("qr2.jpg");

         Mat imGray;

         cvtColor(im, imGray,CV_BGR2GRAY);

         w=imGray.rows;

         h=imGray.cols;

         ImageScanner scanner;

         // configure the reader

         scanner.set_config(ZBAR_NONE,ZBAR_CFG_ENABLE, 1);

         Image imageZbar(w, h, "Y800", (uchar*)imGray.data, w * h);//uchar

         // scan the image for barcodes

         int n= scanner.scan(imageZbar);

         zbar::Image::SymbolIteratorsymbol = imageZbar.symbol_begin();

         if(imageZbar.symbol_begin()==imageZbar.symbol_end())

                  cout<<"decode failed\n"<<endl;

         for(;symbol != imageZbar.symbol_end();++symbol){

                  cout<<"type:"<<endl<get_type_name()<<endl<<endl;

                  cout<<"data:"<<endl<get_data()<<endl<<endl;}

         imageZbar.set_data(NULL,0);

测试图像比较

zxing, zbar放在arm中的测试报告_第1张图片

474*474

Zxing: 运行20次时间分别为:279,300,274,282

Zbar:运行20次时间分别为:1962,1929,1922,1954

 

zxing, zbar放在arm中的测试报告_第2张图片1000*1000

Zxing: 运行20次时间分别为:452,465,441,453

Zbar:运行20次时间分别为:4563,4574,4473,4452


zxing, zbar放在arm中的测试报告_第3张图片

500*500

Zxing: 运行20次时间分别为:269,228,262,252

Zbar:运行20次时间分别为:1444,1441,1434,1449


zxing, zbar放在arm中的测试报告_第4张图片

455*455

Zxing: 运行20次时间分别为:241,217,250,239

Zbar:运行20次时间分别为:1265,1264,1244,1235

zxing, zbar放在arm中的测试报告_第5张图片

Zxing可识别出

Zbar识别不出

结论

Zxing容易实现,并且可在windowsVS里直接调试测试。Zbar实现起来要复杂一点

ZxingV100上识别速度快,识别率高


你可能感兴趣的:(专业)