- 這個是我使用的車牌識別開源項目的地址:https://github.com/zeusees/HyperLPR
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安裝路徑\Anaconda3\Lib 下,並改名為hyperlpr。例如如果anaconda是安裝在C盤的,那么完整路徑應該為C:\Users\您的計算機用戶名\Anaconda3\Lib\hyperlpr。下文的修改也是對這個文件夾中的文件進行的。
-
在任意位置創建一個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:\anaconda\lib\hyperlpr\recognizer.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:\anaconda\lib\hyperlpr\finemapping.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,刪除,使函數返回值由兩個參數接收。
應該有兩個文件需要此修改。
修改后:
現在運行程序應該就會驚喜的發現運行成功啦!