偶然間發現opencv4.0.0正式版已經發布了,聽說有二維碼檢測功能,就試了試。
目前還沒有發現自帶的文檔中關於二維碼檢測的示例,所以自己探索了下,把代碼記錄下。
話不多說,直接上代碼。
#include <iostream>
#include<opencv2\opencv.hpp>
using namespace cv;
int main()
{
//讀取本地的一張圖片便顯示出來
cv::Mat img = imread("1.jpg");
cv::QRCodeDetector QRdetecter;
std::vector<cv::Point> list;
cv::Mat res;
QRdetecter.detectAndDecode(img, list, res);
for (int i = 0; i < list.size(); i++)
{
if(i==3)
line(img, list[i], list[0], Scalar(0, 255, 0), 2);
else
line(img, list[i], list[i + 1], Scalar(0, 255, 0), 2);
}
imshow("測試窗口", img);
waitKey(0);
return 0;
}
其中,源圖爲
list中存放着檢測到的二維碼矩形框的四個頂點,畫上去之後,其效果如圖所示:
res中存放着二維碼圖片