HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体
HALCON示例程序train_characters_ocr.hdev使用SVM分類器訓(xùn)練字體
小哥哥小姐姐覺得有用點(diǎn)個贊唄!
示例程序源碼(加注釋)
藍(lán)色字體均為算子解釋鏈接,可以前往查看解答
- 關(guān)于顯示類函數(shù)解釋
read_image (Image, ‘ocr/chars_training_01.png’) - 獲取單通道圖像的指針
get_image_pointer1 (Image, Pointer, Type, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, ‘white’, WindowHandle)
set_display_font (WindowHandle, 12, ‘mono’, ‘true’, ‘false’)
dev_set_draw (‘margin’)
dev_set_line_width (2)
dev_display (Image)
dev_update_window (‘off’)
dev_update_pc (‘off’)
dev_update_var (‘off’) - 創(chuàng)建一個 SVM 分類器內(nèi)容,從A-G
ClassNames := [‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’] - 創(chuàng)建OCR分類器
create_ocr_class_svm (8, 10, ‘constant’, [‘convexity’,‘num_holes’,‘projection_horizontal’,‘projection_vertical’], ClassNames, ‘rbf’, 0.02, 0.05, ‘one-versus-one’, ‘normalization’, 10, OCRHandle)
for i := 1 to 7 by 1
read_image (Image, ‘ocr/chars_training_’ + i$’.2d’)
dev_display (Image)
* halcon自定義函數(shù)大括號內(nèi)為其代碼
get_regions (Image, SortedRegions)
{
dev_set_color (‘white’)
- 二值化
threshold (Image, Region, 0, 125) - 分割連通域
connection (Region, ConnectedRegions) - 通過面積篩選區(qū)域
select_shape (ConnectedRegions, SelectedRegions, ‘a(chǎn)rea’, ‘a(chǎn)nd’, 50, 999999) - 對區(qū)域進(jìn)行排序
sort_region (SelectedRegions, SortedRegions, ‘character’, ‘true’, ‘row’)
return ()
}- 對元素進(jìn)行計數(shù)
count_obj (SortedRegions, NumberObjects)
for j := 1 to NumberObjects by 1 - 選取數(shù)組內(nèi)指定元素
select_obj (SortedRegions, ObjectSelected, j)
if (i == 1 and j == 1)- 將訓(xùn)練字符儲存到指定文件
write_ocr_trainf (ObjectSelected, Image, ClassNames[j - 1], ‘train_characters_ocr.trf’)
else - 向訓(xùn)練文件中添加對象
append_ocr_trainf (ObjectSelected, Image, ClassNames[j - 1], ‘train_characters_ocr.trf’)
endif
dev_set_color (‘gray’)
dev_display (ObjectSelected)
disp_message (WindowHandle, ClassNames[j - 1], ‘window’, 10, 10 + (j * 20), ‘black’, ‘true’)
endfor
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endfor
讀訓(xùn)練文件并轉(zhuǎn)化為圖像
read_ocr_trainf (Characters, ‘train_characters_ocr.trf’, CharacterNames)
count_obj (Characters, NumberCharacters)
- 將訓(xùn)練字符儲存到指定文件
- 對元素進(jìn)行計數(shù)
for i := 1 to NumberCharacters by 1
select_obj (Characters, CharacterSelected, i)
dev_clear_window ()
dev_display (CharacterSelected)
disp_message (WindowHandle, CharacterNames[i - 1], ‘window’, 10, 10, ‘black’, ‘true’)
endfor
- 訓(xùn)練OCR分類器
trainf_ocr_class_svm (OCRHandle, ‘train_characters_ocr.trf’, 0.001, ‘default’) - 縮減SVM分類器,以減少分類所用時間。
reduce_ocr_class_svm (OCRHandle, ‘bottom_up’, 2, 0.001, OCRHandleReduced) - 將訓(xùn)練出的分類器寫入文件
write_ocr_class_svm (OCRHandleReduced, ‘font_characters_ocr’) - 清除OCR分類器
clear_ocr_class_svm (OCRHandle)
clear_ocr_class_svm (OCRHandleReduced)
stop ()
dev_clear_window ()
disp_message (WindowHandle, ‘No more lines to execute’, ‘window’, 10, 10, ‘black’, ‘true’)
處理思路
這個例子是主要講解了如何使用,SVM分類器進(jìn)行OCR字符訓(xùn)練。
后記
大家有什么問題可以向我提問哈,我看到了第一時間回復(fù),希望在學(xué)習(xí)的路上多多結(jié)交良師益友。
總結(jié)
以上是生活随笔為你收集整理的HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: halcon clear_ocr_cla
- 下一篇: 算法基础——列表查找