前言

哈喽!好酒不见,假期有点儿长哈(自己给自己放假,哈哈哈),今天正常更学习资料啦~

车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(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实战】纯手工代码打造车牌检测程序,秒变智能检测你值得拥有~(附源码)相关推荐

  1. Spark 3.0 发布了,代码拉过来,打个包,跑起来!| 附源码编译

    作者 | 敏叔V587 责编 | 徐威龙 封图| CSDN 下载于视觉中国 Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑 ...

  2. Spark3.0发布了,代码拉过来,打个包,跑起来!| 附源码编译

    作者 | 敏叔V587 责编 | 徐威龙 封图| CSDN 下载于视觉中国 Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑 ...

  3. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

  4. 【爬虫实战项目】Python爬虫批量旅游景点信息数据并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载旅游景点信息数据,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样 ...

  5. 取消预约的c语言代码大全,C语言机房机位预约系统课设(附源码).doc

    PAGE PAGE 1 C语言机房机位预约系统课设 项目说明 本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行.(书生) 项目运行 ...

  6. 用Python几行代码实现简单的人脸识别,10分钟完成(附源码)

    前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...

  7. HTML/css/cavas打造的来自程序员的专属春节祝福【内含源码与运行方式】

    转眼2022年了,回想过去的一年,这一年过的挺快,疫情使得过去的一年注定不平凡,时至今日,国内的情况基本上恢复的都差不多了,戴口罩也成了常态,但是什么也挡不住春节给人带来的热情,很快就到了烟花满天飞的 ...

  8. 纯HTML加CSS实现3D立体动态相册【超简单、附源码】

    近日,收到一男粉丝私信,具体如下: PS:在跟他聊天过程中,我不该笑的,哪个男同胞没有这么让人心疼的一刻呢.所以,在此祝愿他能早日哄好他的女朋友,加油,奥利给~~~ 于是,在他的万般焦急等待下,为他量 ...

  9. VC++通过查看ReactOS开源代码,解决完整路径dll加载失败问题(附源码)

    目录 1.问题实例 2.到cmd.exe中用regsvr32去手动注册控件

  10. python樱花代码_武大学生用Python敲出樱花开放(附源码)

    导读:据<北京日报>消息,3月25日零时起,湖北除武汉市地区将解除离鄂通道管控.4月8日零时起,武汉市也将解除离鄂通道管控. 今年的武汉大学没有了往年的人山人海,但是美丽的樱花依然在春天里 ...

最新文章

  1. 分布式锁的使用与注意事项
  2. 可自动关闭的alert方法
  3. springboot自动配置流程
  4. 进程间通信--无名管道(pipe)
  5. bootstrap下拉框分页_【Bootstrap】 bootstrap-select2下拉菜单插件
  6. kafka幂等producer
  7. magento导入导出Custom Options, Tier Prices and Grouped Products
  8. RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程(含安装MPFR、GMP、MPC过程)
  9. 特征值与特征向量及其应用
  10. 逻辑数据库设计 - 需要ID(谈主键Id)
  11. 用python写数字出现的次数_python – 计算每个数字的出现次数
  12. My Fifty-fifth Page - 子集 - By Nicolas
  13. 两人分组问题:显示In function 'int main()'求大佬解惑
  14. 用c语言实现文本文件中的字符筛选分析(二)
  15. android ui web,AndroidUI4Web:最适合Android开发者的WebApp框架
  16. K-mean(多维度)聚类算法(matlab代码)
  17. Qt复现pure virtual method called报错,与解决办法
  18. Vue基础之指令与过滤器
  19. 二叉树的遍历算法(一 递归算法)
  20. Linux会产生磁盘碎片吗,Linux不需要磁盘整理:碎片的来源

热门文章

  1. 立创EDA导出Altium Designer的pcb文件没有没有显示飞线
  2. Pandas 报错:index must be monotonic increasing or decreasing
  3. C++语言的15个晦涩特性
  4. 超级表格全新升级,这些功能你不可能在其他软件上看到
  5. Java代码审计漏洞挖掘(入门)
  6. Python爬虫系列之某了么h5签名sign算法
  7. android package_added 界面更新,如何在Android Oreo上注册ACTION_PACKAGE_ADDED和ACTION_PACKAGE_REMOVED?...
  8. Qt5.12.6 + VS2019添加图片资源文件
  9. WIN10网络打印机-打印失败解决方案
  10. AntV G6 自定义节点图形