大四了,毕业设计选题:车牌识别,记录下整个过程吧。
车牌识别主要步骤:车牌定位、字符分割和字符识别。
TensorFlow 安装包(大家可以去清华的镜像网站下载)镜像太棒了
镜像地址:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/tensorflow/
测试安装是否成功
安装Keras语句:pip install keras==2.0.8
import tensorflow as tf
hello = tf.constant("Hello, TensorFlow!")
sess = tf.Session()
print(sess.run(hello))
图片cr.(亲测可行!!)Tensorflow安装在导入模块时会出现ImportError: DLL load failed: 找不到指定的模块的问题
尝试在VS2017上配置一下OpenCV,运行一个小程序,为后面打基础,加油!
1.**OpenCV:**我的电脑→属性→高级系统设置→系统变量→Path→指向OpenCV的bin文件路径
2.VS属性:
文件→新建→项目→Visual C++→空项目
源文件→添加→新建项→Visual C++→C++文件
找到“属性”,快捷键:Alt+Enter。
选中“Project1”(不是解决方案哦)
在展开的属性页找到包含目录,根据自己的路径,添加下面俩个路径:
D:\…\opencv\build\include
D:\…\opencv\build\include\opencv2
**注意:**此处最好加上D:\…\opencv\build\include\opencv这个路径,不加可能出现无法找到源,#include "cv.h"和源#include “highgui.h”。
找到库目录,根据自己的路径,添加lib文件的路径:
D:\…\opencv\build\x64\vc14\lib
属性页→链接器→输入→附加依赖项:
添加opencv_world331d.lib;opencv_world331d_1.lib(注意要用分号隔开)
注:331是版本号,看这个Blogvs2017和opencv4.1.1的配置出现了下图中的错误。
原因:OpenCV 441是高版本的 我加载了低版本3331的.lib。但不知道为啥改成331后,还是不行,也就是上图中的错误。后来在这篇博文LNK1104 的评论下一位博主提供的方法有效,感谢。
我的路径:D:\SoftWare\OpenCV\WIndows\opencv\build\x64\vc14\lib*d.lib
属性页→链接器→常规→附加库目录:
添加路径:D:\…\opencv\build\x64\vc14\lib(根据自己的实际情况来)
#include
using namespace cv;
int main()
{
Mat img = imread("Project1.PNG");
imshow("【载入的图片】", img);
waitKey(6000);
}
谢谢博主们,希望自己加油。
抓住车牌特征,进行车牌提取。对于我国的车牌主要有以下特征:
a.车牌部分是矩形;
b.车牌具有特定的长宽比;
c.车牌的面积一定;
目前国内汽车牌照有六种类型:
①大型民用汽车所用的黄底黑字牌照;
②小型民用汽车所用的蓝底白字牌照;
③军队或武警专用汽车的白底红字、黑字牌照;
④使、领馆外籍汽车的黑底白字牌照;
⑤试车和临时牌照是白底红字,且数字前分别标有“试”和“临时”字标志;
⑥汽车补用牌照是白底黑字。
对于车前牌照,其尺寸均为44cm长,14cm宽,共有7个或8个字符。民用汽车牌照上有省、直辖市、自治区的名称和发证照及监督机关的代号,编号是英文大写字母,接着是一个点“.”,后面的汽车编号,一般为5位数字,即从00001-99999。编号超过10万时,就由A、B、C等英文字母代替,即A代表10万,B代表11万,C代表12万,最后一个字母Z代表33万。英文字母中的I和O一般避而不用,以免和数字中的1和0混淆。使、领馆的外籍汽车牌照上的小数字是建交国的代号,与所在地区的监管编号无关。(以上信息来源:汽车牌照定位研究综述_2002年发表和百度知道)
因此从人的视觉特点出发,车牌目标区域具有如下特点:
① 车牌底色往往与车身颜色、字符颜色有较大差异;
②车牌有一个连续或由于磨损而不连续的边框,车牌内字符有多个,基本呈水平排列,所以在牌照的矩形区域内存在较丰富的边缘,呈现出规则的纹理特征;
③ 车牌内字符之间的间隔比较均匀,字符和牌照底色在灰度值上存在跳变,而字符本身与牌照底的内部有较均匀的灰度;
④不同图像中的牌照的具体大小、位置不确定,但其长度变化有一定范围,存在一个最大和最小长宽比。
根据这些特点,可以在灰度图像的基础上提取相应的特征。(以上信息来源:汽车牌照定位研究综述_2002年发表)
车牌识别中去噪与字符识别算法的研究——一篇完整的论文
1.新建MFC,基于对话框应用程序。
2.界面布局
打开Picture 控件属性窗口,其 ID 为 IDC_STATIC,修改Type 为 Rectangle,将 Picture 控件大小调整合适(用于最终图像的显示)
3.添加CvvImage支持的方法
记得配置好OpenCV环境。
因为复制代码到文章里就乱码,所以就放在“有道云笔记”里面了,链接如下:CvvImage.h和CvvImage.cpp源文件
源参考代码如下链接,也可直接复制:VS2010+Opencv+MFC读取图像和视频显示在Picture控件
如出现Erro提示可参考:OpenCV高版本下使用CvvImage.h
其中重要信息如下:若出现部分函数或变量未定义,可能原因有以下两种:
①未识别#include "StdAfx.h"解决方法:使用**#include
②调试解决方案平台不是X64因为打开工程默认是X86的,而OpenCV是X64的,所以需要手动修改成X64。
在需要引用该类的地方添加如下引用:#include “CvvImage.h”
4.在Picture控件中显示指定路径某一图片
糟心,没弄出来。https://blog.csdn.net/zjzjf1988/article/details/44407179
EasyPR开发详解文章综合(一个博主将原博主的文章copy到了一篇文章,没有原作者的评论区活跃)
以下是原作者的博文,有较多的讨论
EasyPR Git地址:https://github.com/liuruoze/EasyPR
1、EasyPR–一个开源的中文车牌识别系统
《Mastering Opencv …读书笔记系列》车牌识别(I)此文以半学习笔记半开发讲解的方式说明了一个车牌识别系统的全部开发过程
《Mastering Opencv …读书笔记系列》车牌识别(II)
博文评论区:
EasyPR在vs2013+opencv3.1.0中怎么运行,将demo设为启动项后编译不过
解决参考:https://github.com/liuruoze/EasyPR/issues/233
2、EasyPR–中文开源车牌识别系统 开发详解(1)
博客评论:
3、EasyPR–开发详解(2)车牌定位
4、EasyPR–开发详解(3)高斯模糊、灰度化和Sobel算子
(1)高斯滤波API opencv2.48
(2)opencv的灰度化的API(英文,2.48以上版本)。
(3)opencv的Sobel的API(英文,2.48以上版本)
(4)官网的介绍:Sobel与Scharr。
5、EasyPR–开发详解(4)形态学操作、尺寸验证、旋转等操作
评论区提到用adaboost定位车牌。参考一下——使用Adaboost训练车牌定位——(1)
6、EasyPR–开发详解(5)颜色定位与偏斜扭转
(1)OpenCV仿射变换
(2)官方文档 仿射变换
7、EasyPR–开发详解(6)SVM开发详解
(1)opencv的CvSVM的实现基于libsvm
(2)LIBSVM官方地址
8、EasyPR–开发详解(7)字符分割
9、EasyPR–开发详解(8)文字定位
1、Git:HyperLPR
2、Python安装使用教程:探索 Python + HyperLPR 进行车牌识别
运行报错如下:
环境问题:我是tensorflow和keras版本过高(上文版本有注红说明)。
觉得真的高版本低版本这些好打脑阔,版本都降了后,又来Warning。
其他(降完版本后果然遇到了这个。。。):
OpenCV踩坑之findContours:opencv-python版本为3.2.0,而本地版本为4.0.0,查询官方文档发现下面描述,说明4已经更改了返回的参数数量导致上述错误。
3、安装Jupyter:Jupyter 安装使用教程
1.安装:windows下,cmd 中直接使用 pip 安装
语句:pip install jupyter
2、运行:在cmd中输入“jupyter notebook”
默认会自动跳转到页面(网页)
注:Win+X–>A
使用 Anaconda,可以在其 Navigator 图形界面中点击打开 Notebook。
4、HyperLPR车牌识别技术算法之车牌粗定位与训练