纯手码 | 基于OpenCV的车牌识别(Sobel、颜色定位),绝对实用

本文介绍了基于OpenCV的车牌识别技术,包括Sobel边缘检测和颜色定位方法。通过高斯模糊、灰度化、边缘化、二值化和闭操作等步骤进行降噪和候选车牌定位。接着使用HSV颜色模型筛选蓝色区域,并结合Sobel定位结果。最终利用SVM对候选车牌进行评估,采用HOG特征提取进行模型训练。
摘要由CSDN通过智能技术生成

车牌识别大体上需要经历过Sobel定位、颜色定位、SVM对定位来的候选车牌进行评测,给出评分,最后通过提取HOG特征按照训练模型进入ANN识别。

这一章节介绍 定位相关的逻辑代码,其中定位用到 Sobel定位(边缘检测定位), 颜色定位:对应代码里的CarSobelPlateLocation,CarColorPlateLocation;两者定位后得到一些候选的图片,把这些图片送去SVM进行评测,SVM基于HOG提取边缘信息特征,HOG类同之前处理纹理特征的LBP,项目代码在Clion上开发的。

Sobel定位

CarSobelPlateLocation,通过以下的一些步骤进行降噪:

  • 高斯模糊

  • 灰度化

  • 边缘化

  • 二值化

  • 闭操作

高斯模糊

//预处理 :去噪 让车牌区域更加突出
    Mat blur;
    //1、高斯模糊(平滑) (1、为了后续操作 2、降噪 )
    GaussianBlur(src, blur, Size(5, 5), 0);
    //imshow("高斯模糊",blur);

灰度化

Mat gray;
    //2、灰度化 去掉颜色 因为它对于我们这里没用  降噪
    cvtColor(blur, gray, COLOR_BGR2GRAY);
    imshow("灰度", gray);

边缘化

Mat sobel_16;
    //3、 边缘检测 让车牌更加突出  在调用时需要以16位来保存数据 在后续操作 以及显示的时候需要转回8位
    Sobel(gray, sobel_16, CV_16S, 1, 0);
    //转为8位
    Mat sobel;
    convertScaleAbs(sobel_16, sobel);
    imshow("Sobel", sobel);

二值化

//4. 二值化 黑白
    Mat shold;
    //大律法   最大类间算法
    threshold(sobel, shold, 0, 255, THRESH_OTSU + THRESH_BINARY);
    imshow("二值", shold);

闭操作

//5、闭操作
    // 将相邻的白色区域扩大 连接成一个整体
    Mat close;
    Mat element = getStructuringElement(MORPH_RECT, Size(17, 3));
    morphologyEx(shold, close, MORPH_CLOSE, element);
    imshow("闭操作", close);

以上的操作是在处理降噪,第六步初步赛选。

第六步:最大面积、最小面积.宽高逼。

//6、查找轮廓
    //获得初步筛选车牌轮廓================================================================
    //轮廓检测
    vector< vector<Point>> contours;
    //查找轮廓 提取最外层的轮廓  将结果变成点序列放入 集合
    findContours(close, contours, RETR_EXTERNAL, CHAIN_APPROX_NONE);

    //遍历
    vector<RotatedRect> vec_sobel_roi;
    for(vector<Point> point:contours){
        RotatedRect rotatedRect= minAreaRect(point);
        //rectangle(sr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值