利用python进行车牌识别

  1. 图像读取

  2. 图像增强

  3. 车牌位置识别

  4. 排除无用信息

  5. 文字提取

    文本提取没有进行cnn学习,识别度不高,要求车牌方向不太歪,字迹清晰

相关说明:

  1. 利用pip install 导入相关库:例如win+r—cmd—pip install numpy
  2. 利用python的pytesseract库以及tesseract下载链接识别文本(tesseract需要配置环境变量)

完整代码如下

import cv2
import imutils
import numpy as np
import pytesseractpytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
#获取图像
imgFile = 'D://Users/Lenovo/Desktop/trail picture/7.jpg'
img = cv2.imread(imgFile, cv2.IMREAD_COLOR)
img = cv2.resize(img, (620, 480))
#卷积模板
kernel_sharpen_2 = np.array([[1,1,1],[1,-7,1],[1,1,1]])
#卷积
output_2 = cv2.filter2D(img,-1,kernel_sharpen_2)
#显示锐化效果cv2.imshow('sharpen_2 Image',output_2)#停顿
if cv2.waitKey(0) & 0xFF == 27:cv2.destroyAllWindows()#灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#滤波
gray = cv2.bilateralFilter(gray, 13, 15, 15)
#边缘检测
edged = cv2.Canny(gray, 30, 200)
cv2.imshow('car',edged)
if cv2.waitKey(0) & 0xFF == 27:cv2.destroyAllWindows()#找轮廓
contours = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)contours = imutils.grab_contours(contours)contours = sorted(contours, key=cv2.contourArea, reverse=True)[:50]
screenCnt = None
#print(contours)#cv2.drawContours(img, contours,-1, (0, 0, 255), 3)#识别车牌
for c in contours:peri = cv2.arcLength(c, True)approx = cv2.approxPolyDP(c, 0.015 * peri, True)#print(approx)#print(len(approx))if len(approx) == 4:screenCnt = approxbreak#画框
if screenCnt is None:detected = 0print("No contour detected")
else:detected = 1if detected == 1:cv2.drawContours(img, [screenCnt], -1, (0, 0, 255), 3)
#print(screenCnt)
#cv2.imshow('car',img)
#cv2.waitKey(0)#去除无用信息
mask = np.zeros(gray.shape, np.uint8)
new_image = cv2.drawContours(mask, [screenCnt], 0, 255, -1, )
new_image = cv2.bitwise_and(img, img, mask=mask)#cv2.imshow('car',new_image)
#cv2.waitKey(0)#分割出来
(x, y) = np.where(mask == 255)
(topx, topy) = (np.min(x), np.min(y))
(bottomx, bottomy) = (np.max(x), np.max(y))
Cropped = gray[topx:bottomx + 1, topy:bottomy + 1]cv2.imshow('car',Cropped)
if cv2.waitKey(0) & 0xFF == 27:cv2.destroyAllWindows()text = pytesseract.image_to_string(Cropped ,config='--psm 11')
print("programming_fever's License Plate Recognition\n")
print("Detected license plate Number is:", text)
img = cv2.resize(img, (500, 300))
Cropped = cv2.resize(Cropped, (400, 200))
cv2.imshow('car', img)
cv2.imshow('Cropped', Cropped)if cv2.waitKey(0) & 0xFF == 27:cv2.destroyAllWindows()

有时间会对代码进行优化以及添加相关函数的用法

