PyTorch + openCV 车牌识别(二)
利用cv识别车牌并切割字符
利用cv识别车牌并切割字符
上篇我们已经将识别出的车牌进行二值化的操作了,本章节会介绍一种最简单的方法进行字符切割,当然有效的切割不是这个项目的目的,这个项目主要是针对PyTorch的上手,下面我们开始介绍切割字符的步骤。在对识别出的车牌滤波完后进行二值化,我们的分割思路便是从车牌的最上面到最下面遍历黑点的各数,当超过一定的阈值,变记为无字符列。将所有的无字符列都用线条标识出来。
black_count
= 0
char_spli
= [0 for i
in range(200)]
for i
in range(200):
for j
in range (4,45):
if img_final_bin
[j
,i
] == 0:
black_count
+= 1
if black_count
>= 40:
char_spli
[i
] = 1
black_count
= 0
再把每个字符之间黄色矩形取中间一列作为字符的分割线即可,以下代码便是把各个字符进行分割的代码。
yellow_count
= 0
start_position
= 0
end_position
= 0
split_line
= [0 for h
in range(10)]
x
= 0
for k
in range(1, 200):
if char_spli
[k
] == 1:
yellow_count
+= 1
if (char_spli
[k
] - char_spli
[k
- 1] == 1):
start_position
= k
else:
if (char_spli
[k
] - char_spli
[k
- 1] == -1):
end_position
= k
- 1
if (yellow_count
>= 4 and end_position
> start_position
):
'''cv2.line(img_final_resize, (start_position+(end_position-start_position)//2, 0),
(start_position+(end_position-start_position)//2, 49),
(0, 255, 255), 2)'''
split_line
[x
] = start_position
+(end_position
-start_position
)
x
+= 1
yellow_count
= 0
分割之后的效果图如下: 到此便达成了利用cv简单地进行字符分割的目的。当然如果要提高分割的适应性,或者准确性等,可以将图片切换至HSV三通道进行车牌剥离,还可以进行透视变换的方法将视角进行矫正,或者也能够通过pytorch进行整体的车牌识别,当然这都是可以改进的点。本项目旨在利用这个项目让初学者能够入门pytorch,因此所有方法都非常简单。 从第三章开始,便进入pytorch的识别部分,主要包括如何搭建自己的数据集,如何建立网络进行识别,如何设置网络参数等等。