Halcon识别字母数字

652 阅读1分钟

Halcon识别字母数字

第一步显示图片:将选择好的图片通过路径显示到指定窗口上生成变量; 第二步二值化图像:将彩色图像转换成灰色图像,选择效果最好的分量变量进行下一步操作; 第三步阈值分割:将选择好的图像分量进行颜反转,颜色分割,最后砍断称单个区域; 第四步选择需要的区域进行保留,通过行分割和列分割进行拆分筛选; 第五步由于没做其他的字库,就只能调用系统自带的字库,不过只能识别字母和数字,通过调用字库进行区域识别; 第六步输出识别内容并显示到图像上; 最后一步显示图像和识别内容。

代码如下:

*创建窗口
*dev_open_window (0, 0, 500, 300, 'black', WindowID)
dev_open_window (0, 0, 500, 300, 'black', WindowID)
*清除窗口
*dev_clear_window ()
dev_clear_window ()
*读取图片
*read_image (Image, 'C:/Users/58937/Desktop/4.png')
read_image (Image, 'C:/Users/58937/Desktop/4.png')
*图片分为R,G.B三个分量
*decompose3 (Image, Red, Green, Blue)
decompose3 (Image, Red, Green, Blue)
*图片分为h,s,v三个分量
*trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
*图像颜色反转
*invert_image (Saturation, ImageInvert)
invert_image (Saturation, ImageInvert)
*阈值分割
*threshold (ImageInvert, Regions, 0, 0)
threshold (ImageInvert, Regions, 0, 0)
*砍断,分成几个区域
*connection (Regions, ConnectedRegions)
connection (Regions, ConnectedRegions)
*根据行进行分割
*select_shape (ConnectedRegions, SelectedRegions2, 'row', 'and', 208.72, 243.58)
select_shape (ConnectedRegions, SelectedRegions2, 'row', 'and', 208.72, 243.58)
*根据列进行分割
*select_shape (SelectedRegions2, SelectedRegions1, 'column', 'and', 63.3, 925.69)
select_shape (SelectedRegions2, SelectedRegions1, 'column', 'and', 63.3, 925.69)
*区域排序从左往右
*select_shape (SelectedRegions2, SelectedRegions1, 'column', 'and', 63.3, 925.69)
select_shape (SelectedRegions2, SelectedRegions1, 'column', 'and', 63.3, 925.69)
*调用自带字库
*read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
*文字识别
*do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
*显示原图
*dev_display (Image)
dev_display (Image)
*显示文字于图片
*write_string (WindowID, Class) write_string (WindowID, Class)

图片如下:​