日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体

發(fā)布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。