ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-05-03 18:59:08  阅读:1237  来源: 互联网

标签:03 set img 05 image 车牌号 2021 sensor 模板


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

 

基于OpenMV的车牌号识别

 


前言

 

详细代码教程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拍我们模板的车牌号,会产生矩形将它框住(矩形颜色可调 黑,白)。


 

标签:03,set,img,05,image,车牌号,2021,sensor,模板
来源: https://blog.csdn.net/weixin_57403325/article/details/116378760

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有