⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demoocr.dev

📁 我从事工业自动化软件编程三年了,今天真高兴在这里下到了一个很好的资料,现分享一下我平时工作中极有用的一些资料,这个是halcon用于电子产品时的ocr检测 如果想做ocr识别的朋友应该有所帮助!
💻 DEV
📖 第 1 页 / 共 2 页
字号:
8 5699793285display_write_message 0 0 5 0Write message in black letters on white background with shadowed box.Display/TextWindowHandle tupleRow tupleColumn tupleString tupleWindowCoordinates tupleappend_ocr_translated 2 0 4 0Character objectCharacterImage objectRow tupleColumn tupleFileName tupleClass tupleappend_ocr_rotated 1 0 3 0Character objectRot tupleTrainFile tupleClass tupleappend_ocr_dilated 1 0 3 0Character objectMaskSize tupleTrainFile tupleClass tupleappend_ocr_erosion 1 0 3 0Character objectMaskSize tupleTrainFile tupleClass tuplegen_distorted_character 1 1 0 0Char objectCharDistort objectgen_initial_trainfile 0 0 3 0TrainFileName tupleImageStart tupleImageEnd tuple137dev_close_window 0 0 0 0 0 2 0 0dev_close_window ()read_image 0 1 1 0 0 1 0 0read_image (ImageExample, 'Image000')ImageExample'Image000'get_image_pointer1 1 0 0 4 0 1 0 0get_image_pointer1 (ImageExample, Pointer, Type, Width, Height)ImageExamplePointerTypeWidthHeightdev_open_window 0 0 5 1 0 2 0 0dev_open_window (0, 0, Width*0.5, Height*0.5, 'black', WindowHandle)00Width*0.5Height*0.5'black'WindowHandledev_display 1 0 0 0 0 2 0 0dev_display (ImageExample)ImageExamplecomment 0 0 1 0 0 3 0 0* 利用SVM训练利用SVM训练assign 0 0 1 1 0 3 0 0TmpDir := './/''.//'TmpDirassign 0 0 1 1 0 3 0 0TrainFile := TmpDir+'letters.trf'TmpDir+'letters.trf'TrainFileassign 0 0 1 1 0 3 0 0TrainFileBig := TmpDir+'letters_big.trf'TmpDir+'letters_big.trf'TrainFileBigassign 0 0 1 1 0 3 0 0TrainChar := ['4','R','7']['4','R','7']TrainChardev_set_check 0 0 1 0 0 2 0 0dev_set_check ('~give_error')'~give_error'delete_file 0 0 1 0 0 1 0 0delete_file (TrainFile)TrainFiledev_set_check 0 0 1 0 0 2 0 0dev_set_check ('give_error')'give_error'comment 0 0 1 0 0 3 0 0* 得到基础训练集TrainFile得到基础训练集TrainFilefor 0 0 3 1 0 3 0 0for i := 0 to 1 by 1011idev_set_draw 0 0 1 0 1 2 0 0    dev_set_draw ('margin')'margin'dev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('red')'red'read_image 0 1 1 0 1 1 0 0    read_image (Image, 'Image' + i$'03')Image'Image' + i$'03'get_domain 1 1 0 0 1 1 0 0    get_domain (Image, Domain)ImageDomaingray_histo 2 0 0 2 1 1 0 0    gray_histo (Domain, Image, AbsoluteHisto, RelativeHisto)DomainImageAbsoluteHistoRelativeHistohisto_to_thresh 0 0 2 2 1 1 0 0    histo_to_thresh (AbsoluteHisto, 5, MinThresh, MaxThresh)AbsoluteHisto5MinThreshMaxThreshthreshold 1 1 2 0 1 1 0 0    threshold (Image, Region, MinThresh[1], MaxThresh[1])ImageRegionMinThresh[1]MaxThresh[1]connection 1 1 0 0 1 1 0 0    connection (Region, ConnectedRegions)RegionConnectedRegionsselect_shape 1 1 4 0 1 1 0 0    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 90000, 200000)ConnectedRegionsSelectedRegions'area''and'90000200000count_obj 1 0 0 1 1 1 0 0    SelectNum := |SelectedRegions|SelectedRegionsSelectNumif 0 0 1 0 1 3 0 0    if (SelectNum>0)SelectNum>0dilation_circle 1 1 1 0 2 1 0 0        dilation_circle (SelectedRegions, RegionDilation, 6)SelectedRegionsRegionDilation6fill_up 1 1 0 0 2 1 0 0        fill_up (RegionDilation, RegionFillUp)RegionDilationRegionFillUpcomment 0 0 1 0 2 3 0 0*         得到数据区域得到数据区域erosion_circle 1 1 1 0 2 1 0 0        erosion_circle (RegionFillUp, RegionErosion, 7)RegionFillUpRegionErosion7reduce_domain 2 1 0 0 2 1 0 0        reduce_domain (Image, RegionErosion, ImageReduced)ImageRegionErosionImageReducedilluminate 1 1 3 0 2 1 0 0        illuminate (ImageReduced, ImageIlluminate, 101, 101, 0.7)ImageReducedImageIlluminate1011010.7threshold 1 1 2 0 2 1 0 0        threshold (ImageIlluminate, ReducedRegion, 0, 120)ImageIlluminateReducedRegion0120opening_circle 1 1 1 0 2 1 0 0        opening_circle (ReducedRegion, RegionOpening, 3)ReducedRegionRegionOpening3connection 1 1 0 0 2 1 0 0        connection (RegionOpening, DataConnect)RegionOpeningDataConnectselect_shape 1 1 4 0 2 1 0 0        select_shape (DataConnect, DataSelectedRegions, 'area', 'and', 900, 30000)DataConnectDataSelectedRegions'area''and'90030000sort_region 1 1 3 0 2 1 0 0        sort_region (DataSelectedRegions, SortedRegions, 'upper_left', 'true', 'row')DataSelectedRegionsSortedRegions'upper_left''true''row'count_obj 1 0 0 1 2 1 0 0        Number := |SortedRegions|SortedRegionsNumberassign 0 0 1 1 2 3 0 0        m := 00mfor 0 0 3 1 2 3 0 0        for j := 1 to Number by 11Number1jselect_obj 1 1 1 0 3 1 0 0            ObjectSelected := SortedRegions[j]SortedRegionsObjectSelectedjsmallest_rectangle2 1 0 0 5 3 1 0 0            smallest_rectangle2 (ObjectSelected, ObjSelectRow, ObjSelectColumn, ObjSelectPhi, ObjSelectLength1, ObjSelectLength2)ObjectSelectedObjSelectRowObjSelectColumnObjSelectPhiObjSelectLength1ObjSelectLength2gen_rectangle2 0 1 5 0 3 1 0 0            gen_rectangle2 (Rectangle, ObjSelectRow, ObjSelectColumn, ObjSelectPhi, ObjSelectLength1, ObjSelectLength2)RectangleObjSelectRowObjSelectColumnObjSelectPhiObjSelectLength1ObjSelectLength2reduce_domain 2 1 0 0 3 1 0 0            reduce_domain (ImageIlluminate, Rectangle, ImageRectReduced)ImageIlluminateRectangleImageRectReducedassign 0 0 1 1 3 3 0 0            SingleChar := TrainChar[m]TrainChar[m]SingleCharappend_ocr_trainf 2 0 2 0 3 1 0 0            append_ocr_trainf (ObjectSelected, ImageRectReduced, SingleChar, TrainFile)ObjectSelectedImageRectReducedSingleCharTrainFileassign 0 0 1 1 3 3 0 0            m := m+1m+1mendfor 0 0 0 0 2 3 40 0        endforendif 0 0 0 0 1 3 26 0    endifstop 0 0 0 0 1 3 0 1*     stop ()endfor 0 0 0 0 0 3 15 0endforstop 0 0 0 0 0 3 0 1* stop ()comment 0 0 1 0 0 3 0 0* 考虑字符的平移,旋转,字符偏大或偏小,得到扩展训练集TrainFileBig考虑字符的平移,旋转,字符偏大或偏小,得到扩展训练集TrainFileBigdev_set_check 0 0 1 0 0 2 0 0dev_set_check ('~give_error')'~give_error'delete_file 0 0 1 0 0 1 0 0delete_file (TrainFileBig)TrainFileBigdev_set_check 0 0 1 0 0 2 0 0dev_set_check ('give_error')'give_error'read_ocr_trainf_names 0 0 1 2 0 1 0 0read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)TrainFileCharacterNamesCharacterCountread_ocr_trainf 0 1 1 1 0 1 0 0read_ocr_trainf (Characters, TrainFile, CharacterNamesSingle)CharactersTrainFileCharacterNamesSinglecount_obj 1 0 0 1 0 1 0 0NumChars := |Characters|CharactersNumCharsassign 0 0 1 1 0 3 0 0ColLeftOff := -1-1ColLeftOffassign 0 0 1 1 0 3 0 0ColRightOff := 11ColRightOffassign 0 0 1 1 0 3 0 0RowLeftOff := -1-1RowLeftOffassign 0 0 1 1 0 3 0 0RowRightOff := 11RowRightOffassign 0 0 1 1 0 3 0 0AngleStartOff := -10-10AngleStartOffassign 0 0 1 1 0 3 0 0AngleEndOff := 1010AngleEndOffassign 0 0 1 1 0 3 0 0ErosionOff := 1.21.2ErosionOffassign 0 0 1 1 0 3 0 0DilationOff := 1.21.2DilationOfffor 0 0 3 1 0 3 0 0for i := 0 to NumChars-1 by 10NumChars-11iselect_obj 1 1 1 0 1 1 0 0    Char := Characters[i+1]CharactersChari+1assign 0 0 1 1 1 3 0 0    Class := CharacterNamesSingle[i]CharacterNamesSingle[i]Classthreshold 1 1 2 0 1 1 0 0    threshold (Char, CharRegion, 0, 120)CharCharRegion0120opening_circle 1 1 1 0 1 1 0 0    opening_circle (CharRegion, CharRegionOpening, 3)CharRegionCharRegionOpening3connection 1 1 0 0 1 1 0 0    connection (CharRegionOpening, CharConnect)CharRegionOpeningCharConnectselect_shape 1 1 4 0 1 1 0 0    select_shape (CharConnect, CharSelectedRegions, 'area', 'and', 1500, 30000)CharConnectCharSelectedRegions'area''and'150030000append_ocr_trainf 2 0 2 0 1 1 0 0    append_ocr_trainf (CharSelectedRegions, Char, Class, TrainFileBig)CharSelectedRegionsCharClassTrainFileBigfor 0 0 3 1 1 3 0 0    for m := RowLeftOff to RowRightOff by 1RowLeftOffRowRightOff1mfor 0 0 3 1 2 3 0 0        for n := ColLeftOff to ColRightOff by 1ColLeftOffColRightOff1nappend_ocr_translated 2 0 4 0 3 4 0 0            append_ocr_translated (CharSelectedRegions, Char, m, n, TrainFileBig, Class)CharSelectedRegionsCharmnTrainFileBigClassendfor 0 0 0 0 2 3 77 0        endforendfor 0 0 0 0 1 3 76 0    endforfor 0 0 3 1 1 3 0 0    for m := AngleStartOff to AngleEndOff by 1AngleStartOffAngleEndOff1mappend_ocr_rotated 1 0 3 0 2 4 0 0        append_ocr_rotated (Char, m, TrainFileBig, Class)CharmTrainFileBigClassendfor 0 0 0 0 1 3 81 0    endforappend_ocr_erosion 1 0 3 0 1 4 0 0    append_ocr_erosion (Char, ErosionOff, TrainFileBig, Class)CharErosionOffTrainFileBigClassappend_ocr_dilated 1 0 3 0 1 4 0 0    append_ocr_dilated (Char, DilationOff, TrainFileBig, Class)CharDilationOffTrainFileBigClassstop 0 0 0 0 1 3 0 1*     stop ()endfor 0 0 0 0 0 3 68 0endforcreate_ocr_class_svm 0 0 11 1 0 1 0 0create_ocr_class_svm (25, 25, 'constant', 'default', CharacterNames, 'rbf', 0.02, 0.05, 'one-versus-one', 'normalization', 10, OCRHandle)2525'constant''default'CharacterNames'rbf'0.020.05'one-versus-one''normalization'10OCRHandletrainf_ocr_class_svm 0 0 4 0 0 1 0 0trainf_ocr_class_svm (OCRHandle, TrainFileBig, 0.001, 'default')OCRHandleTrainFileBig0.001'default'write_ocr_class_svm 0 0 2 0 0 1 0 0write_ocr_class_svm (OCRHandle, TrainFileBig)OCRHandleTrainFileBigclear_ocr_class_svm 0 0 1 0 0 1 0 0clear_ocr_class_svm (OCRHandle)OCRHandlestop 0 0 0 0 0 3 0 1* stop ()comment 0 0 1 0 0 3 0 0* 读取字符读取字符read_ocr_class_svm 0 0 1 1 0 1 0 0read_ocr_class_svm (TrainFileBig, OCRSVMHandle)TrainFileBigOCRSVMHandlefor 0 0 3 1 0 3 0 0for i := 0 to 1 by 1011idev_set_draw 0 0 1 0 1 2 0 0    dev_set_draw ('margin')'margin'dev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('red')'red'read_image 0 1 1 0 1 1 0 0    read_image (Image, 'Image' + i$'03')Image'Image' + i$'03'get_domain 1 1 0 0 1 1 0 0    get_domain (Image, Domain)ImageDomaingray_histo 2 0 0 2 1 1 0 0    gray_histo (Domain, Image, AbsoluteHisto, RelativeHisto)DomainImageAbsoluteHistoRelativeHistohisto_to_thresh 0 0 2 2 1 1 0 0    histo_to_thresh (AbsoluteHisto, 5, MinThresh, MaxThresh)AbsoluteHisto5MinThreshMaxThreshthreshold 1 1 2 0 1 1 0 0    threshold (Image, Region, MinThresh[1], MaxThresh[1])ImageRegionMinThresh[1]MaxThresh[1]connection 1 1 0 0 1 1 0 0    connection (Region, ConnectedRegions)RegionConnectedRegionsselect_shape 1 1 4 0 1 1 0 0    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 90000, 200000)ConnectedRegionsSelectedRegions'area''and'90000200000count_obj 1 0 0 1 1 1 0 0    SelectNum := |SelectedRegions|SelectedRegionsSelectNumif 0 0 1 0 1 3 0 0    if (SelectNum>0)SelectNum>0dilation_circle 1 1 1 0 2 1 0 0        dilation_circle (SelectedRegions, RegionDilation, 6)SelectedRegionsRegionDilation6fill_up 1 1 0 0 2 1 0 0        fill_up (RegionDilation, RegionFillUp)RegionDilationRegionFillUpcomment 0 0 1 0 2 3 0 0*         得到数据区域得到数据区域erosion_circle 1 1 1 0 2 1 0 0        erosion_circle (RegionFillUp, RegionErosion, 7)RegionFillUpRegionErosion7reduce_domain 2 1 0 0 2 1 0 0        reduce_domain (Image, RegionErosion, ImageReduced)ImageRegionErosionImageReducedilluminate 1 1 3 0 2 1 0 0        illuminate (ImageReduced, ImageIlluminate, 101, 101, 0.7)ImageReducedImageIlluminate1011010.7threshold 1 1 2 0 2 1 0 0        threshold (ImageIlluminate, ReducedRegion, 0, 120)ImageIlluminateReducedRegion0120opening_circle 1 1 1 0 2 1 0 0        opening_circle (ReducedRegion, RegionOpening, 3)ReducedRegionRegionOpening3connection 1 1 0 0 2 1 0 0        connection (RegionOpening, DataConnect)RegionOpeningDataConnectselect_shape 1 1 4 0 2 1 0 0        select_shape (DataConnect, DataSelectedRegions, 'area', 'and', 900, 30000)DataConnectDataSelectedRegions'area''and'90030000count_seconds 0 0 0 1 2 1 0 0        count_seconds (StartSeconds)StartSecondsdo_ocr_multi_class_svm 2 0 1 1 2 1 0 0        do_ocr_multi_class_svm (DataSelectedRegions, ImageIlluminate, OCRSVMHandle, ReadOutClass)DataSelectedRegionsImageIlluminateOCRSVMHandleReadOutClasscount_seconds 0 0 0 1 2 1 0 0        count_seconds (EndSeconds)EndSecondsendif 0 0 0 0 1 3 106 0    endifdev_display 1 0 0 0 1 2 0 0    dev_display (Image)Imagedev_set_draw 0 0 1 0 1 2 0 0    dev_set_draw ('margin')'margin'dev_display 1 0 0 0 1 2 0 0    dev_display (DataSelectedRegions)DataSelectedRegionsassign 0 0 1 1 1 3 0 0    WasteTime := (EndSeconds-StartSeconds)*1000(EndSeconds-StartSeconds)*1000WasteTimedev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('red')'red'set_tposition 0 0 3 0 1 1 0 0    set_tposition (WindowHandle, 20, 12)WindowHandle2012write_string 0 0 2 0 1 1 0 0    write_string (WindowHandle, 'OCR结果:')WindowHandle'OCR结果:'set_tposition 0 0 3 0 1 1 0 0    set_tposition (WindowHandle, 60, 12)WindowHandle6012write_string 0 0 2 0 1 1 0 0    write_string (WindowHandle, ReadOutClass)WindowHandleReadOutClassdev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('green')'green'set_tposition 0 0 3 0 1 1 0 0    set_tposition (WindowHandle, 100, 12)WindowHandle10012write_string 0 0 2 0 1 1 0 0    write_string (WindowHandle, 'OCR耗时:')WindowHandle'OCR耗时:'set_tposition 0 0 3 0 1 1 0 0    set_tposition (WindowHandle, 140, 12)WindowHandle14012write_string 0 0 2 0 1 1 0 0    write_string (WindowHandle, WasteTime+'ms')WindowHandleWasteTime+'ms'stop 0 0 0 0 1 3 0 0    stop ()endfor 0 0 0 0 0 3 95 0endforclear_ocr_class_svm 0 0 1 0 0 1 0 0clear_ocr_class_svm (OCRSVMHandle)OCRSVMHandle53get_part 0 0 1 4 0 1 0 0get_part (WindowHandle, Row1Part, Column1Part, Row2Part, Column2Part)WindowHandleRow1PartColumn1PartRow2PartColumn2Partget_window_extents 0 0 1 4 0 1 0 0get_window_extents (WindowHandle, RowWin, ColumnWin, WidthWin, HeightWin)WindowHandleRowWinColumnWinWidthWinHeightWinif 0 0 1 0 0 3 0 0if (Row=-1)Row=-1assign 0 0 1 1 1 3 0 0    Row := 1212Rowendif 0 0 0 0 0 3 3 0endifif 0 0 1 0 0 3 0 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -