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

         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

  

猜你喜欢

转载自blog.csdn.net/hust_bochu_xuchao/article/details/79071087