windows平台二维码识别

读取二维码图片

在这里插入图片描述

灰度处理

在这里插入图片描述

二值化、滤波

在这里插入图片描述

二维码读取

在这里插入图片描述

读取结果

类型:QR-Code
条码: http://v.dongyu315.com/q.aspx?c=5629060261940201

代码

    Mat srcImg = img.clone();
	imshow("原图", srcImg);
	cvtColor(img, img, CV_BGR2GRAY);
	imshow("灰度图", img);
	int thre = threshold(img, img, 0, 255, cv::THRESH_OTSU);
	imshow("二值化", img);
	ImageScanner scanner;
	scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
	int width1 = img.cols;
	int height1 = img.rows;
	uchar *raw = (uchar *)img.data;
	Image imageZbar(width1, height1, "Y800", raw, width1 * height1);	
	scanner.scan(imageZbar); //扫描条码    
	Image::SymbolIterator symbol = imageZbar.symbol_begin();
	if (imageZbar.symbol_begin() == imageZbar.symbol_end())
	{
		cout << "查询条码失败,请检查图片!" << endl;
	}
	for (; symbol != imageZbar.symbol_end(); ++symbol)
	{
		qDebug() << "类型:" << symbol->get_type_name().c_str();
		qDebug() << "条码:" << symbol->get_data().c_str();
		for (int i = 0; i < symbol->get_location_size(); i++)
		{
			cv::Point2f start, end;
			start.x = symbol->get_location_x(i%4);
			start.y = symbol->get_location_y(i%4);
			end.x = symbol->get_location_x((i+1) % 4);
			end.y = symbol->get_location_y((i+1) % 4);
			qDebug() << "X"<<i<<":" << symbol->get_location_x(i) << "Y"<<i<<":" << symbol->get_location_y(i);
		
			line(srcImg, start, end, Scalar(255, 21, 237), 3);
		}
			
	}
	imshow("result", srcImg);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值