OpenCV+MFC学习笔记(三):OpenCV4检测识别二维码QRCode解码值

本文档介绍了一个使用OpenCV在MFC界面中读取、检测、识别二维码的C++实现过程。通过加载图片,利用QRCodeDetector的detectAndDecode方法识别二维码,并在界面上显示结果。虽然detectAndDecode在某些情况下识别效果不佳,但强调了图像预处理在提高识别率上的重要性,为后续笔记内容埋下伏笔。
摘要由CSDN通过智能技术生成

我们前面两课准备好了实验小平台,即一个MFC界面,左右各有一个Picture Control,左边设想放原始图,右边设想放效果图,中间放一个OpenCV图像处理的一些函数,学习并感性认知这些图像处理的知识对图片的实际影响。

今天学习笔记的题目需求是:

1,用OpenCV读取一个包含二维码的图片,原始图片显示在左边的Picture Control;

2,检测、识别这个二维码图片,画出二维码有效的ROI区域;

3,把第2点的结果图片显示在右边的Picture Control;

4,把第2点的二维码的解码值显示在底部的Edit Text里。

基本界面如图:

void CQRTestDlg::OnBnClickedBtnload()
{
	//ATL中的一个宏定义。用于编码转换(用的比较多的是CString向LPCWSTR转换)
	//该语句的内存不释放,不可用于循环中,
	USES_CONVERSION;
	cv::Mat mtSrc = cv::imread(W2A(fun_LoadImg()), 1);//fun_LoadImg()代码在上节课	
	DrawMat(mtSrc , IDC_STATIC1);//先完成需求1
    /*
	这
	中间
	得先
	空
	一大块
	留
	以后用,
    猜一猜
    这一段做啥用呢?
	*/
	QRCodeDetector qrDecoder = QRCodeDetector(); 
	cv::Mat mtStraightQR;
	vector<Point> ptROI;
    /*
    在OpenVC4之后,qrDecoder.detect和qrDecoder.qrDecoder.decode被detectAndDecode取代了
    detectAndDecode这2个参数是输出二维码ROI的4个点位坐标,
    第3个参数是把花里胡哨的的二维码解析成最纯粹、直白、无添加剂的二维码
    */
	CString qrData = CString(qrDecoder.detectAndDecode(mtSrc, ptROI, mtStraightQR).c_str());	//完成需求2
	
	if (qrData.GetLength()>0)//如果取值成功
	{		
		if (ptROI.size() == 4)
		{			
            //画出ROI
			rectangle(mtSrc, ptROI[0], ptROI[2], Scalar(0, 0, 255),2);
		}	
	}		
	DrawMat(mtSrc, IDC_STATIC2);//完成需求3,把图在Picture显示,这代码上节笔记有
	//DrawMat(mtStraightQR, IDC_STATIC2);//建议也试试显示Straight_QRCode的效果	
    GetDlgItem(IDC_EDIT1)->SetWindowText(qrData);//完成需求4	
}

至此,今日笔记作业完成。可以看到,OpenCV4的二维码识别的C++代码非常的简单。有兴趣的朋友可以试试看检测和识别二维码,单兵作战的detectAndDecode的识别成功率怎么样呢??

答案是光凭detectAndDecode来识别的效果很不好,只能识别那些不加修饰和杂项的二维码图片。

以上代码中间注释并空下来的那一大段,是告诉我们,在识别二维码动作前,是需要对图像进行预处理的。这也便是下一次笔记内容了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laolitou_1024

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值