Python图像处理(车牌识别)简单相关推荐

  1. python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解)

    ①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...

  2. 数字图像处理——车牌识别(matlab)

    本次大报告利用MATLAB函数功能,设计和实现了一个车牌识别系统.车牌识别系统的基本原理为:将手机拍摄到的包含车辆牌照的图像输入到计算机中进行预处理,再对牌照进行搜索.检测.定位,并分割出包含牌照字符 ...

  3. QT+Python停车场车牌识别计费管理系统

    程序示例精选 Python停车场车牌识别计费管理系统 如需安装运行环境或远程调试,见文章底部微信名片! 前言 QT+Python是非常经典的窗体编程组合,功能完善,可视化界面美观易维护,这篇博客针对停 ...

  4. python 车牌识别简单_智能车牌识别 停车如此简单

    随着人们经济.生活水平的提高,我国民用汽车保有量不断攀升,产生了巨量的停车需求,而在国家"新基建"的政策推动以及市场需求的驱动下,停车产业将迎来更广阔的发展空间,智慧停车解决方案的 ...

  5. python 车牌识别简单_ZKTeco 智能车牌识别 停车如此简单

    随着人们经济.生活水平的提高,我国民用汽车保有量不断攀升,产生了巨量的停车需求,而在国家"新基建"的政策推动以及市场需求的驱动下,停车产业将迎来更广阔的发展空间,智慧停车解决方案的 ...

  6. 基于Python的车牌识别系统的实现

    目录 第1章 绪论 1 1.1研究背景与意义 1 1.2课题研究现状 1 1.3研究目标 1 1.4研究内容与论文组织结构 1 第2章 相关理论与关键技术 3 2.1计算机视觉概述 3 2.2 Ope ...

  7. 基于LabVIEW+python实现车牌识别智能系统的设计

    一.系统应用介绍 二.主要实现技术原理 2.1车辆检测 2.2车牌定位 2.3车牌进行字符分割 2.4牌照字符识别方法 三.技术实现 四.开发环境 4.1LabVIEW介绍及数据采集卡 4.2pyth ...

  8. 卷积神经网络算法python实现车牌识别_车牌识别算法之CNN卷积神经网络

    原标题:车牌识别算法之CNN卷积神经网络 随着我国经济的发展,汽车,特别是小轿车的数量越来越多,智能交通管理系统应运而生.车牌智能自动识别作为智能交通管理系统中的重要组成部分,在智能交通管理中发挥着越 ...

  9. python机器视觉车牌识别_机器视觉车牌识别

    机器视觉车牌识别 --车牌号识别系统研究课题 2018年7月10日,许昌学院信息工程(软件职业技术)学院"创出彩"机器视觉智能检测实践队第10天研究正式开展,由于老师有别的事情要忙 ...

  10. MATLAB--数字图像处理 车牌识别之简易识别程序

    车牌识别之简易识别程序 代码 I=imread('car2.jpg'); figure(1),imshow(I);title('原图') I1=rgb2gray(I);%功能是将真彩色图像转换为灰度图 ...

最新文章

  1. 实现一个网易云音乐的 BottomSheetDialog
  2. FPGA 和ASIC开发的区别
  3. android组件权限,Android中Permission权限机制的具体使用
  4. [Java多线程]-J.U.C.atomic包下的AtomicInteger,AtomicLong等类的源码解析
  5. java request payload_java 模拟 post request payload
  6. 转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)
  7. Flash 杂志《summer tree》 第六期发布
  8. CUDA out of memory. Tried to allocate 14763.13 GiB (GPU 3; 10.73 GiB total capacity; 165.28 MiB alre
  9. Maven——profile介绍
  10. 移动端实现蓝牙打印机打印_MBrush世界上最小的移动彩色打印机
  11. mysql myflash原理_如何利用 Myflash 解析 binlog ?
  12. L2TP连接result_code_avp: avp is incorrect size. 错误
  13. 在线算法交互、可视化与演示及应用(caffe 网络配置文件 .prototxt 的可视化)
  14. linux cpufreq 设置
  15. Leetcode-数据结构-1.两数之和
  16. Shrinkage Loss
  17. 配置rtools 4.0 https://cran.r-project.org/bin/windows/Rtools/
  18. MATLAB-非线性方程(组)求解
  19. Android应用发送短信的实现
  20. MODBUS功能码解释

热门文章

  1. 使用Hbuilder开发python
  2. Kinect深度图与摄像头RGB的标定与配准(文末总结不容错过)
  3. 删除所有用户数据!永久关闭
  4. 【CTF WriteUp】2023数字中国创新大赛网络数据安全赛道决赛WP(1)
  5. js将数字转换为汉字
  6. 二叉树的构造以及基本操作
  7. postman高级用法+Jenkins持续集成
  8. 关于征集全国信标委人工智能分委会知识图谱工作组成员单位的通知
  9. 软件工程导论第六版 第五章 总体设计知识点总结
  10. python正负数排序_带有负值的Python sort()问题