zoukankan      html  css  js  c++  java
  • Halcon学习(车牌识别)

    通过学习别人的程序,个人了解到车牌识别分为如下几个步骤:

    1.读取一张车牌照片

    2.将车牌照片转化成R、G、B、H、S、V分量

    3.选取最合适的分量图像进行阈值分割(获取车牌在图像中的区域)

    4.打开矩形区域

    5.获取矩形区域

    6.获取矩形区域的角度

    7.获取矩形区域的中心点

    8.求射频变换的矩阵(根据极轴方向确定旋转至0度还是180度)

    9.旋转图像

    10.从原图中抠取当前矩形区域

    11.缩小图像区域

    12.图像灰度化

    13.由于Halcon自带字库为白底黑字,所以将图像灰度值翻转

    14.阈值分割出文字区域

    15.消除噪点

    16.砍成不同区域

    17.根据中心点坐标选取区域

    18.根据面积选取区域

    19.区域排序

    20.选取Halcon自带字库

    21.识别文字

    22.显示原图

    23显示字符

    源码如下:


    read_image (Image, 'C:/Users/58937/Desktop/t01099427dc105a338f.jpg')
    dev_close_window ()
    dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
    dev_display (Image)

    decompose3 (Image, Red, Green, Blue)
    trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')

    threshold (Saturation, Regions, 182, 255)

    opening_rectangle1 (Regions, RegionOpening, 6,6)
    *因为是有角度的矩形所以用rectangle2
    shape_trans (RegionOpening, RegionTrans, 'rectangle2')
    *区域的角度和中心点
    orientation_region (RegionTrans, Phi)
    area_center (RegionTrans, Area, Row, Column)
    *注意求解角度的极轴方向
    vector_angle_to_rigid (Row, Column, Phi, Row, Column, rad(180), HomMat2D)
    *旋转,抠图,缩小
    affine_trans_image (Image, ImageAffinTrans, HomMat2D, 'constant', 'false')
    affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
    reduce_domain (ImageAffinTrans, RegionAffineTrans, ImageReduced)
    *字符分割
    rgb1_to_gray (ImageReduced, GrayImage)
    *翻转图像灰度值
    invert_image (GrayImage, ImageInvert)

    threshold (GrayImage, Regions1, 62, 255)


    opening_rectangle1 (Regions1, RegionOpening1, 3,3)
    *砍
    connection (RegionOpening1, ConnectedRegions)


    select_shape (ConnectedRegions, SelectedRegions1, 'row', 'and', 108,119)
    select_shape (SelectedRegions1, SelectedRegions, 'area', 'and', 80,99999)

    *进行字符排序从左到右
    sort_region (SelectedRegions, SortedRegions, 'first_point', 'true', 'column')
    *halcon自带字库
    read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
    *识别
    do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
    dev_display (Image)
    disp_message (WindowHandle,Class, 'image', 0, 0, 'red', 'false')

  • 相关阅读:
    如何解决多进程或多线程并发的问题
    PHP 获取当前类名、方法名、URL地址
    MySQL查询小数点位数
    sql语句优化总结
    redis使用及配置之缓存详解
    系统每隔一段时间自动pull代码
    php BC 高精确度函数库
    SGDMA
    Pmon (LS1B)start.s
    FPGA时序约束和timequest timing analyzer
  • 原文地址:https://www.cnblogs.com/LcVong/p/12552900.html
Copyright © 2011-2022 走看看