PyTorch + openCV 车牌识别(一)
PyTorch + openCV 车牌识别(一)
- 注意
- 利用cv识别车牌并切割字符
注意
本项目仅是初学者学习pytorch过程中随手写的,有些地方不够严谨请谅解,仅供参考
利用cv识别车牌并切割字符
- 首先下载opencv包并导入一些需要的包
import cv2
import numpy as np
from PIL import Image
- 由于是用笔记本电脑,因此我们使用网上寻找的图片进行图像处理,我们导入该图片。
imread函数中放的是你图片的路径,我们先对图片尺寸进行统一规定,并对原图进行滤波。(滤波这个步骤并不是当时写的时候想到的,而是后面识别效果不佳所以进行一定程度的滤波)
img_init = cv2.imread(self.carlicense_content) # 加载原始图片
img_resize = cv2.resize(img_init, dsize=(1000, 600), fx=0, fy=0) # 重置图片尺寸
img_blur = cv2.blur(img_resize, (2, 2)) # 对图片进行降噪
- 通过对图片中车牌蓝色域的RGB三通道值进行采集,即可获得其颜色范围,然后依靠inRange()函数将车牌部分选择出来。
再把该色域内最大面积的部分框出来,便是车牌的区域,记录下矩形的四个角点。
当然,项目是用来练手的简单项目,所以不考虑透视变换等情况,因为我先择的图片视角都还算正。
lower_limi = np.array([80, 30, 0]) # 设置色域上下界
upper_limi = np.array([230, 110, 70])
img_limi = cv2.inRange(img_blur, lower_limi, upper_limi) # 选出指定色域(二值化,黑色:0,白色:255)
cont = cv2.findContours(img_limi, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2] # 找出色域外边界
c = max(cont, key=cv2.contourArea) # 在边界中找最大面积的区域
rect = cv2.minAreaRect(c) # 绘制出该区域最小外接矩形
box = cv2.boxPoints(rect) # 记录上述矩形四点坐标
- 当然,对于采集图片中某一像素点的RGB三通道值,需要用到鼠标回调函数。需要注意的是,三通道值的显示顺序依次是B,G,R。
def mouse_callback(event, x, y, flags, param):if event == cv2.EVENT_LBUTTONDBLCLK:print('BGR:', img_resize[y, x], 'x:', x, 'y:', y)cv2.setMouseCallback('IMG', mouse_callback)
- 在步骤2和3中,所有定义的图片均可用imshow()函数进行显示并验证调试,代码如下,img_resize可替换成其他变量名。
cv2.namedWindow('IMG', cv2.WINDOW_NORMAL)
cv2.imshow('IMG', img_resize)
cv2.waitKey(0)
- 实现上述功能后的效果如下图,可通过对IMG图片的鼠标回调函数,显示某像素点的RGB三通道值,因此可获得上述第3步中的上下限值。
7. 到此,可以通过色域识别在图中框出车牌的位置,如下图:
8. 我们将第3步里四个点的坐标用来扣出车牌,并存入另一个变量img_final中。再将新的车牌图片二值化。实现效果如下图:
img_final = img_resize[int(min(box[1][1], box[2][1])):int(max(box[0][1], box[3][1])), int(min(box[0][0], box[1][0])):int(max(box[2][0], box[3][0]))] # 圈出车牌
img_final_resize = cv2.resize(img_final, dsize=(200, 50), fx=0, fy=0)
lower_limi2 = np.array([100, 100, 100]) # 设置色域上下界
upper_limi2 = np.array([255, 255, 255])
img_final_bin = cv2.inRange(img_final_resize, lower_limi2, upper_limi2)
- 到此我们可以识别出车牌并进行二值化,接下来需要分割车牌中的每个字符。这方面内容我会放在该项目的第(二)章节说明。
PyTorch + openCV 车牌识别(一)相关推荐
- opencv车牌识别入门资料汇总
使用OpenCV和C++实现的车牌识别系统. http://download.csdn.net/detail/u014743238/7204477 使用VC++6.0做开发工具, 采用简单的SDI框架 ...
- 【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目
车牌识别基础功能演示 摘要:车牌识别系统(Vehicle License Plate Recognition,VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息(含汉字字符.英文字母.阿 ...
- c# opencv车牌识别_毕设有着落了!一套开源的,基于SpringBoot的车牌识别系统
阅读本文大概需要 4 分钟. 前言 这个项目是良月柒在逛社区时发现的,刚看到它,思绪直接被拉回了几年前,当初有同学的毕设就是停车场管理系统,关键的功能--车牌识别,连硬件都整上了,一整套流程跑下来,p ...
- c# opencv车牌识别_opencv +数字识别
现在很多场景需要使用的数字识别,比如银行卡识别,以及车牌识别等,在AI领域有很多图像识别算法,大多是居于opencv 或者谷歌开源的tesseract 识别. 由于公司业务需要,需要开发一个客户端程序 ...
- Python 基于 opencv 车牌识别系统的研究与实现
源码下载地址:https://download.csdn.net/download/gdutxiaoxu/87419195 原理简介 车牌字符识别使用的算法是opencv的SVM opencv的SVM ...
- 基于OpenCV车牌识别及轨迹跟踪
系统总体设计 本系统主要由三个模块构成分别是:图像采集模块,车牌识别模块和轨迹处理模块. 因为实验条件限制,所以实验时采用一个摄像头拍多个不同时间段的视频,代替多个摄像头的拍摄效果.右图中小矩形框代表 ...
- spring boot + maven + opencv 车牌识别系统,包含车牌检测、车牌号识别训练
yx-image-recognition 介绍 这是一个基于spring boot + maven + opencv 实现的图像识别及训练的Demo项目 包含车牌识别.人脸识别等功能,贯穿样本处理.模 ...
- python的opencv 车牌识别 开源_毕节进出口车牌识别系统怎么样
毕节进出口车牌识别系统怎么样 gzheu8il 毕节进出口车牌识别系统怎么样 系统拓扑图如下:该系统以社区中心机房为枢纽,有机的将智慧家居住户.社区数字化服务.物业数字化管理.社区智能化管理结合起来, ...
- opencv 车牌识别---新能源车牌处理(二值化后按位取反)
场景: 在对车牌号进行识别时,不能识别出新能源车牌的车牌号. 问题原因: 因为我们的识别模板都是黑底白字,新能源的车牌进行二值化处理后都是白地黑字. 模板: 新能源车牌原图(部分): 新能源车牌二 ...
最新文章
- 安装 Fedora 21 工作站后要做的10件事情
- 《解释性机器学习》笔记(五):Rule Fit 规则拟合
- Ubuntu使用——23(dock的美化)
- mybatis逆向工程生成的Example类的使用
- DSAPI多功能组件编程应用-HTTP监听服务端与客户端
- C#面向对象系列(2):构造函数的用法
- sql checksum_SQL Server中的CHECKSUM页面验证
- 写给我--过去,现在,未来
- 2021年十大热门编程语言
- Arduino 利用串口缓冲区监听的方式读取数据
- 视频教程-PO设计模式(精讲)-软件测试
- Mybatis的模糊查询写法
- 淘宝商品详情(新版)
- PyQt实现按钮控件的拖动效果,利用鼠标移动事件实现。
- php2twig,php twig是什么意思
- PIXEL C 未支持命令(remote: unsupported command)解决记录
- js vue 下载excel(.xls)文件
- 磨皮美白搞笑图片处理
- 球面图绘制函数-sphere
- [网鼎杯2018]Unfinish