Halcon学习---光学字符识别(OCR)
1、?text_line_orientation
text_line_orientation(Region, // 輸入文本行所在區域Image, // 輸入圖像CharHeight,?OrientationFrom, OrientationTo, // 限定查找角度范圍最小、最大角度OrientationAngle) // 輸出計算文本行的旋轉角度-
定義:決定了單個文本行或段落相對于水平圖像軸的方向。如果要確定單個文本行的方向,則OrientationFrom和OrientationTo的范圍應該在-pi/4到pi/4的區間內
-
說明
-
Region:指定文本行所在的圖像區域,該區域僅用于減少工作面積。文本行由操作符text_line_orientation本身分割。如果傳遞了多個區域,則方向角的數值存儲在元組中,元組中值的位置對應于輸入元組中區域的位置
-
CharHeight:指定區域region中現有文本行的大約高度
-
搜索區域可以由參數OrientationFrom和OrientationTo限制,因此也會影響操作符的運行時間
-
如果輸入參數設置正確,操作符text_line_orientation返回值TRUE,否則將引發異常
-
應用:通過計算出的角度OrientationAngle和像affine_trans_image這樣的操作符,可以旋轉圖像的區域,使文本線水平地位于圖像中,這可以簡化OCR應用程序的字符分割
2、?partition_rectangle
partition_rectangle(Region, // 要分區的區域Partitioned, // 輸出分區Width, Height) // 單個矩形的寬高-
定義:將輸入區域劃分為給定寬高的矩形,矩形在分區中返回
-
說明
- 該區域總是被分割成大小大致相等的矩形。如果要求的矩形大小不能做到這一點,則調整寬度和高度,使結果矩形的大小大致相等
- 如果區域小于給定的大小,它的輸出保持不變
- 只有當區域的大小至少是由參數給出的矩形的1.5倍時,才進行分區
3、intersection?
intersection(Region1, // 區域1與區域2中的所有區域相交Region2, // Region1與之相交的區域RegionIntersection) // 返回交集的結果-
定義:交集計算Region1中的區域與Region2中的區域的交集
-
說明
- Region1中的每個區域與Region2中的所有區域相交
- 在Region1的各個區域與統一的區域相交之前,Region2的所有區域在內部被統一為一個區域
- RegionIntersection中region的順序與Region1中region的順序相同
-
注意:允許空輸入區域。因為空的結果區域是可能的,所以應該適當地設置系統標志'store_empty_region'
4、sort_region
sort_region(Regions, // 輸入需要排序的區域SortedRegions, // 輸出排序后的區域SortMode, // 設置需要排序的方式Order, // 設置遞增還是遞減排序RowOrCol) // 設置按照行排列還是列排列-
定義:根據區域的相對位置對區域進行排序
-
說明:除“字符”之外的所有排序方法都使用區域的一個點。在參數RowOrCol = 'row'的幫助下,這些點將根據它們的行排序,然后根據它們的列排序。通過使用'column',列值將首先被使用
-
注意SortMode參數的設置
-
'character':區域被視為字符,可以水平或垂直讀取。它們按照RowOrCol給出的讀取方向排序,規范如下:
-
'row':行,讀取方向首先從左到右,然后從上到下
-
'col':列,閱讀方向首先從上到下,然后從左到右
-
-
'first_point':按照第一個點排序,一個區域的第一行的最前面的點
-
'last_point':按照最后一個點排序,一個區域的最后一行最后一列的那個點
-
?'upper_left':外接矩形的左上角
-
?'upper_right':外接矩形的右上角
-
'lower_left':外接矩形的左下角
-
?'lower_right':外接矩形的右下角
5、read_ocr_class_mlp
read_ocr_class_mlp(FileName, // 讀取文件路徑OCRHandle) // OCR句柄-
定義:從文件中讀取OCR分類器
-
說明
-
read_ocr_class_mlp讀取與write_ocr_class_mlp一起存儲的OCR分類器
-
由于OCR分類器的訓練可能花費相對較長的時間,因此分類器通常在離線過程中進行訓練,并使用write_ocr_class_mlp將其寫入文件。在在線過程中,使用read_ocr_class_mlp讀取分類器,然后使用do_ocr_single_class_mlp或do_ocr_multi_class_mlp進行分類
-
HALCON自帶訓練好的文件:Document(文檔字體)、Industrial(工業字體)、DotPrint(點狀字體)。選擇的文件如果有NoRej表示允許出錯,如果選擇Rej對字符的要求將更嚴格,正確率也更高
-
預先訓練的OCR分類器是拿白底黑色字符訓練的,所以識別時也要拿白底黑色的字符區域去進行識別
-
注意:如果參數有效,操作符read_ocr_class_mlp返回值TRUE。如果有必要,將引發異常
-
使用OCR助手,選擇字體-點擊放大鏡后可以查看到當前支持識別的字體內容
6、do_ocr_single_class_mlp
do_ocr_single_class_mlp(Character, // 輸入需要識別的字符區域Image, // 輸入圖像OCRHandle,Num, // 設置識別數量Class, // 用MLP對字符進行分類的結果Confidence) // 可信度 值范圍0~1-
定義:識別單個區域OCR,使用OCR分類器OCRHandle計算由區域character和圖像Image給出的字符的最佳Num類,并返回Class中的類和Confidence中的類的相應置信度(概率)
-
說明
-
因為do_ocr_single_class_mlp可能返回多個類,所以Character只包含單個區域(單個字符)
-
如果要在一個調用中對多個字符進行分類,則必須使用do_ocr_multi_class_mlp
-
在大多數情況下應該使用do_ocr_multi_class_mlp,除非應該顯式檢查次優類
7、do_ocr_multi_class_mlp
do_ocr_multi_class_mlp(Character, // 輸入需要識別的字符區域Image, // 輸入圖像擺正之后的(必須是白底黑字)OCRHandle,Class, // 識別出來的結果Confidence) // 可信度 值范圍0~1-
定義:使用OCR分類器對多個字符進行分類,使用OCR分類器OCRHandle為區域Character和灰度值Image給出的每個字符計算最佳類,并返回class中的類和Confidence中的類的相應置信度(概率)
-
說明
-
與do_ocr_single_class_mlp相反,do_ocr_multi_class_mlp可以在一次調用中對多個字符進行分類,因此通常比使用do_ocr_single_class_mlp對單個字符進行分類的循環要快
-
然而,do_ocr_multi_class_mlp只能返回每個字符的最佳類。因為可將置信度解釋為概率(參見classify_class_mlp和evaluate_class_mlp),因此很容易檢查一個字符是否被分類了太多的不確定性,這通常不是一個缺點,除非類重疊太多,以至于在許多情況下必須檢查第二好的類才能決定字符的類
-
在這些情況下,應該使用do_ocr_single_class_mlp
-
在調用do_ocr_multi_class_mlp之前,必須使用trainf_ocr_class_mlp對分類器進行訓練
-
注意:Class中數字'\032'(或者顯示為'\0x1A')的字符串表示該區域已被分類為拒絕類
總結
以上是生活随笔為你收集整理的Halcon学习---光学字符识别(OCR)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pandas.core.base.Spe
- 下一篇: Android--初级