机器视觉——车牌识别实验汇总

article/2025/3/12 19:47:59

文章目录

  • 前言
  • 一、车牌识别背景资料简介
  • 二、实现车牌识别步骤
    • 1.图像采集(Image Correction)
    • 2.角度修正(Angle Correction)
    • 3.字符分割 第一次分割
    • 4.车牌定位(License Plate Location)
    • 5.字符分割 第二次分割
    • 6.字符识别(Character recognition)
  • 总结


前言

经过几周繁忙的学习,这两周变得清闲了起来O(∩_∩)O,上上周在我去上海参加培训时,学校的实习周也请来了深圳的公司为我们专业进行为期一周的机器人实训。在我从上海回来后刚好赶上了个尾巴,因为刚培训完视觉,我对这方面的兴趣正浓。回来后我义无反顾的又开始了新的学校,通过问同学,问老师,紧赶慢赶的追上了一些。闲来无事就随便写写。


一、车牌识别背景资料简介

车牌识别在停车场和高速公路车辆管理中得到广泛应用,车牌识别技术也是识别车辆身份的主要手段。车牌识别技术结合电子不停车收费系统(ETC)识别车辆,过往车辆通过道口时无须停车,即能够实现车辆身份自动识别、自动收费。在车场管理中,为提高出入口车辆通行效率,车牌识别针对无需收停车费的车辆(如月卡车、内部免费通行车辆),建设无人值守的快速通道,免取卡、不停车的出入体验,正改变出入停车场收费管理系统模式。

二、实现车牌识别步骤

1.图像采集(Image Correction)

(1)读入图像并且得到图像的尺寸信息

