一、前言

通过OpenCV的特征点线检测方法来检测车牌,使用高斯模糊、灰度化、Sobel算子、二值化、开运算等进行图像形态学处理,然后根据车牌的面积大小、长宽比等筛选出车牌并标记出来。

这只是一个简单的车牌检测,并不包含车牌号的识别。图片的每次处理依赖于前一次处理的结果。如果以下代码不能正确检测车牌的话可通过修改调用函数的参数来满足其他车牌检测的需求。

二、主要代码

#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
Mat srcImage, dstImage1, dstImage2;
String imagePath = "C:/Users/admin/Pictures/car2.jpg";
int main() {srcImage = imread(imagePath, 1);imshow("原图", srcImage);// 高斯模糊Mat gausImage = srcImage.clone();GaussianBlur(srcImage, gausImage, Size(3, 3), 0, 0);imshow("高斯模糊", gausImage);// 灰度化Mat grayImage = srcImage.clone();cvtColor(gausImage, grayImage, COLOR_BGR2GRAY);imshow("灰图", grayImage);// Sobel算子Mat sobelImage = srcImage.clone();Sobel(grayImage, sobelImage, CV_8UC1, 1, 0);imshow("Sobel算子", sobelImage);// 二值化Mat binaryImage = srcImage.clone();threshold(sobelImage, binaryImage, 90, 255, THRESH_BINARY);imshow("二值化", binaryImage);// 开运算(先腐蚀,再膨胀)
//      Mat morphologyExImage=srcImage.clone();
//      Imgproc.morphologyEx(binaryImage, morphologyExImage, Imgproc.MORPH_CLOSE, Imgproc.getStructuringElement( Imgproc.MORPH_RECT,new Size(1,1)));
//      HighGui.imshow("开运算", morphologyExImage);Mat erodeImage = srcImage.clone();erode(binaryImage, erodeImage, getStructuringElement(MORPH_RECT, Size(3, 2)));imshow("腐蚀", erodeImage);Mat dilateImage = srcImage.clone();dilate(erodeImage, dilateImage, getStructuringElement(MORPH_RECT, Size(22, 22)));imshow("膨胀", dilateImage);// 取轮廓,显示全部轮廓Mat flagImage = srcImage.clone();vector<vector<Point>> contours;Mat hierarchy ;findContours(dilateImage, contours, RETR_EXTERNAL, CHAIN_APPROX_NONE);drawContours(flagImage, contours, -1, Scalar(0, 255, 0));//绿线画出所有的轮廓imshow("轮廓", flagImage);//识别车牌(找出面积最大且宽高比例符合要求),仅对提供的两个车牌识别有效!!!double maxArea = 0;int targetIndex;for (int i = 1; i < contours.size(); i++) {double area = contourArea(contours[i]);Rect rect = boundingRect(contours[i]);double scaleWH = (double)rect.width / rect.height;//这个比例范围是目测的if (area > maxArea&&scaleWH > 1.5 && scaleWH < 3.5) {maxArea = area;targetIndex = i;}}//显示车牌轮廓Mat licenseImage = srcImage.clone();Rect r = boundingRect(contours[targetIndex]);rectangle(licenseImage,r,Scalar(0, 255, 0));imshow("车牌标记", licenseImage);waitKey(0);return 0;}

三、运行截图

处理流程:读入原图—>高斯模糊—>灰度化—>Sobel算子—>二值化—>开运算—>轮廓全标记—>根据特征筛选车牌—>显示车牌标记

车牌①:

【图片侵删】

车牌②:

(处理流程同上上,略)

四、后记

代码并不完善,仅供参考。形态学处理方式方法有很多,请自行查阅相关资料!

OpenCV实现简单的车牌检测、特征点线检测相关推荐

  1. opencv实战3: CascadeClassifier+Haar特征进行人脸检测

    1.级联分类器CascadeClassifier OpenCV官方文档:https://docs.opencv.org/3.4.3/d5/d54/group__objdetect.html 分类器: ...

  2. 开源项目:DRR(deepstream-ros-robot),针对pc主机端和nvidia-jetson边缘计算平台,实现了基于deepstream框架下的目标分类检测、车道线检测等,并配置了目标追踪

    开源项目: <DRR(deepstream-ros-robot)> 项目介绍: 本项目针对pc主机端和nvidia-jetson边缘计算平台,基于deepstream框架进行加速推理搭建了 ...

  3. MATLAB车道偏离检测,车道线检测

    MATLAB车道偏离检测,车道线检测 现有:69419619409089418stopped_126

  4. 视觉无人机高速公路违章检测之——车道线检测

    车道线检测在课题当中起着很重要的作用,但是大部分论文都是基于固定摄像头的车道线检测,而本课题是无人机视角,也许会有不一样,但是先拿一张近似的图片去仿真,然后找出问题难点,解决他,再试飞无人机去拍摄. ...

  5. 【车道线检测】车道线检测算法汇总

    文章目录 零. 概述 1. DataSet 2. 车道线检测难点 3. 数据增强 一.基于分割和辅助实例化信息的方法 1. HDMapNet: An Online HD Map Constructio ...

  6. 使用OpenCV实现车道线检测

    点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 图0 印度泰米尔纳德邦安纳马莱森林公路上的车道检测 本文源码:https://github. ...

  7. 实战教程 | 车道线检测项目实战,霍夫变换 新方法 Spatial CNN

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 此文按照这样的逻辑进行撰写.分享机器学习.计算机视觉的基础知识,接着我们以一个实际的项目,带领大家自己 ...

  8. 【深度学习】实战教程 | 车道线检测项目实战,霍夫变换 新方法 Spatial CNN

    此文按照这样的逻辑进行撰写.分享机器学习.计算机视觉的基础知识,接着我们以一个实际的项目,带领大家自己动手实践.最后,分享更多学习资料.进阶项目实战,这部分属于我CSDN上的专栏,最后会按照顺序给出相 ...

  9. 目标检测难题 | 小目标检测策略汇总

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 导读 在计算机视觉中,检测小目标是最 ...

最新文章

  1. python 基础 day3
  2. 爱立信华为MWC展前叫阵:5G成重头戏
  3. Elasticsearch之Mapping
  4. ADO.NET复习总结(5)--工具类SqlHelper 实现登录
  5. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...
  6. python管理技巧_8个经典的Python列表技巧,让你数据处理更简单!
  7. appium---【Mac】Appium-Doctor提示WARN:“ opencv4nodejs cannot be found”解决方案
  8. Linux LVM与磁盘配额详解
  9. java 单开程序_java生成jar包并且单进程运行的实例
  10. WINDOWS 2008 AD权限管理服务(ADRMS)完全攻略
  11. Linux 中断处理浅析
  12. Halocn OCR识别入门学习
  13. 无类别地址CIDR概述
  14. aspen plus大小_Aspen入门篇2—Aspen Plus 使用介绍
  15. 华为鸿蒙5g售价,华为首款5G手机售价公布,余承东透露鸿蒙将用于连接家庭设备...
  16. python3 messagebox_如何在Python3.4中正确实现tkMessageBox?
  17. Qt的环境与工具、信号与槽
  18. 导线水平角及边长观测实习记录
  19. 在Qt中解决word书签中只能从其后面插入文本的问题
  20. 彻底退出,刘强东转让所持京东股份;华为前三季研发费用超 1100 亿;腾讯会议部分功能开始收费 | EA周报...

热门文章

  1. 港科夜闻|香港科大委任郭毅可教授为首席副校长
  2. ubuntu添加新用户
  3. OSI七层模型以及各层的作用
  4. 搭建网站/APP最全准备攻略
  5. 详解const 用法
  6. gitlab的那些事儿
  7. Android 通过python实现自动化构建打包上传加固
  8. C语言数字图像处理---1.1图像的像素格式与图像读写
  9. Mtlab中函数histeq的使用及直方图的均衡化、规定化
  10. 【机器学习】 逻辑回归原理及代码