halcon编程入门一基础和车牌识别及证书来源

视频来源:https://www.bilibili.com/video/av56900743?from=search&seid=1666871347899389365
halcon证书来源:http://www.ihalcon.com/read-2832.html或者https://www.51halcon.com/forum.php?mod=viewthread&tid=3736&extra=page%3D1&page=1

halcon基础

open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'printer_chip/printer_chip_01', '', 1, 2, AcqHandle)
*打开相机
grab_image_start (AcqHandle, -1)
*采图
dev_close_window ()
*先关闭窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*再打开窗口
while(true)
    grab_image_async (Image, AcqHandle, -1)
    *获取图像
    rgb1_to_gray (Image, GrayImage)
    *转成灰度图
    dev_display (GrayImage)
    *显示图像
    threshold (GrayImage, Region, 128, 255)
    *按灰度直方图阈值选择所检测区域并插入代码
    connection (Region, ConnectedRegions)
    *形成连通域
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 99999)
    *用特征直方图选取检测的形状
    dev_display (GrayImage)
    *显示图像
    dev_display (SelectedRegions)
    *显示图像
    area_center (SelectedRegions, Area, Row, Column)
    *显示检测中心
    disp_message (WindowHandle, Area, 'window', Row, Column, 'black', 'true')
    *显示检测信息
    
endwhile

close_framegrabber (AcqHandle)
*关闭相机

打开一个图像按上述方式进行检测:

read_image (Image1, 'D:/项目/建德油桶/2019.7.4/2019.7.4/1')
dev_close_window ()
*先关闭窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*再打开窗口
while(true)  
    *获取图像
    rgb1_to_gray (Image1, GrayImage)
    *转成灰度图
    dev_display (GrayImage)
    *显示图像
    threshold (GrayImage, Regions1, 139, 255)
    *按灰度直方图阈值选择所检测区域并插入代码
    connection (Regions1, ConnectedRegions)
    *形成连通域
    select_shape (Regions1, SelectedRegions, 'area', 'and', 1.34404e+006, 5e+006)
    *用特征直方图选取检测的形状
    dev_display (GrayImage)
    *显示图像
    dev_display (SelectedRegions)
    *显示图像
    area_center (SelectedRegions, Area, Row, Column)
    *显示检测中心
    disp_message (WindowHandle,'面积'+ Area+'坐标:'+Row+' '+Column, 'window', 0, 0, 'black', 'true')
    *显示检测信息
    
endwhile

连接相机:
找到相机接口,
在这里插入图片描述
在这里插入图片描述
区域和图像的区别:
区域指选取出来的坐标的集合,没有像素值;图像是带有像素值的坐标集合。
开运算和腐蚀:减少像素。
闭运算和膨胀:增加像素。
用连通域断开区域以后再进行开运算闭运算。
形态学或二值化后的图像为一个区域,halcon特有的机制。

预处理手法:

1.中值滤波
2.均值滤波
3.高斯滤波

仿射变换识别车牌

在这里插入图片描述

* Image Acquisition 01: Code generated by Image Acquisition 01
* Image Acquisition 01: Code generated by Image Acquisition 01
read_image (Image, 'C:/Users/Administrator/Desktop/a1pwxt9843232153362.jpg')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
decompose3 (Image, Image1, Image2, Image3)
*颜色分割
dev_display (Image1)
trans_from_rgb (Image1, Image2, Image3, ImageResult1, ImageResult2, ImageResult3, 'hsv')
dev_display (ImageResult3)
*颜色转换
threshold (Image1, Regions, 172, 250)
connection (Regions, ConnectedRegions)
*断开,形成连通域
dev_display (ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['column','area','row'], 'and', [68.35,0,88.99], [316.06,1344.04,161.28])
dev_display (SelectedRegions)
union1 (SelectedRegions, RegionUnion)
*组合
dilation_rectangle1 (RegionUnion, RegionDilation, 3, 3)
*闭运算
dev_display (RegionDilation)
fill_up (RegionDilation, RegionFillUp)
*填充
dev_display (RegionFillUp)
orientation_region (RegionFillUp, Phi)
*获得当前角度
area_center (RegionFillUp, Area, Row, Column)
*中心点
vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
*图像校正矩阵
dev_display (RegionFillUp)
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
*校正图像
affine_trans_region (RegionFillUp, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
*校正区域
reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)
*通过reduce_domain确实能获得特定区域Region位置的图像,但是,reduce_domain是缩小一个图像的定义域,并不缩小图像的实际尺寸,即新图像ImageReduced尺寸大小并未发生变化。
dev_display (ImageReduced)

*字符分割
rgb1_to_gray (ImageReduced, GrayImage)
invert_image (GrayImage, ImageInvert)
*反色图像
threshold (GrayImage, Region, 128, 255)
dev_display (Region)
connection (Region, ConnectedRegions1)
dev_display (ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 644.04, 1172.48)
sort_region (SelectedRegions1, SortedRegions, 'character', 'true', 'row')
*对区域进行排序
*识别
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
*读取
do_ocr_multi_class_mlp (SelectedRegions1, ImageInvert, OCRHandle, Class, Confidence)
*识别
dev_display (SelectedRegions1)
*显示
smallest_rectangle1 (SelectedRegions1, Row1, Column1, Row2, Column2)
*最小外接矩形
count_obj (SelectedRegions1, Number)
for i :=1 to Number by 1
    disp_message (WindowHandle, Class[i-1], 'image', Row2[i-1], Column1[i-1], 'black', 'true')
endfor

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值