微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
前言
基本原理
https://github.com/WeChatCV/opencv_3rdparty/tree/wechat_qrcode
QR码解码演示
基于OpenCV4.8的二维码扫码演示
cv::Mat src = cv::imread("D:/opencvxuetang.png");
// 初始化
std::shared_ptr detector(new cv::QRCodeDetector());
std::vector pts;
std::vector<std::vector> contours;
// 检测QR码
detector->detect(src, pts);
std::cout << "boxes: "<< pts << std::endl;
contours.push_back(pts);
// 解析QR码
std::string codetxt = detector->decode(src, pts);
std::cout << "decode text: " << codetxt << std::endl;
cv::drawContours(src, contours, -1, cv::Scalar(0, 0, 255), 2, 8);
cv::imshow("QR Code解码", src);
一维条码解码演示
实现代码如下:
// 定义
cv::Mat image = cv::imread("D:/barcode.png");
std::shared_ptr barcode_detector(new cv::barcode::BarcodeDetector());
// 检测
vector corners;
barcode_detector->detect(image, corners);
std::cout << "barcode location: " << corners << std::endl;
// 解码
std::string barcode_txt = barcode_detector->decode(image, corners);
std::cout << "decode text: " << barcode_txt << std::endl;
// 显示
contours.clear();
contours.push_back(corners);
cv::drawContours(image, contours, -1, cv::Scalar(0, 0, 255), 2, 8);
cv::imshow("barcode", image);
学习 OpenCV4.8 图像与视频分析、特征提取与DNN部分,请扫码查看视频教程