二维码检测

该博客介绍了二维码的检测方法,通过形态学操作找到二维码的大致位置,利用轮廓的嵌套关系定位二维码的三个角,结合轮廓的长宽比和直角三角形特性提高定位准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先用形态学去膨胀整图,使二维码成为一个黑块,定位出这个正方形即获得二维码大致位置。 

二维码的三个角都有2个嵌套关系的矩形,以下根据轮廓嵌套关系去定位这3个点:

Mat imgSrc=imread("qrcode.jpg");
if(imgSrc.empty())
{
    cout<<"Load image error!!!"<<endl;
    return -1;
}
Mat imgGray,imgBin;
cvtColor(imgSrc,imgGray,COLOR_BGR2GRAY);
threshold(imgGray,imgBin,0,255,THRESH_BINARY_INV | THRESH_OTSU);
vector<vector<Point>> contours,contours2;
vector<Vec4i> hierarchy;
findContours(imgBin.clone(),contours,hierarchy,CV_RETR_TREE,CV_CHAIN_APPROX_NONE);
size_t nSize=contours.size();
int c=0,ic=0,area=0;
int parentIdx=-1;
for(size_t i=0;i<nSize;i++)
{
    if (hierarchy[i][2] != -1) //有子轮廓
    {
        if(ic==0) //TREE结构时,第一个父轮廓是最外层轮廓
            parentIdx = i;
        ic++;
    }
    else if(hierarchy[i][2] == -1)//无子轮廓
    {
        ic = 0;
        parentIdx =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值