zoukankan      html  css  js  c++  java
  • Python+Keras+TensorFlow车牌识别

    Python 依赖

    Anaconda for Python 3.x on Win64
    Keras (>2.0.0)
    Theano(>0.9) or Tensorflow(>1.1.x)
    Numpy (>1.10)
    Scipy (0.19.1)
    OpenCV(>3.0)
    Scikit-image (0.13.0)
    PIL

    准备工作:安装以下依赖包

    pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
    pip install Keras
    pip install Theano
    pip install Numpy
    pip install Scipy
    pip install opencv-python
    pip install scikit-image
    pip install pillow
    pip install tensorflow

    安装过程中可能出现Time out错误如下
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
    pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
    不要慌,重新输入一次安装命令。如:pip install pillow

    运行

    • 把代码clone下来

    • 然后把clone下来的开源库中的hyperlpr_py3文件夹复制到 anaconda安装路径Anaconda3Lib 下,并改名为hyperlpr。例如如果anaconda是安装在C盘的,那么完整路径应该为C:Users您的计算机用户名Anaconda3Libhyperlpr。下文的修改也是对这个文件夹中的文件进行的。

    • 在任意位置创建一个LPR的目录,将开源库中的Font和model拷到此目录,创建一个car的目录,放置待识别车牌的车辆照片,命名为1.jpg,2.jpg,3.jpg。

    • 在LRP文件夹中新建一个 Python3的Python文件,输入如下代码:

    from hyperlpr import pipline as pp
    import cv2
    #自行修改文件名
    image = cv2.imread("./car/1.jpg")
    image,res = pp.SimpleRecognizePlate(image)
    print(res)

    • 我的Python环境:

    Python 3.7
    cv2 4.1.0
    Keras 2.3.1
    TensorFlow 2.0.0

    解决bug

    • 这里我遇到两个bug:

    • 1

    File "D:anacondalibhyperlpr ecognizer.py", line 8, in
    K.set_image_dim_ordering('tf')
    AttributeError: module 'keras.backend' has no attribute 'set_image_dim_ordering'

    这个原因是,keras在有些较新的版本中没有set_image_dim_ordering()函数,而是改成了image_data_format()函数。

    修改方法是,在所有报这个错的文件中把

    K.set_image_dim_ordering('tf')

    改成:

    K.image_data_format()

    修改后:

    如果你使用的是较低版本的keras,那就反着改。若IDE询问是否要修改文件,选是即可。应该有三个文件需要此修改。

    • 2

    File "D:anacondalibhyperlprfinemapping.py", line 41, in findContoursAndDrawBoundingBox
    imagex, contours, hierarchy = cv2.findContours(binary_niblack.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
    ValueError: not enough values to unpack (expected 3, got 2)

    这个原因是,在opencv2中cv2.findContours()函数返回两个值:contours,hierarchy。而opencv3及以后会返回三个值,分别是img, countours, hierarchy。
    这里直接把报错文件中对应行的imagex,删除,使函数返回值由两个参数接收。
    应该有两个文件需要此修改。

    修改后:

    现在运行程序应该就会惊喜的发现运行成功啦!

  • 相关阅读:
    《统计学习方法》
    《赤裸裸的统计学》
    a[i]=i++
    正态分布(normal distribution)
    可视化
    数据转换
    beLazy
    水到渠成
    数据过滤
    数据合并
  • 原文地址:https://www.cnblogs.com/lxy764139720/p/11784755.html
Copyright © 2011-2022 走看看