二维码解码器Zbar+VS2010开发环境配置

二维码解码器Zbar+VS2010开发环境配置


发现ImageMagick只是用来打开图片,转换成统一的灰度矩阵数据。所以这次我尝试用OpenCV来实现ImageMagick的功能。

1、删除工程属性中ImageMagick的相关设置,增加OpenCV的设置。

2、安装完成后,到安装目录,将bin目录加入环境变量,在VSVC++目录的include中加入头文件地址,lib地址,并加入lib名称(连接器-输入-附加依赖项),然后就可以使用了,具体使用查看下面的代码

结果如下:首先我们的库文件在D:\Program Files\ZBar目录下

首先安装ZBar v0.10,然后其安装目录为D:\Program Files\ZBar。

所以,我们的库文件在D:\Program Files\ZBar目录下

 

 二维码解码器Zbar+VS2010开发环境配置_第1张图片

VC++目录->包含目录里添加1个目录: D:\ProgramFilesD\ZBar\include


 二维码解码器Zbar+VS2010开发环境配置_第2张图片

 

选择VC++目录->库目录:

在库目录里添加1个目录: D:\ProgramFilesD\ZBar\lib

二维码解码器Zbar+VS2010开发环境配置_第3张图片

输入目录配置

打开通用属性->链接器->输入:

在附加依赖项里添加1个依赖项:libzbar-0.lib

 二维码解码器Zbar+VS2010开发环境配置_第4张图片

环境变量配置:

添加Zbar的动态库所在目录:D:\ProgramFilesD\ZBar\bin;  添加之后系统就不会找不到需要的dll文件了。

 二维码解码器Zbar+VS2010开发环境配置_第5张图片

 环境测试  

(此处代码参考别人的微博)

#include "zbar.h"    
#include    
#include     
using namespace std;    
using namespace zbar;  //添加zbar名称空间  
using namespace cv;    
 
int main(void)  
{    
	ImageScanner scanner;    
	scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);   
	//  等待用户输入完整条形码/二维码路径+名称,把图片直接拖入窗口即可   
	char file[256];    
	cin>>file;    
	Mat img = imread(file,0);   
	//Mat img=imread("www.baidu.com.png",0);
	Mat imgout;    
	cvtColor(img,imgout,CV_GRAY2RGB);    
	int width = img.cols;    
	int height = img.rows;    
	uchar *raw = (uchar *)img.data;       
	Image image(width, height, "Y800", raw, width * height);      
	int n = scanner.scan(image);      
	for(Image::SymbolIterator symbol = image.symbol_begin();symbol != image.symbol_end();symbol++)  
	{    
		vector vp;    
		cout<<"Decoded"<get_type_name()<		cout<<"Symbol"<get_data()<		int n = symbol->get_location_size();    
		for(int i=0;i		{    
			vp.push_back(Point(symbol->get_location_x(i),symbol->get_location_y(i)));   
		}    
		RotatedRect r = minAreaRect(vp);    
		Point2f pts[4];    
		r.points(pts);    
		Point textPoint(pts[1]);  
		string codeNum=symbol->get_data();  
		for(int i=0;i<4;i++)  
		{    
			line(imgout,pts[i],pts[(i+1)%4],Scalar(255,0,0),3);   
			//查找条码区域左上角坐标 
			textPoint.x>=pts[i].x?textPoint.x=pts[i].x:textPoint.x=textPoint.x;  
			textPoint.y>=pts[i].y?textPoint.y=pts[i].y:textPoint.y=textPoint.y;  
			//在图片上输出解码内容  
			putText(imgout,codeNum,textPoint,FONT_HERSHEY_COMPLEX,1,Scalar(0,0,255),1,8,false);               
		}    
		cout<<"Angle: "<	}    
	imshow("imgout.jpg",imgout);      
	waitKey();    
}   

运行之后,弹出控制台窗口,把带有二维码的图片拖入后回车,效果如下:

二维码解码器Zbar+VS2010开发环境配置_第6张图片

你可能感兴趣的:(二维码检测资料)