Halcon字符識別


字符存儲.PNG

如上圖,創建文件夾,分別存儲需要訓練的字符圖片。


代碼如下:

dev_set_draw ('margin')

*將0-9、A-Z存入字符數組中

CharH := []

for i := 0 to 9 by 1

   CharH[i] := chr(round(i + ord('0')))

endfor

for i := 10 to 36-1 by 1

   CharH[i] := chr(round(i-10 + ord('A')))

endfor

NumChar := |CharH|


TrainFile := 'D:/IPI/Halcon12Projects/字符訓練.trf'

for Indexfile:=0 to |CharH| - 1 by 1

    Path:='D:\\IPI\\訓練0-9A-Z\\'+CharH[Indexfile]

    list_files (Path, 'files', ImageFiles)

    for Index := 0 to |ImageFiles|-1 by 1

        read_image (Image, ImageFiles[Index])

        *將字符添加到訓練文件中

        append_ocr_trainf(Image,Image,CharH[Indexfile],TrainFile)

    endfor

endfor


*查詢訓練文件中的字符

read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)

*創建OCR分類器

create_ocr_class_svm (8, 10, 'constant', 'default', CharacterNames, 'rbf', 0.02, 0.001, 'one-versus-one', 'normalization', 0, OCRHandle)

*訓練

trainf_ocr_class_svm (OCRHandle, TrainFile, 0.001, 'default')

*寫入本地

FontFile := 'D:/IPI/Halcon12Projects/字符訓練.omc'

write_ocr_class_svm(OCRHandle,FontFile)

* 釋放內存

clear_ocr_class_svm (OCRHandle)


*使用自己創建的分類器進行字符識別

*讀取本地分類器

read_ocr_class_svm (FontFile, OCRHandle)

*字符識別

list_files ('D:/IPI/字符測試','files', Files)

for Index := 0 to |Files|-1 by 1

    read_image (Image, Files[Index])

    do_ocr_single_class_svm( Image, Image, OCRHandle, 1, Class)

    disp_message (3600, Class, 'window', 40, 221, 'black', 'true')

endfor

clear_ocr_class_svm (OCRHandle)

***************************************完***********************************************




***************************使用分類器識別*********************************

* read_image(Image,'C:/Users/研發/Pictures/Camera Roll/無標題.png')

* draw_rectangle1 (3600, Row1, Column1, Row2, Column2)

* gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)

* reduce_domain(Image, Rectangle, ImageReduced)

* threshold (ImageReduced, Region, 0, 128)

* connection (Region, ConnectedRegions)

* select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 15, 99999)

* sort_region (SelectedRegions, SortedRegions, 'first_point', 'true', 'row')

* shape_trans (SortedRegions,RegionTrans,'rectangle1')

* count_obj (RegionTrans, Number)

* area_center (RegionTrans, Area, Row, Column)

*讀取訓練的分類器

* read_ocr_class_mlp ('D:/IPI/Halcon12Projects/字符訓練.omc',OcrHandle)

*識別

* for i:=0 to Number-1 by 1

*     do_ocr_multi_class_mlp (SortedRegions, ImageReduced, OcrHandle, Class, Confidence)

*     disp_message (3600, Class[i], 'window', Row[i]+40, Column[i], 'black', 'true')

* endfor

* clear_ocr_class_mlp (OcrHandle)




PS:本文參考網絡及書籍


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章