OpenCV基于颜色信息的车牌提取

车牌提取的方法主要有:基于纹理特征分析法、基于数学形态学分析法、基于边缘检测的定位分析法、基于小波分析的定位分析法、基于彩色信息的定位分析法,本文采用的方法是基于颜色信息的定位分析法。
本文主要参考了以下这一篇博客,该博客是用C++编写的算法,我参考其方法用Python实现了一遍。
参考的博客(C++编写的算法)
在代码中,我详细地注释了每一个步骤流程以及一些注意事项,看注释应该比较容易理解,代码可以直接使用。
注意把cv2.imread()函数中的图片路径修改一下,原始图片我放在了博客的最后。

#基于颜色信息的车牌提取
#识别普通民用小型车,车牌号是蓝底白字,正常光照下蓝色车牌的BGR大约是(138,63,23);车牌形状是矩形,长宽比是3:1
import cv2
import numpy as np#读取车辆原始图像
car_original = cv2.imread('C:\\Users\\Administrator\\Desktop\\car.jpg')
rows,cols,td = car_original.shape  #图像的行/高、列/宽、通道数
#print(rows,cols,td)  #输出图像的大小,方便对图像的尺寸有一个了解
cv2.imshow('car_original',car_original)  #显示原始图像
#基于颜色信息进行二值化
#正常光照下蓝色车牌的BGR大约是(138,63,23),由于存在一定的偏差,在二值化的时候设置一个范围,在范围之内
#的颜色(车牌的蓝色背景)设置成白色,否则设置成黑色。
blue_goal = 138
green_goal = 63
red_goal = 23
threshold = 50  #二值化的时候,通过设置一个阈值来设置一个范围
#注意:OpenCV中彩色图像的像素值是BGR格式,即(blue,green,red)
for i in range(0,rows):for j in range(0,cols):B = car_original[i,j,0]G = car_original[i,j,1]R = car_original[i,j,2]if abs(B-blue_goal)<threshold and abs(G-green_goal)<threshold and abs(R-red_goal)<threshold:car_original[i,j,0] = 255car_original[i,j,1] = 255car_original[i,j,2] = 255else:car_original[i,j,0] = 0car_original[i,j,1] = 0car_original[i,j,2] = 0
cv2.imshow('car_binarization',car_original)  #显示基于颜色信息二值化之后的图像
#接下来进行形态学处理
#先膨胀再腐蚀
kernel = np.ones((3,3),np.int8)
dilation = cv2.dilate(car_original,kernel,iterations=1)  #膨胀一次
dilation = cv2.dilate(dilation,kernel,iterations=1)  #再膨胀一次
dilation = cv2.dilate(dilation,kernel,iterations=1)  #再膨胀一次
cv2.imshow('car_dilation',dilation)  #膨胀三次之后,可以看出车牌矩形区域内全部是白色
#再腐蚀三次
erosion = cv2.erode(dilation,kernel,iterations=1)
erosion = cv2.erode(erosion,kernel,iterations=1)
erosion = cv2.erode(erosion,kernel,iterations=1)
cv2.imshow('car_erosion',erosion)  #形态学处理之后最终得到的图像
#形态学处理之后的图像还是三通道的黑白图,通过灰度化转换成单通道的黑白图
car = cv2.cvtColor(erosion,cv2.COLOR_BGR2GRAY)
#查找轮廓
contours,hierarchy = cv2.findContours(car,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for c in contours:x,y,w,h = cv2.boundingRect(c)  #轮廓的边界矩形,x,y是矩形左上角的坐标,w,h是矩形的宽度和高度if w>60 and h>20:  #如果当前的这个轮廓区域足够大,它一定是车牌号矩形区域。# 如果原始图像有大面积的蓝色背景,例如车的颜色是蓝色的,则可以设置w和h的上限值,即min<w<max and min<h<maxx_goal = xy_goal = yw_goal = wh_goal = hgoal = c
car_goal = cv2.imread('C:\\Users\\Administrator\\Desktop\\car.jpg')
cv2.rectangle(car_goal,(x_goal,y_goal),(x_goal+w_goal,y_goal+h_goal),(0,255,0),2)  #把车牌号在原始图像上标记出来
cv2.imshow('goal',car_goal)
cv2.waitKey(0)

下图是代码中使用的原始图片car.jpg

OpenCV基于颜色信息的车牌提取相关推荐

  1. Python OpenCV基于颜色通道分离法去除图片中的红色印章

    最近一段时间的工作都是研究如何去除图片中的红色印章,在网上查找了大量的大佬写过的方法,发现大多数是采取颜色通道分离法来做,并且效果还不错.站在前人的肩膀上,我又做了些许调整,谈不上是改进,但是能应对更 ...

  2. 基于内容的图像检索系统设计与实现--颜色信息--纹理信息--形状信息--PHASH--SHFT特征点的综合检测项目,包含简易版与完整版的源码及数据!

    百度云提取源码以及数据包,直接下载压缩包解压就可以使用,数据就在压缩包文件dataset中. 简化版:只有-颜色信息–纹理信息–形状信息–PHASH–SHFT特征点的综合检测 [百度云链接,提取码:6 ...

  3. C++毕业设计——基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码)——车牌定位和识别系统

    基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现,文章末尾附有本毕业设 ...

  4. 第一部分 利用opencv基于hsv颜色的目标提取效果和python代码

    因为做毕设,想找个地方记录一下毕设当初写的东西. 第一部分,HSV模型进行颜色提取 先放效果图: 图1 左右摄像头采集到的乒乓球图像 图 2 HSV模型颜色提取器 图 2 HSV模型提取的效果图 提取 ...

  5. 数字图像处理——大作业 基于车道信息的违法车辆车牌识别

    数字图像处理--大作业 基于车道信息的违法车辆车牌识别 一.车牌识别研究现状与分析 二.车牌识别算法原理 2.1 车牌定位 2.1.1 基于RGB阈值的车牌区域初定位 2.1.2 基于数学形态学的车牌 ...

  6. OpenCV(项目)车牌识别1 -- 车牌提取(形态学)

    目录 一.形态学车牌提取(简单:单情景) 1.读取图片,转灰度图 2.提取轮廓(Sobel算子提取y方向边缘) 3.自适应二值化 4.闭运算处理,把图像闭合.揉团,使图像区域化 5.腐蚀/膨胀去噪得到 ...

  7. 【python ++ opencv + pytorch 】车牌提取、分割、识别

    话不多说,先看最后成果图(如果想要全部工程,文章最后我会把github链接放上): 可以看到最终的识别车牌号码是:苏G99999. 其实前年冬天偶然想着用c++来做一个小项目,然后就用 c++ ope ...

  8. matlab中caitu_tiqu,Matlab平台基于颜色的车牌识别程序

    Matlab平台基于颜色的车牌识别程序 matlab 2020-11-18 下载地址 https://www.codedown123.com/51252.html Matlab平台基于颜色的车牌识别程 ...

  9. 基于Adaboost算法的车牌检测在OpenCV上的研究与实现

    目录结构 E:\Adaboost\ ---------positive\               //正样本文件夹 ---------pimages\       //正样本图片所在文件夹 --- ...

最新文章

  1. 独立服务器和虚拟服务器的区别,BlueHost虚拟主机与独立服务器的主要区别
  2. 车联网技术对中老年人吸引力更大
  3. C语言数据段分类,13.2.1 段的分类
  4. JQuery中的一些重要方法
  5. M1 三合一机床电路故障检测
  6. 1个工具,4个技巧,就能高效开发各种报表!
  7. 聊聊用于特征处理的tsfresh
  8. 热传递物理模型matlab,简单传热学计算机分析MatlabPDE二维不稳态焊接热传导求解.PPT...
  9. 第28件事 挖掘用户真实需求的6大撒手锏
  10. JAVA - 守护线程(Daemon Thread)
  11. 大数据_MapperReduce_Hbase相关面试题_补充说明---Hbase工作笔记0030
  12. Linux下用vi 打开文件出现乱码
  13. eclipse中svn插件的工程不能与svn资源库同步的解决方法
  14. data spring 指定时区_听说过spring-data-jdbc么?来个最佳实践
  15. TI TMS570LC43xx 裸机开发快速上手
  16. Eplan破解文件名称说明:
  17. 简单实现图片转彩色字符画
  18. 『深度实战』天池小目标检测大赛·宫颈癌风险智能诊断推荐
  19. MediaSession框架全解析
  20. mysql如何创建用户代码_Mysql 创建用户 受权_mysql

热门文章

  1. cisco中的管道符号(include begin section)
  2. AOV网络与AOE网络
  3. 小米android one电池,小米A1(小米5X)成为最佳Android One设备
  4. 上网认证(锐捷睿易篇)
  5. 你家电器联网要几步?OneOS无感配网能力介绍
  6. 使用AndroidStudio优雅的敲代码
  7. 极光大数据:2018年5月专车市场研究报告
  8. 【机器学习】聚类算法、社区发现
  9. 如何下载和平里街道卫星地图高清版大图
  10. AutoCAD .NET开发(使用 ActiveX® 自动操作及支持 COM 的语言c#)