halcon案例letters_svm

隶属于:
C:\Users\Public\Documents\MVTec\HALCON-23.05-Progress\examples\hdevelop\OCR\Support-Vector-Machines

此例,基于支持向量机,SVM,write_ocr_trainf 写入分类器,read_ocr_trainf_names读取分类器,create_ocr_class_svm创建分类器,并用trainf_ocr_class_svm训练分类器,用do_ocr_multi_class_svm识别字符。

读图,并提取字符区域

1
写入文件读取文件,创建SVM分类器并训练

write_ocr_trainf (Characters, Image, Classes, TrainFile)

read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
create_ocr_class_svm (8, 10, ‘constant’, ‘default’, CharacterNames, ‘rbf’, 0.02,
0.05, ‘one-versus-one’, ‘normalization’, 0, OCRHandle)

  • 训练分类器。
    trainf_ocr_class_svm (OCRHandle, TrainFile, 0.001, ‘default’)
    1

识别字符
3

* 本示例程序展示了如何使用一个简单的基于SVM的OCR分类器。

dev_update_off ()
read_image (Image, 'letters')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_set_colored (12)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
get_file_path_in_tmp_dir ('letters.trf', TrainFile)
dev_display (Image)
gen_rectangle1 (Rectangle, 0, 0, Height - 1, 400)
reduce_domain (Image, Rectangle, Image)
* Segment the image
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
* 将字母“i”和“j”与其上面的点连接起来。
dilation_circle (Region, RegionDilation, 3.5)
* 计算正确的连通分量。
connection (RegionDilation, ConnectedRegions)
* 将每个连通分量(字符)还原为其原始形状。
intersection (ConnectedRegions, Region, RegionIntersection)
*按行对字符进行排序。
sort_region (RegionIntersection, Characters, 'character', 'true', 'row')
dev_display (Characters)
disp_message (WindowHandle, 'Training characters', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
*计算每个字符的真实类别。
count_obj (Characters, Number)
Length := Number / 27
Classes := []
for J := 0 to 25 by 1
    Classes := [Classes,gen_tuple_const(Length,chr(ord('a') + J))]
endfor
Classes := [Classes,gen_tuple_const(Length,'.')]
*从分割的字符中构建必要的训练文件。


write_ocr_trainf (Characters, Image, Classes, TrainFile)
*创建分类器。我们从训练文件中读取类别。
* 因此,程序的训练部分是通用的,可以用于训练任何OCR分类器
read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
create_ocr_class_svm (8, 10, 'constant', 'default', CharacterNames, 'rbf', 0.02, 0.05, 'one-versus-one', 'normalization', 0, OCRHandle)
* 训练分类器。
trainf_ocr_class_svm (OCRHandle, TrainFile, 0.001, 'default')
* 
* 现在在整个训练图像上测试分类器。
full_domain (Image, Image)
* 以与之前相同的方式分割字符。
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold1)
dilation_circle (Region, RegionDilation, 3.5)
connection (RegionDilation, ConnectedRegions)
intersection (ConnectedRegions, Region, RegionIntersection)
sort_region (RegionIntersection, Characters, 'character', 'true', 'row')
*分类
do_ocr_multi_class_svm (Characters, Image, OCRHandle, Class)
* 
* 显示结果
area_center (Characters, Area, Row, Column)
dev_display (Image)
set_display_font (WindowHandle, 16, 'sans', 'true', 'false')
disp_message (WindowHandle, Class, 'image', Row - 16, Column + 8, 'blue', 'false')
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
disp_message (WindowHandle, 'Classification result', 'window', 12, 12, 'black', 'true')
dev_set_check ('~give_error')
delete_file (TrainFile)
dev_set_check ('give_error')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值