PyTorch + openCV 车牌识别(二)

    技术2024-03-10  85

    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 #cv2.line(img_final_resize, (i,0), (i,49), (0, 255, 255), 2) black_count = 0 ##以上是绘制出所有字符间隔的蓝色块,从第4行至第45行,超过四十个点为蓝色即画线 再把每个字符之间黄色矩形取中间一列作为字符的分割线即可,以下代码便是把各个字符进行分割的代码。 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 #print(split_line) ##以上是把绘制出的黄色块区域取中线并绘制,以此来分割各个字符 分割之后的效果图如下: 到此便达成了利用cv简单地进行字符分割的目的。当然如果要提高分割的适应性,或者准确性等,可以将图片切换至HSV三通道进行车牌剥离,还可以进行透视变换的方法将视角进行矫正,或者也能够通过pytorch进行整体的车牌识别,当然这都是可以改进的点。本项目旨在利用这个项目让初学者能够入门pytorch,因此所有方法都非常简单。 从第三章开始,便进入pytorch的识别部分,主要包括如何搭建自己的数据集,如何建立网络进行识别,如何设置网络参数等等。
    Processed: 0.017, SQL: 9