您的位置:首页 > 其它

二维码解码器Zbar 的配置和基本使用

2018-01-16 09:42 357 查看
         Zbar解码器是一个开源的二维码(包括条形码)解码器,可以识别来至于视频流,图像文件、手持扫码器和视频设备(如摄像头)等二维码识别,支持EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, QR Code(二维码)等常用编码方式的条形码/二维码。

         话不多说,直接开始配置和使用步骤。

一、下载并安装Zbar

1、Zbar安装包的下载   下载链接    选择如下图所示的 window安装包



2、双击 zbar-0.10-setup.exe文件,进行安装

3、一定要勾选“Development Headers and Libraries”。

4、安装完成之后,在对应目录下生成了如下图所示的文件。其中我们需要用到的主要是 bin、lib和include三个文件夹。



二、VS2013配置Zbar的属性

主要是include、lib、附加依赖项和dll所在目录。具体可参考  我之前的博文

三、结合opencv测试Zbar的效果

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include "zbar.h"

using namespace std;
using namespace cv;
using namespace zbar;

int main()
{
ImageScanner scanner;
scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
Mat image = imread("3.jpg");
if (!image.data)
{
cout << "请确认图片" << endl;
system("pause");
return 0;
}
Mat Gray;
cvtColor(image, Gray, CV_RGB2GRAY);
//Mat imageGray = Gray(Rect(Point(338, 473), Point(1148, 652)));
Mat imageGray = Gray.clone();
int width = imageGray.cols;
int height = imageGray.rows;
Image imageZbar(width, height, "Y800", imageGray.data, width * height);
int n=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;

}
效果还不错,可以正确识别。

四、参考博文

1、http://blog.csdn.net/dcrmg/article/details/52108258

2、https://www.cnblogs.com/dengxiaojun/p/5278679.html

3、http://blog.csdn.net/kaychangeek/article/details/77483992

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: