网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

2021-05-03 基于OpenMV的车牌号识别

2021/5/3 18:55:06 人评论

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 基于OpenMV的车牌号识别 前言一、OpenMV是什么二、使用步骤 1.制作模板库2.读入数据,进行匹配总结前言 详细代码教程https://singtown.com/learn/49598/ 这里的车…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

 

基于OpenMV的车牌号识别

  • 前言
  • 一、OpenMV是什么
  • 二、使用步骤
    • 1.制作模板库
    • 2.读入数据,进行匹配
  • 总结

 


前言

 

详细代码教程https://singtown.com/learn/49598/

这里的车牌号识别利用的是NCC模板匹配算法

  • 采用ncc算法,只能匹配与模板图片大小和角度基本一致的图案。局限性相对来说比较大,视野中的目标图案稍微比模板图片大一些或者小一些就可能匹配不成功。

  • 模板匹配适应于摄像头与目标物体之间距离确定,不需要动态移动的情况。比如适应于流水线上特定物体的检测,而不适应于小车追踪一个运动的排球(因为运动的排球与摄像头的距离是动态的,摄像头看到的排球大小会变化,不会与模板图片完全一样)。

  • 我么首先需要准备要识别的车牌号的图片,将他们做成模板

一、制作模板库

我们首先用如下代码,用镜头把需要车牌号图片拍下,并记录成模板

 


import sensor, image, pyb

RED_LED_PIN = 1
BLUE_LED_PIN = 3

sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.GRAYSCALE
sensor.set_framesize(sensor.B128X128) # or sensor.QQVGA (or others)
sensor.set_windowing((92,112))
sensor.skip_frames(10) # Let new settings take affect.
sensor.skip_frames(time = 2000) #延时两秒启动


n = 1  #储存的模板不能重名,所以这里拍摄一次 n换一次值(可以是1,2,3,4。。。。) 

sensor.skip_frames(time = 1000) #延时1000ms拍摄
   

print(n)
sensor.snapshot().save("chepaihao/%s.pgm" % (n) ) #将拍摄的图片保存到chepaihao文件夹,格式为pgm


print("拍摄成功")

 

可以拍摄多个车牌号制作多个模板

 

二、使用代码进行匹配

1.我们导入NCC模板匹配代码

源地址https://singtown.com/learn/49598/

 

我自己导入了4个车牌号,"chepai"是存储模板的,CPH_shibie是代码

 

 

 

基本代码如下,我们可以进行改动

import time, sensor, image
from image import SEARCH_EX, SEARCH_DS


sensor.reset()

sensor.set_contrast(1)
sensor.set_gainceiling(16)

sensor.set_framesize(sensor.QQVGA)
sensor.set_pixformat(sensor.GRAYSCALE)


template1 = image.Image("/chepai/1.pgm")
#加载模板图片


clock = time.clock()


while (True):
    clock.tick()
    img = sensor.snapshot()
    r1 = img.find_template(template1, 0.70, step=4, search=SEARCH_EX)
    if r1:
        img.draw_rectangle(r1)

    print(clock.fps())
我们如果想加载多的模板可以再写(这里的文件名不能有中文,所以我都用数字代替了)
template2 = image.Image("/chepai/2.pgm")

template3 = image.Image("/chepai/3.pgm")

等等等等..........

通过↑的代码我们可以 加载 "chepai"文件夹里所有的模板    

 

然后我们因为添加了新的模板,所以要使它们被识别,要加img.find_template()方法

比如我们上面加了template2,template3,template4..........需要在下面用find_template方法识别

r2 = img.find_template(template2, 0.07, step=4, search=SEARCH_EX)

if r2:

      img.draw_rectangle(r2)            #这里是调用rectangle ,就是制作一个矩形来框住我们识别的的车牌号

 

r3 = img.find_template(template3, 0.07, step=4, search=SEARCH_EX)

if r3:

      img.draw_rectangle(r3) 

以此类推

 

2.运行代码,用镜头拍我们原先的车牌号

效果如下

 

 

我们可以看到 利用OpenMV拍我们模板的车牌号,会产生矩形将它框住(矩形颜色可调 黑,白)。


 

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?