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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

Halcon中OCR的实现及关键函数解析

發布時間:2023/12/20 ChatGpt 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Halcon中OCR的实现及关键函数解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OCR的實現共分為兩步,1是使用字符數據來訓練OCR。2是使用OCR進行字符的識別

訓練分類器

  訓練分類器共分為4步:

1是使用閾值來分割字符區域

2是調用append_ocr_trainf函數將字符加入訓練集;

3是創建分類器

4是調用trainf_ocr_class_mlp函數來訓練分類器。

*對字符進行訓練得到分類器 TrainingNames := ['F','M','1','4','A','4','2'] FontName := 'F:/YM_Project/SZWX/work_x32_MFOL2/function/MFOL2' TrainingFileName := FontName+'.trf' *當dev_set_check的參數為'~give_error'時,這次檢測會被忽略,程序進入后面的操作。 dev_set_check ('~give_error') *刪除指定位置的文件 delete_file (TrainingFileName) for i := 0 to |TrainingNames|-1 by 1select_obj (FinalNumbers, CharaterRegions, i+1)*將字符CharaterRegions添加到訓練集TrainingFileName中append_ocr_trainf (CharaterRegions, FourthDarkImage, TrainingNames[i], TrainingFileName)disp_message (WindowID, TrainingNames[i], 'image', MeanRow-40, Column[i]-6, 'yellow', 'false') endfor *tuple_uniq( : : Tuple : Uniq) *相鄰重疊的元組只保留一個。常用于tuple_sort( : : Tuple : Sorted)之后,tuple_sort是升序排列。 CharNames := uniq(sort(TrainingNames)) *創建mlp create_ocr_class_mlp (8, 10, 'constant', 'default', CharNames, 5, 'none', 10, 42, OCRHandle) *使用訓練集來訓練mlp trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog) write_ocr_class_mlp (OCRHandle, FontName) clear_ocr_class_mlp (OCRHandle)

使用分類器進行識別
  使用分類器進行字符識別的函數有兩個:1是do_ocr_multi_class_mlp,該函數對一幅圖像內的多個字符進行一次分類并輸出分類結果。2是do_ocr_single_class_mlp,該函數是對一幅圖像中的單個字符進行分類。兩者的對比試驗表明,后者的分類準確度要高,因此,下文使用do_ocr_single_class_mlp算子進行字符的分類。?
  分類的實現分為4步:1是讀取分類器;2是讀取圖片;3是分割單個字符;4分類

*Step1根據分類器來分類 read_ocr_class_mlp (FontName, OCRHandle) *Step2讀取圖片獲得每一個圖像 read_image (Image, 'F:/YM_Project/SZWX/1024SZWX/SVS900_XFMT1X110_CR6030_S1_4.bmp') *Step3分割單個字符 gen_rectangle1 (Rectangle1, 43, 2243, 707, 3675) reduce_domain (Image, Rectangle1, ImageReduced1) crop_domain (ImageReduced1, ImagePart) median_image (ImagePart, ImageReduced1, 'circle', 3, 'mirrored') threshold (ImageReduced1, Regions, 84, 255) opening_circle (Regions, RegionOpening, 3.5) connection (RegionOpening, ConnectedRegions) select_shape (ConnectedRegions, Numbers, 'area', 'and', 1000, 9999) count_obj (Numbers, CharacterNums) ArrayConfidence := [] for IndexCharacter := 1 to CharacterNums by 1select_obj (Numbers, CharacterSelected, IndexCharacter) *Step4分類do_ocr_single_class_mlp(CharacterSelected, ImagePart, OCRHandle,1, Class, Confidence)ArrayConfidence := [ArrayConfidence,Confidence] endfor

關鍵函數解析

create_ocr_class_mlp( : : WidthCharacter, HeightCharacter, Interpolation, Features, Characters, NumHidden, Preprocessing, NumComponents, RandSeed : OCRHandle)WidthCharacter:輸入被分割的字符縮放到指定的寬度 HeightCharacter: Interpolation:設置縮放的字符的縮放模式,對于多數應用而言,Interpolation = 'constant'。請注意:轉換后的字符大小不能太大,因為分類器對較大尺寸的字符分類效果并不好。特別是,如果尺寸較大,一些小的分割誤差會較大程度上影響分類的效果,一般情況下,sizes between 6x8 and 10x14 Features:分類的特征向量的長度 Characters:輸出層神經元的個數;也就是是需要匹配的字符查閱表中字符的個數。 NumHidden:MLP中隱藏層神經元的個數 Preprocessing:矢量特征裝換的預處理類型 NumComponents:匹配字符的數量 這兩個參數主要是對輸入的值進行預處理。RandSeed:初始化mlp OCRHandle:輸出OCR_mlp分類器句柄

trainf_ocr_class_mlp( : : OCRHandle, TrainingFile, MaxIterations, WeightTolerance, ErrorTolerance : Error, ErrorLog)
訓練一個神經網絡分類器

do_ocr_multi_class_mlp(Character, Image : : OCRHandle : Class, Confidence)
使用OCR分類多個字符
Character是字符區域
Image是字符圖片
OCRHandle是分類器句柄
Class是輸出的類別
Confidence是輸出的分類精度


do_ocr_single_class_mlp(CharacterSelected, ImagePart, OCRHandle,1, Class, Confidence)
分類單個字符,其分類效果比上述同時分類多個字符的效果要好
---------------------?
作者:羅澤?
來源:CSDN?
原文:https://blog.csdn.net/u013698770/article/details/53842205?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的Halcon中OCR的实现及关键函数解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。