read_image (Image,'./ImageCardOfCar (1))
get_image_size (Image, Width, Height)

在这里插入图片描述

2.角度修正(Angle Correction)

(1)以图片中点为旋转点进行旋转

    text_line_orientation (Image, Image, 50, rad(-50), rad(50), OrientationAngle)rotate_image (Image, ImageRotate, -OrientationAngle / rad(180) * 180, 'constant')emphasize (ImageRotate, ImageEmphasize, 7, 7, 1)

在这里插入图片描述
(2)获得车牌的灰度图像信息

    median_image (ImageRotate, ImageMedian, 'circle', 5.5, 'mirrored')decompose3 (ImageEmphasize, r, g, b)trans_from_rgb (r, g, b, h, s, v, 'hsv')

在这里插入图片描述

3.字符分割 第一次分割

(1)动态阈值第一次分割(v通道)

    mask_H:=25mask_w:=15mean_image ( v, Region,mask_w, mask_H)offset:=21dyn_threshold ( v, Region, RegionDynThresh, offset, 'light’)

在这里插入图片描述
(2)连通域分割

connection ( RegionDynThresh, ConnectedRegions) 

(3)特征筛选

    select_shape (ConnectedRegions, SelectedRegions, ['area','width','height'], 'and', [59.32,0,21],  [340,21.67,54.067])union1 (SelectedRegions, RegionFillUp1) dilation_rectangle1 (RegionFillUp1, RegionDilation1, 11,7)

在这里插入图片描述
(4)连通域分割

    connection (RegionDilation1, ConnectedRegions4)*筛选最大面积区select_shape_std (ConnectedRegions4, SelectedRegions3, 'max_area', 70)

在这里插入图片描述
(5)孔洞填充

    fill_up (SelectedRegions3, RegionFillUp1)shape_trans (RegionFillUp1, RegionTrans2, 'rectangle2')

在这里插入图片描述

4.车牌定位(License Plate Location)

(1)筛选车牌矩形

count_obj (RegionTrans2, Number)gen_empty_obj (ROI)for i := 1 to Number by 1select_obj (RegionTrans2, ObjectSelected, i)region_features (ObjectSelected, 'rect2_len1', Value1)region_features (ObjectSelected, 'rect2_len2', Value2)a:=Value1/Value2if (a>1.1 and a<4.0)         concat_obj (ROI, ObjectSelected, ROI)endifendforcount_obj (ROI, Number1)dev_display (ImageRotate)dev_display (ROI) erosion_rectangle1 (ROI, RegionErosion, 9, 8)*缩小图像定义域reduce_domain (ImageEmphasize, RegionErosion, ImageReduced)

在这里插入图片描述

5.字符分割 第二次分割

(1)动态阈值第二次分割

    mask_H:=32mask_w:=16mean_image ( ImageReduced, thresholdImage,mask_w, mask_H)offset:=1dyn_threshold ( ImageReduced, thresholdImage, RegionDynThresh, offset, 'light’) 

在这里插入图片描述
(2)连通域分割

connection (RegionDynThresh, ConnectedRegions2)

(3)特征筛选

select_shape (ConnectedRegions2, SelectedRegions2, ['width','area','height'], 'and', [0,0,9.367], [185.73,800.67,31.433])dilation_circle (SelectedRegions2, RegionDilation, 1)*union1 (RegionDilation, RegionUnion)

在这里插入图片描述
(4)连通域分割

   connection (RegionUnion, ConnectedRegions3)

在这里插入图片描述

6.字符识别(Character recognition)

(1)排序

sort_region (RegionIntersection, SortedRegions, 'character', 'true', 'column’)

(2)加载机器学习模型

read_ocr_class_mlp ('charact.omc', OCRHandle) 

(3)确定一个显示位置

    shape_trans (SortedRegions, RegionSamllestRect, 'rectangle1')area_center (RegionSamllestRect, Area1, Row1, Column1)RowMean:=mean(Row1)count_obj (SortedRegions, Number2)dev_clear_window ()dev_display (Image)for Index1 := 1 to Number2 by 1select_obj (SortedRegions, Obj, Index1)

在这里插入图片描述
(4)单个字符识别

do_ocr_single_class_mlp (Obj, ImageReduced, OCRHandle, 1, Class, Confidence1)

在这里插入图片描述
(5)将识别到的字符全部记录下来

  *Confidence置信度if (Confidence1>0.8)Confidence_:=[Confidence_,Confidence1]Class_Bottle:=[Class_Bottle,Class]disp_message (3600,  Class, 'image', RowMean+15,  Column1[Index1-1], 'yellow', 'false')endifendforstop()
endfor

在这里插入图片描述


总结

综上所述为我们本次实训其中一个项目(车牌识别实验)的流程,另外还有瓶盖识别,条形码识别等。虽然开始我没有听到老师的讲解,但回来后看同学做的,请教同学,并且没事一起聊聊,觉得大致思路我还是欧克的。

通过这次实训和上次去上海培训,学到了很多,也看到了许多。我觉得这些最核心的还是实现这些项目程序以及算法,其他的只要学一学掌握思路,明白指令的含义,并且能正确的调用,就能很好的实现这些功能,所以我还是非常佩服写出这些软件的大神呢,以后的路还很长,希望自己不忘初心,继续努力,加油(ง •_•)ง


http://chatgpt.dhexx.cn/article/Q1EwewJf.shtml

相关文章

机器视觉源码分享

视觉方面的研究&#xff0c;但毕业后未能再此领域深耕&#xff0c;故预将研究阶段所做的工业视觉程序进行分享&#xff0c;作为兴趣爱好愿与有识之人一起交流。 有需要的请留言&#xff0c;以下介绍均有源码 0cHM6Ly9ibG9nLmNzZG4ubmV0L01CU0VwZWVr,size_16,color_FFFFFF,t_70)…

机器视觉基础应用知识详解

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达随着工业4.0时代的到来&#xff0c;机器视觉在智能制造业领域的作用越来越重要&#xff0c;为了能让更多用户获取机器视觉的相关基础知识&#xff0c;包括机器视觉技术是…

机器视觉工程师必须了解的基础知识

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达正文 CCD&#xff08;像素&#xff09;与视觉系统的基础知识 关于摄像元件 CCD 数码相机的构造与传统的胶片式相机&#xff08;模拟式&#xff09;基本相同。所不同的是数…

机器视觉与图像处理知识点总结

图像灰度均值是对平均灰度的一种度量&#xff0c;反映了图像的亮度&#xff0c;均值越大说明图像亮度越大&#xff0c;反之越小。图像灰度方差反映了图像像素值与均值的离散程度&#xff0c;标准差越大说明图像的质量越好。方差是对平均对比度的度量&#xff0c;每个像素点颜色…

机器视觉基础知识详解

什么是机器视觉 机器视觉是人工智能正在快速发展的一个分支。简单说来&#xff0c;机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品&#xff08;即图像摄取装置&#xff0c;分CMOS和CCD两种&#xff09;将被摄取目标转换成图像信号&#xff0c;传送…

机器视觉需要学什么?学习机器视觉需要掌握哪些知识?

图像采集&#xff1a;需要对镜头、光源、相机(CCD)的选型有所了解&#xff0c;有经验的工程师说打光是图像采集的关键。图像采集是对我们后续工作的支撑&#xff0c;采集不到好的图像&#xff0c;对图像处理就会难上好几倍甚至几百倍。 图像处理&#xff1a;图像处理技术一般包…

干货!机器视觉基础知识汇总

来源丨新机器视觉 点击进入—>3D视觉工坊学习交流群 现如今&#xff0c;中国已经成为世界机器视觉发展最为活跃地区&#xff0c;应用范围涵盖了工业、农业、医药、军事、航天、气象等国民经济各个行业。虽然机器视觉的成长速度非常快&#xff0c;但是还是有很多人对机器视觉…

TextView 倾斜属性

android:textStyle"italic"

Android textAppearance的属性设置及TextView属性详解

随时随地阅读更多技术实战干货&#xff0c;获取项目源码、学习资料&#xff0c;请关注源代码社区公众号(ydmsq666) 转自&#xff1a;http://blog.csdn.net/jaycee110905/article/details/8762238 textAppearance的属性设置 android:textAppearance"?android:attr/textA…

Android控件 TextView属性大全

一、TextView TextView控件一般是用来显示文本 二、如何使用 在layout布局里直接引用&#xff1a; <TextViewandroid:gravity"center_horizontal"android:id"id/tv_moneytext"android:layout_width"match_parent"android:layout_height&q…

Textview属性Kotlin.Android

Textview属性 <TextViewandroid:id"id/textview"android:layout_width"match_parent"android:layout_height"wrap_content"android:text"Hello World!"/>android:layout_width指定宽度 android:layout_height指定高度 "ma…

TextView 文本基础属性

基础属性一栏 &#xff1a; 1 &#xff1a;id :就相当于一个名字 格式 : android:id"id/name" name可自行起名 TextView tvfindViewById(R.id.name);tv.setText("安卓开发"); 创建id可在activity中创建文本对象&#xff0c;使用文本方法进行传值。 通过…

TextView常用属性设置

TextView属性设置 文章目录 TextView属性设置一、基本属性&#xff08;android&#xff1a;&#xff09;marginStart(End)与marginLeft&#xff08;Right&#xff09;的区别 二、其他属性3D效果跑马灯效果获取焦点的两种方法 三、安卓官方文档 提示&#xff1a;以下是本篇文章正…

TextView的属性

android:textColor 文本颜色 android:textColorHighlight 文本高亮颜色 android:textColorHint 文本提示颜色 android:textColorLink 链接文本颜色 android:textIsSelectable 文本能够被选中 android:textScaleX 水平缩放参数 android:textSize 文本大小 android…

csv转json【在线转换工具】、调整日期格式【python】

目录 一&#xff0c;问题背景 二&#xff0c;解决过程 1&#xff0c;csv转json 2&#xff0c;日期格式调整 一&#xff0c;问题背景 做实验时需要对csv格式的源数据进行处理&#xff0c;主要包括转换为json、调整日期格式两个功能&#xff0c;csv原文件内容如下&#xff1…

JS小知识,如何将 CSV 转换为 JSON 字符串

大家好&#xff0c;今天和大家聊一聊&#xff0c;在前端开发中&#xff0c;我们如何将 CSV 格式的内容转换成 JSON 字符串&#xff0c;这个需求在我们处理数据的业务需求中十分常见&#xff0c;你是如何处理的呢&#xff0c;如果你有更好的方法欢迎在评论区补充。 一、使用 csv…

在线JSON转CSV,TSV工具

在线JSON转CSV,TSV工具 在线JSON转CSV,TSV工具 JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据。 CSV文件:Comma-Sep…

arcmap小技巧之获取行政区划及json格式转shp,json转csv

出来实习难免遇到各种没见过的问题&#xff0c;给我这gis小白难坏了 今天遇到北京1954坐标系转国家2000 上头甩给我一张北京54的某县耕地数据shp&#xff0c;告诉我这个图不能用到web端&#xff0c;坐标系太旧了 &#xff08;小声bb&#xff1a;前几天做的分析&#xff0c;今…

JAVA实现CSV文件转JSON。

JAVA实现CSV文件转JSON。 CSV文件一般是以逗号为分隔值的文件&#xff08;Comma-Separated Values&#xff0c;CSV&#xff0c;有时也称为字符分隔值&#xff0c;因为分隔字符也可以不是逗号&#xff09;&#xff0c;其文件以纯文本形式存储表格数据&#xff08;数字和文本&am…

在Django实战中实用的数据格式转换【csv转json和json转csv】

文章目录 题目csv转jsonjson转csv 题目 在Django实战中实用的数据格式转换 csv转json 步骤&#xff1a; 使用pandas读取csv文件&#xff0c;index_colFalse第一列为index值 data pd.read_csv(path, index_colFalse)用一个dict()读取data中的数据 i.e. 假设你的csv文件里有…