OpenCV4引入了二维码识别,函数为cv::QRCodeDetector
,用起来相对简单,本文附c++版本OpenCV二维码识别的程序。
实测效果:
原图:
效果图:
识别结果为:123456789OCR
#include "opencv2/opencv.hpp"
#include
int main(int argc, char* argv[])
{
//读图、预处理
cv::Mat img = cv::imread("1.png");
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_RGB2GRAY);
//实例化二维码的类
cv::QRCodeDetector QRdetecter;
std::vector<cv::Point> list;
cv::Mat QR_img;
//执行二维码识别
bool b = QRdetecter.detect(gray, list);
//if (b)
//{
// string str = QRdetecter.decode(gray, list);
// std::cout <<"识别结果:"<< str << std::endl;
//}
std::string str = QRdetecter.detectAndDecode(gray, list, QR_img);
std::cout <<"识别结果:"<< str << std::endl;
//绘制二维码区域
for (int j = 0; j < list.size(); j++)
{
if (j == 3)
line(img, list[j], list[0], cv::Scalar(0, 255, 0), 2);
else
line(img, list[j], list[j + 1], cv::Scalar(0, 255, 0), 2);
}
//显示
cv::namedWindow("result_img", 0);
imshow("result_img", img);
if (QR_img.data)
{
cv::namedWindow("QR_img", 0);
imshow("QR_img", QR_img);
}
cv::waitKey(0);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)