一.Pycharm

官网下载,如果是在校大学生,有edu邮箱,则可以免费使用专业版。不是的话也没关系,普通版足够。安装最新版本就好。

安装之后,可以设置主题,字体,注意有的主题比较暗,debug时候看不清右边提示的小横杠。

File->setting->Project Interpreter->选择python环境(可以用anaconda的或者系统的),添加工具包

HyperLPR项目是目前车牌识别开源项目中效果最好的。EasyPR项目主要用C++实现,而HyperLPR实现语言多种,包括C++, Python ,PHP等。

就Python实现,做系列笔记。

一.环境安装

思路主要参考https://www.jianshu.com/p/7ab673abeaae

不过由于Anaconda取消了清华源,anaconda安装部分有不同。

1.安装Anaconda 5.2.0

① 官网下载版本,注意因为Keras只支持Python2.7-3.6,所以不能安装base环境中python默认为3.7的最新版本,可以找一个内含python=3.6的安装包。

② 安装过程中,选择加进系统路径,下面的默认python3.6为使用版本,可选可不选。不选的话,win10可以用系统的CMD安装,其实更快一些。

点击base(root)后的箭头,选择打开命令行 Open Terminal

注意:

源还是选择清华源,虽然失效,但是现在不知为何在命令行里安装还可以用。会显示清华源被跳过,然后自动用了系统的阿里源。也可一开始就用阿里源。

C盘-用户-.condarc文件内容如下,可手动更改

ssl_verify: true
channels:
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
– defaults
show_channel_urls: true

安装工具包:

安装opencv-python:    pip install  opencv-python

安装tensorflow:         pip install tensorflow

安装keras:     pip install keras

都安装完成之后,conda list 查看安装的工具包

$ python

$import cv2

$import tensorflow

$import keras

如果全都import成功,就是安装成功了

这时候可以关闭命令行窗口了,到anaconda界面里update index,发现没显示刚刚安装的三个工具包,没关系。

接下来,anaconda界面中Launch Jupyter,尝试import,发现成功。

然后:

我们需要把hyperlpr_py3复制到C:\Users\您的计算机用户名\Anaconda3\Lib下,并改名为hyperlpr

完整路径为C:\Users\您的计算机用户名\Anaconda3\Lib\hyperlpr

桌面\Jupyter\下创建一个LPR的目录,将开源库中的Fontmodel拷到此目录,创建一个car的目录,放置一张待识别车牌的车辆照片,命名为1.jpg,2.jpg,3.jpg
整个安装完后,打开 Jupyter Notebook,在Desktop\Jupyter\LRP新建一个 Python3的Notebook,输入如下代码
from hyperlpr import  pipline as  pp
import cv2
image = cv2.imread("./car/1.jpg")
image,res  = pp.SimpleRecognizePlate(image)
print(res)

按shift + Enter执行,大约几秒后即可出现结果。

 

注意的是,会有更重不同的问题出现,出hyperlpr/issue看看,会有收获。此外,代码中有些地方需要修改,比如在finemapping和segment中删除imagex。

keras2.2.4  ; opencv3.4; tensorflow 1.13.1

 

本文介绍numpy数组中这四个方法的区别ndim、shape、dtype、astype。

1.ndim

 

ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度。

2.shape

shape:表示各位维度大小的元组。返回的是一个元组。

对于一维数组:有疑问的是为什么不是(1,6),因为arr1.ndim维度为1,元组内只返回一个数。对

于二维数组:前面的是行,后面的是列,他的ndim为2,所以返回两个数。

对于三维数组:很难看出,下面打印arr3,看下它是什么结构。

先看最外面的中括号,包含[[1,2,3],[4,5,6]]和[[7,8,9],[10,11,12]],假设他们为数组A、B,就得到[A,B],如果A、B仅仅是一个数字,他的ndim就是2,这就是第一个数。

但是A、B是(2,3)的数组。所以结合起来,这就是arr3的shape,为(2,2,3)。将这种方法类比,也就可以推出4维、5维数组的shape。

3.dtype

dtype:一个用于说明数组数据类型的对象。返回的是该数组的数据类型。由于图中的数据都为整形,所以返回的都是int32。如果数组中有数据带有小数点,那么就会返回float64。

有疑问的是:整形数据不应该是int吗?浮点型数据不应该是float吗?

解答:int32、float64是Numpy库自己的一套数据类型。

4.astype

astype:转换数组的数据类型。

int32 –> float64        完全ojbk

float64 –> int32        会将小数部分截断

string_ –> float64   如果字符串数组表示的全是数字,也可以用astype转化为数值类型

注意其中的float,它是python内置的类型,但是Numpy可以使用。

Numpy会将Python类型映射到等价的dtype上。