• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

神经网络从0到1(三)——字符分割(cv部分)

人工智能 小白 1220次浏览 0个评论

引言

接上篇,这部分是图像预处理的后百分之五十的工作,也就是把上期代码识别出的车牌进行字符分割。 下面进入正题~


正文

在之前的教程中我们已经能够将识别出的车牌进行二值化处理了,本章节会介绍一种最简单的方法进行字符切割,当然有效的切割字符不是这个项目的目的,这个项目主要是针对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)
##以上是把绘制出的黄色块区域取中线并绘制,以此来分割各个字符

实现功能之后,我们来看一下运行的效果, 效果图如下:
神经网络从0到1(三)——字符分割(cv部分) 到此,我们便利用CV简单地进行了字符分割,并达到了目的,当然要提高分割的适应性,或者准确度,可以采用更具体的方法,当然这不是我们这次项目的重点。


总结

本章内容结束后,我们就完成了利用opencv进行图像预处理的部分,从下一章节开始,我们将会进入这个项目的重点部分,也就是神经网络的部分。 大致的流程就是利用分割后的不同的字符图片组成训练集,并搭建神经网络,将训练集传入神经网络进行训练后,我们利用模型对图片中的车牌进行识别得出结果,这就是整个项目的流程。 在这个系列结束后我会把整个工程打包供大家下载。


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明神经网络从0到1(三)——字符分割(cv部分)
喜欢 (0)

您必须 登录 才能发表评论!

加载中……