【Opencv实战】纯手工代码打造车牌检测程序,秒变智能检测你值得拥有~(附源码)
前言
哈喽!好酒不见,假期有点儿长哈(自己给自己放假,哈哈哈),今天正常更学习资料啦~
车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的
检测,除此之外
像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会 用到。
今天小编就教大家写一款简易款的车牌检测系统,希望大家喜欢的点点关注啦~mua!
正文
1)开发工具
本文用到的环境:Python3.6、Pycharm社区版、Opencv模块、等自带的就不展示。
pip install -i https://pypi.douban.com/simple/ +模块名
2)原理简介
注意这不是车牌号识别,是车牌检测。
因为车牌形状比较单一,所以我参考了一些简单的传统算法实现的,没有使用深度学习。效果比较
一般。不适用于复杂环境下的车牌检测。
直接调的OpenCV的函数接口,没有从0开始实现,所以总体技术含量较低。
3)流程如下
Step1:
对图片进行一些预处理,包括灰度化、高斯平滑、中值滤波、Sobel算子边缘检测等等。
Step2:
利用OpenCV对预处理后的图像进行轮廓查找,然后根据一些参数判断该轮廓是否为车牌轮廓。
使用演示
在cmd窗口运行detect.py文件即可。
使用前请先指定需要检测的图片路径:
4)源码展示
# python车牌检测 # Author: Charles import cv2
import numpy as np# 形态学处理
def Process(img):# 高斯平滑gaussian = cv2.GaussianBlur(img, (3, 3), 0, 0, cv2.BORDER_DEFAULT)# 中值滤波median = cv2.medianBlur(gaussian, 5)# Sobel算子# 梯度方向: xsobel = cv2.Sobel(median, cv2.CV_8U, 1, 0, ksize=3)# 二值化ret, binary = cv2.threshold(sobel, 170, 255, cv2.THRESH_BINARY)# 核函数element1 = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 1))element2 = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 7))# 膨胀dilation = cv2.dilate(binary, element2, iterations=1)# 腐蚀erosion = cv2.erode(dilation, element1, iterations=1)# 膨胀dilation2 = cv2.dilate(erosion, element2, iterations=3)return dilation2
def GetRegion(img):regions = []# 查找轮廓_, contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)for contour in contours:area = cv2.contourArea(contour)if (area < 2000):continueeps = 1e-3 * cv2.arcLength(contour, True)approx = cv2.approxPolyDP(contour, eps, True)rect = cv2.minAreaRect(contour)box = cv2.boxPoints(rect)box = np.int0(box)height = abs(box[0][1] - box[2][1])width = abs(box[0][0] - box[2][0])ratio =float(width) / float(height)if (ratio < 5 and ratio > 1.8):regions.append(box)return regionsdef detect(img):# 灰度化gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)prc = Process(gray)regions = GetRegion(prc)print('[INFO]:Detect %d license plates' % len(regions))for box in regions:cv2.drawContours(img, [box], 0, (0, 255, 0), 2)cv2.imshow('Result', img)cv2.imwrite('result.jpg', img)cv2.waitKey(0)cv2.destroyAllWindows()
5)效果展示
01:原图
效果图:
02:原图
效果图:
总结
好啦,本次文章就到这里啦——
车牌检测和车牌识别其实算是很成熟的技术了。所以我做的仅代表菜鸟级水平~
每天进步一点点, 你也可以跟我一起坚持把~
✨完整的素材等:滴滴我吖!或者点击文末公众号自取免费拿的哈~
【Opencv实战】纯手工代码打造车牌检测程序,秒变智能检测你值得拥有~(附源码)相关推荐
- Spark 3.0 发布了,代码拉过来,打个包,跑起来!| 附源码编译
作者 | 敏叔V587 责编 | 徐威龙 封图| CSDN 下载于视觉中国 Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑 ...
- Spark3.0发布了,代码拉过来,打个包,跑起来!| 附源码编译
作者 | 敏叔V587 责编 | 徐威龙 封图| CSDN 下载于视觉中国 Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑 ...
- 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...
- 【爬虫实战项目】Python爬虫批量旅游景点信息数据并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载旅游景点信息数据,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样 ...
- 取消预约的c语言代码大全,C语言机房机位预约系统课设(附源码).doc
PAGE PAGE 1 C语言机房机位预约系统课设 项目说明 本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行.(书生) 项目运行 ...
- 用Python几行代码实现简单的人脸识别,10分钟完成(附源码)
前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...
- HTML/css/cavas打造的来自程序员的专属春节祝福【内含源码与运行方式】
转眼2022年了,回想过去的一年,这一年过的挺快,疫情使得过去的一年注定不平凡,时至今日,国内的情况基本上恢复的都差不多了,戴口罩也成了常态,但是什么也挡不住春节给人带来的热情,很快就到了烟花满天飞的 ...
- 纯HTML加CSS实现3D立体动态相册【超简单、附源码】
近日,收到一男粉丝私信,具体如下: PS:在跟他聊天过程中,我不该笑的,哪个男同胞没有这么让人心疼的一刻呢.所以,在此祝愿他能早日哄好他的女朋友,加油,奥利给~~~ 于是,在他的万般焦急等待下,为他量 ...
- VC++通过查看ReactOS开源代码,解决完整路径dll加载失败问题(附源码)
目录 1.问题实例 2.到cmd.exe中用regsvr32去手动注册控件
- python樱花代码_武大学生用Python敲出樱花开放(附源码)
导读:据<北京日报>消息,3月25日零时起,湖北除武汉市地区将解除离鄂通道管控.4月8日零时起,武汉市也将解除离鄂通道管控. 今年的武汉大学没有了往年的人山人海,但是美丽的樱花依然在春天里 ...
最新文章
- 分布式锁的使用与注意事项
- 可自动关闭的alert方法
- springboot自动配置流程
- 进程间通信--无名管道(pipe)
- bootstrap下拉框分页_【Bootstrap】 bootstrap-select2下拉菜单插件
- kafka幂等producer
- magento导入导出Custom Options, Tier Prices and Grouped Products
- RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程(含安装MPFR、GMP、MPC过程)
- 特征值与特征向量及其应用
- 逻辑数据库设计 - 需要ID(谈主键Id)
- 用python写数字出现的次数_python – 计算每个数字的出现次数
- My Fifty-fifth Page - 子集 - By Nicolas
- 两人分组问题:显示In function 'int main()'求大佬解惑
- 用c语言实现文本文件中的字符筛选分析(二)
- android ui web,AndroidUI4Web:最适合Android开发者的WebApp框架
- K-mean(多维度)聚类算法(matlab代码)
- Qt复现pure virtual method called报错,与解决办法
- Vue基础之指令与过滤器
- 二叉树的遍历算法(一 递归算法)
- Linux会产生磁盘碎片吗,Linux不需要磁盘整理:碎片的来源
热门文章
- 立创EDA导出Altium Designer的pcb文件没有没有显示飞线
- Pandas 报错:index must be monotonic increasing or decreasing
- C++语言的15个晦涩特性
- 超级表格全新升级,这些功能你不可能在其他软件上看到
- Java代码审计漏洞挖掘(入门)
- Python爬虫系列之某了么h5签名sign算法
- android package_added 界面更新,如何在Android Oreo上注册ACTION_PACKAGE_ADDED和ACTION_PACKAGE_REMOVED?...
- Qt5.12.6 + VS2019添加图片资源文件
- WIN10网络打印机-打印失败解决方案
- AntV G6 自定义节点图形
作者 | 敏叔V587 责编 | 徐威龙 封图| CSDN 下载于视觉中国 Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑 ...
作者 | 敏叔V587 责编 | 徐威龙 封图| CSDN 下载于视觉中国 Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑 ...
前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...
前言 今天给大家介绍的是Python爬虫批量下载旅游景点信息数据,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样 ...
PAGE PAGE 1 C语言机房机位预约系统课设 项目说明 本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行.(书生) 项目运行 ...
前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...
转眼2022年了,回想过去的一年,这一年过的挺快,疫情使得过去的一年注定不平凡,时至今日,国内的情况基本上恢复的都差不多了,戴口罩也成了常态,但是什么也挡不住春节给人带来的热情,很快就到了烟花满天飞的 ...
近日,收到一男粉丝私信,具体如下: PS:在跟他聊天过程中,我不该笑的,哪个男同胞没有这么让人心疼的一刻呢.所以,在此祝愿他能早日哄好他的女朋友,加油,奥利给~~~ 于是,在他的万般焦急等待下,为他量 ...
目录 1.问题实例 2.到cmd.exe中用regsvr32去手动注册控件
导读:据<北京日报>消息,3月25日零时起,湖北除武汉市地区将解除离鄂通道管控.4月8日零时起,武汉市也将解除离鄂通道管控. 今年的武汉大学没有了往年的人山人海,但是美丽的樱花依然在春天里 ...