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

📄 demoocr.dev

📁 我从事工业自动化软件编程三年了,今天真高兴在这里下到了一个很好的资料,现分享一下我平时工作中极有用的一些资料,这个是halcon用于电子产品时的ocr检测 如果想做ocr识别的朋友应该有所帮助!
💻 DEV
📖 第 1 页 / 共 2 页
字号:
if (Column=-1)Column=-1assign 0 0 1 1 1 3 0 0    Column := 1212Columnendif 0 0 0 0 0 3 6 0endifassign 0 0 1 1 0 3 0 0String := ' '+String+' '' '+String+' 'Stringget_string_extents 0 0 2 4 0 1 0 0get_string_extents (WindowHandle, String, Ascent, Descent, Width, Height)WindowHandleStringAscentDescentWidthHeightcomment 0 0 1 0 0 3 0 1* Adapt Height for different font sizes!Adapt Height for different font sizes!assign 0 0 1 1 0 3 0 0Height := 2424Heightcomment 0 0 1 0 0 3 0 1* Adapt text position and extents because of image zoomingAdapt text position and extents because of image zoomingassign 0 0 1 1 0 3 0 0FactorRow := 1.*(Row2Part-Row1Part+1)/HeightWin1.*(Row2Part-Row1Part+1)/HeightWinFactorRowassign 0 0 1 1 0 3 0 0FactorColumn := 1.*(Column2Part-Column1Part+1)/WidthWin1.*(Column2Part-Column1Part+1)/WidthWinFactorColumnget_draw 0 0 1 1 0 1 0 0get_draw (WindowHandle, DrawMode)WindowHandleDrawModeget_rgb 0 0 1 3 0 1 0 0get_rgb (WindowHandle, Red, Green, Blue)WindowHandleRedGreenBluedev_set_draw 0 0 1 0 0 2 0 0dev_set_draw ('fill')'fill'ifelse 0 0 1 0 0 3 0 0if (WindowCoordinates)WindowCoordinatesdev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('light gray')'light gray'assign 0 0 1 1 1 3 0 0    R1_S := (Row+3)*FactorRow+0.5+Row1Part(Row+3)*FactorRow+0.5+Row1PartR1_Sassign 0 0 1 1 1 3 0 0    C1_S := (Column+3)*FactorColumn+0.5+Column1Part(Column+3)*FactorColumn+0.5+Column1PartC1_Sassign 0 0 1 1 1 3 0 0    R2_S := (Row+3+Height-1)*FactorRow+0.5+Row1Part(Row+3+Height-1)*FactorRow+0.5+Row1PartR2_Sassign 0 0 1 1 1 3 0 0    C2_S := (Column+3+Width-1)*FactorColumn+0.5+Column1Part(Column+3+Width-1)*FactorColumn+0.5+Column1PartC2_Sdisp_rectangle1 0 0 5 0 1 1 0 0    disp_rectangle1 (WindowHandle, R1_S, C1_S, R2_S, C2_S)WindowHandleR1_SC1_SR2_SC2_Sdev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('white')'white'assign 0 0 1 1 1 3 0 0    R1 := Row*FactorRow+0.5+Row1PartRow*FactorRow+0.5+Row1PartR1assign 0 0 1 1 1 3 0 0    C1 := Column*FactorColumn+0.5+Column1PartColumn*FactorColumn+0.5+Column1PartC1assign 0 0 1 1 1 3 0 0    R2 := (Row+Height-1)*FactorRow+0.5+Row1Part(Row+Height-1)*FactorRow+0.5+Row1PartR2assign 0 0 1 1 1 3 0 0    C2 := (Column+Width-1)*FactorColumn+0.5+Column1Part(Column+Width-1)*FactorColumn+0.5+Column1PartC2disp_rectangle1 0 0 5 0 1 1 0 0    disp_rectangle1 (WindowHandle, R1, C1, R2, C2)WindowHandleR1C1R2C2dev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('black')'black'set_tposition 0 0 3 0 1 1 0 0    set_tposition (WindowHandle, R1, C1)WindowHandleR1C1else 0 0 0 0 0 3 19 0elsedev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('light gray')'light gray'assign 0 0 1 1 1 3 0 0    R1_S := Row+3Row+3R1_Sassign 0 0 1 1 1 3 0 0    C1_S := Column+3Column+3C1_Sassign 0 0 1 1 1 3 0 0    R2_S := (Row+3)+(Height-1)*FactorRow+0.5(Row+3)+(Height-1)*FactorRow+0.5R2_Sassign 0 0 1 1 1 3 0 0    C2_S := (Column+3)+(Width-1)*FactorColumn+0.5(Column+3)+(Width-1)*FactorColumn+0.5C2_Sdisp_rectangle1 0 0 5 0 1 1 0 0    disp_rectangle1 (WindowHandle, R1_S, C1_S, R2_S, C2_S)WindowHandleR1_SC1_SR2_SC2_Sdev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('white')'white'assign 0 0 1 1 1 3 0 0    R1 := RowRowR1assign 0 0 1 1 1 3 0 0    C1 := ColumnColumnC1assign 0 0 1 1 1 3 0 0    R2 := Row+(Height-1)*FactorRow+0.5Row+(Height-1)*FactorRow+0.5R2assign 0 0 1 1 1 3 0 0    C2 := Column+(Width-1)*FactorColumn+0.5Column+(Width-1)*FactorColumn+0.5C2disp_rectangle1 0 0 5 0 1 1 0 0    disp_rectangle1 (WindowHandle, R1, C1, R2, C2)WindowHandleR1C1R2C2dev_set_color 0 0 1 0 1 2 0 0    dev_set_color ('black')'black'set_tposition 0 0 3 0 1 1 0 0    set_tposition (WindowHandle, Row, Column)WindowHandleRowColumnendif 0 0 0 0 0 3 34 0endifwrite_string 0 0 2 0 0 1 0 0write_string (WindowHandle, String)WindowHandleStringdev_set_draw 0 0 1 0 0 2 0 0dev_set_draw (DrawMode)DrawModeset_rgb 0 0 4 0 0 1 0 0set_rgb (WindowHandle, Red, Green, Blue)WindowHandleRedGreenBluereturn 0 0 0 0 0 3 0 0return ()10hom_mat2d_identity 0 0 0 1 0 1 0 0hom_mat2d_identity (HomMat2DIdentity)HomMat2DIdentityhom_mat2d_translate 0 0 3 1 0 1 0 0hom_mat2d_translate (HomMat2DIdentity, Row, Column, HomMat2DTranslate)HomMat2DIdentityRowColumnHomMat2DTranslateaffine_trans_image 1 1 3 0 0 1 0 0affine_trans_image (CharacterImage, CharacterTrans, HomMat2DTranslate, 'constant', 'false')CharacterImageCharacterTransHomMat2DTranslate'constant''false'expand_domain_gray 1 1 1 0 0 1 0 0expand_domain_gray (CharacterTrans, CharacterExpanded, 1)CharacterTransCharacterExpanded1threshold 1 1 2 0 0 1 0 0threshold (CharacterExpanded, CharExpandRegion, 0, 120)CharacterExpandedCharExpandRegion0120opening_circle 1 1 1 0 0 1 0 0opening_circle (CharExpandRegion, CharExpandOpening, 3)CharExpandRegionCharExpandOpening3connection 1 1 0 0 0 1 0 0connection (CharExpandOpening, CharExpandConnected)CharExpandOpeningCharExpandConnectedselect_shape 1 1 4 0 0 1 0 0select_shape (CharExpandConnected, CharExpandSelected, 'area', 'and', 1500, 30000)CharExpandConnectedCharExpandSelected'area''and'150030000append_ocr_trainf 2 0 2 0 0 1 0 0append_ocr_trainf (CharExpandSelected, CharacterExpanded, Class, FileName)CharExpandSelectedCharacterExpandedClassFileNamereturn 0 0 0 0 0 3 0 0return ()8rotate_image 1 1 2 0 0 1 0 0rotate_image (Character, CharacterRotated, Rot, 'weighted')CharacterCharacterRotatedRot'weighted'full_domain 1 1 0 0 0 1 0 0full_domain (CharacterRotated, CharacterExpanded)CharacterRotatedCharacterExpandedthreshold 1 1 2 0 0 1 0 0threshold (CharacterExpanded, CharExpandedRegion, 0, 100)CharacterExpandedCharExpandedRegion0100opening_circle 1 1 1 0 0 1 0 0opening_circle (CharExpandedRegion, RegionOpening, 3)CharExpandedRegionRegionOpening3connection 1 1 0 0 0 1 0 0connection (RegionOpening, ConnectedRegions)RegionOpeningConnectedRegionsselect_shape 1 1 4 0 0 1 0 0select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1500, 30000)ConnectedRegionsSelectedRegions'area''and'150030000append_ocr_trainf 2 0 2 0 0 1 0 0append_ocr_trainf (SelectedRegions, CharacterExpanded, Class, TrainFile)SelectedRegionsCharacterExpandedClassTrainFilereturn 0 0 0 0 0 3 0 0return ()7gray_dilation_shape 1 1 3 0 0 1 0 0gray_dilation_shape (Character, CharacterDilated, MaskSize, MaskSize, 'rhombus')CharacterCharacterDilatedMaskSizeMaskSize'rhombus'threshold 1 1 2 0 0 1 0 0threshold (CharacterDilated, CharDilatedRegion, 0, 100)CharacterDilatedCharDilatedRegion0100opening_circle 1 1 1 0 0 1 0 0opening_circle (CharDilatedRegion, RegionOpening, 3)CharDilatedRegionRegionOpening3connection 1 1 0 0 0 1 0 0connection (RegionOpening, ConnectedRegions)RegionOpeningConnectedRegionsselect_shape 1 1 4 0 0 1 0 0select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1500, 30000)ConnectedRegionsSelectedRegions'area''and'150030000append_ocr_trainf 2 0 2 0 0 1 0 0append_ocr_trainf (SelectedRegions, CharacterDilated, Class, TrainFile)SelectedRegionsCharacterDilatedClassTrainFilereturn 0 0 0 0 0 3 0 0return ()7gray_erosion_shape 1 1 3 0 0 1 0 0gray_erosion_shape (Character, CharacterEroded, MaskSize, MaskSize, 'rhombus')CharacterCharacterErodedMaskSizeMaskSize'rhombus'threshold 1 1 2 0 0 1 0 0threshold (CharacterEroded, CharErodedRegion, 0, 100)CharacterErodedCharErodedRegion0100opening_circle 1 1 1 0 0 1 0 0opening_circle (CharErodedRegion, RegionOpening, 3)CharErodedRegionRegionOpening3connection 1 1 0 0 0 1 0 0connection (RegionOpening, ConnectedRegions)RegionOpeningConnectedRegionsselect_shape 1 1 4 0 0 1 0 0select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1500, 30000)ConnectedRegionsSelectedRegions'area''and'150030000append_ocr_trainf 2 0 2 0 0 1 0 0append_ocr_trainf (SelectedRegions, CharacterEroded, Class, TrainFile)SelectedRegionsCharacterErodedClassTrainFilereturn 0 0 0 0 0 3 0 0return ()18get_image_pointer1 1 0 0 4 0 1 0 0get_image_pointer1 (Char, Pointer, Type, Width, Height)CharPointerTypeWidthHeightassign 0 0 1 1 0 3 0 0EroDil := rand(1)*4-2rand(1)*4-2EroDilifelse 0 0 1 0 0 3 0 0if (EroDil < 0)EroDil < 0gray_erosion_shape 1 1 3 0 1 1 0 0    gray_erosion_shape (Char, CharEroDil, 1-EroDil, 1-EroDil, 'rhombus')CharCharEroDil1-EroDil1-EroDil'rhombus'else 0 0 0 0 0 3 3 0elsegray_dilation_shape 1 1 3 0 1 1 0 0    gray_dilation_shape (Char, CharEroDil, 1+EroDil, 1+EroDil, 'rhombus')CharCharEroDil1+EroDil1+EroDil'rhombus'endif 0 0 0 0 0 3 5 0endifhom_mat2d_identity 0 0 0 1 0 1 0 0hom_mat2d_identity (HomMat2DIdentity)HomMat2DIdentityhom_mat2d_rotate 0 0 4 1 0 1 0 0hom_mat2d_rotate (HomMat2DIdentity, rad(rand(1)*20-10), Height/2, Width/2, HomMat2DRotate)HomMat2DIdentityrad(rand(1)*20-10)Height/2Width/2HomMat2DRotatehom_mat2d_translate 0 0 3 1 0 1 0 0hom_mat2d_translate (HomMat2DRotate, rand(1)*2-1, rand(1)*2-1, HomMat2DTranslate)HomMat2DRotaterand(1)*2-1rand(1)*2-1HomMat2DTranslateaffine_trans_image 1 1 3 0 0 1 0 0affine_trans_image (CharEroDil, CharTrans, HomMat2DTranslate, 'constant', 'false')CharEroDilCharTransHomMat2DTranslate'constant''false'expand_domain_gray 1 1 1 0 0 1 0 0expand_domain_gray (CharTrans, CharExpanded, 2)CharTransCharExpanded2gen_image_proto 1 1 1 0 0 1 0 0gen_image_proto (CharExpanded, ImageBlank, 128)CharExpandedImageBlank128add_noise_white 1 1 1 0 0 1 0 0add_noise_white (ImageBlank, ImageNoise, 60)ImageBlankImageNoise60smooth_image 1 1 2 0 0 1 0 0smooth_image (ImageNoise, ImageSmooth, 'gauss', 1)ImageNoiseImageSmooth'gauss'1scale_image 1 1 2 0 0 1 0 0scale_image (ImageSmooth, ImageScaled, 3, -256)ImageSmoothImageScaled3-256add_image 2 1 2 0 0 1 0 0add_image (CharExpanded, ImageScaled, CharDistort, 1, -128)CharExpandedImageScaledCharDistort1-128return 0 0 0 0 0 3 0 0return ()52open_file 0 0 2 1 0 1 0 0open_file ('.//OCRData//OCRData.dat', 'input', FileHandle)'.//OCRData//OCRData.dat''input'FileHandleassign 0 0 1 1 0 3 0 0m := 00massign 0 0 1 1 0 3 0 0IsEOF := 00IsEOFassign 0 0 1 1 0 3 0 0Classes := [][]Classesassign 0 0 1 1 0 3 0 0SerialNo := [][]SerialNowhile 0 0 1 0 0 3 0 0while (IsEOF=0)IsEOF=0tuple_mod 0 0 2 1 1 1 0 0    tuple_mod (m, 5, Mod)m5Modifelse 0 0 1 0 1 3 0 0    if (Mod=0)Mod=0fread_string 0 0 1 2 2 1 0 0        fread_string (FileHandle, OutString, IsEOF)FileHandleOutStringIsEOFassign 0 0 1 1 2 3 0 0        SerialNo := [SerialNo,OutString][SerialNo,OutString]SerialNoassign 0 0 1 1 2 3 0 0        m := 00melse 0 0 0 0 1 3 8 0    elsefread_string 0 0 1 2 2 1 0 0        fread_string (FileHandle, OutString, IsEOF)FileHandleOutStringIsEOFassign 0 0 1 1 2 3 0 0        Classes := [Classes,OutString][Classes,OutString]Classesendif 0 0 0 0 1 3 12 0    endifassign 0 0 1 1 1 3 0 0    m := m+1m+1mendwhile 0 0 0 0 0 3 6 0endwhilestop 0 0 0 0 0 3 0 0stop ()close_file 0 0 1 0 0 1 0 0close_file (FileHandle)FileHandleassign 0 0 1 1 0 3 0 0m := (ImageStart-1)*4(ImageStart-1)*4mfor 0 0 3 1 0 3 0 0for i := ImageStart to ImageEnd by 1ImageStartImageEnd1iread_image 0 1 1 0 1 1 0 0    read_image (Image, './/image//'+i$'01')Image'.//image//'+i$'01'get_image_pointer1 1 0 0 4 1 1 0 1*     get_image_pointer1 (Image, Pointer, Type, Width, Height)ImagePointerTypeWidthHeightdev_open_window 0 0 5 1 1 2 0 1*     dev_open_window (0, 0, Width*4, Height*4, 'black', WindowHandle)00Width*4Height*4'black'WindowHandledev_display 1 0 0 0 1 2 0 1*     dev_display (Image)Imagecomment 0 0 1 0 1 3 0 1*     Reduce each connected component (character) to its original shape.Reduce each connected component (character) to its original shape.decompose3 1 3 0 0 1 1 0 0    decompose3 (Image, Image1, Image2, Image3)ImageImage1Image2Image3trans_from_rgb 3 3 1 0 1 1 0 0    trans_from_rgb (Image3, Image3, Image3, ImageResult1, ImageResult2, ImageResult3, 'hsv')Image3Image3Image3ImageResult1ImageResult2ImageResult3'hsv'threshold 1 1 2 0 1 1 0 0    threshold (ImageResult3, Region, 0, 254)ImageResult3Region0254reduce_domain 2 1 0 0 1 1 0 0    reduce_domain (ImageResult3, Region, ImageReduced)ImageResult3RegionImageReducedexpand_domain_gray 1 1 1 0 1 1 0 0    expand_domain_gray (ImageReduced, ExpandedImage, 2)ImageReducedExpandedImage2get_domain 1 1 0 0 1 1 0 0    get_domain (ExpandedImage, Domain)ExpandedImageDomaingray_histo 2 0 0 2 1 1 0 0    gray_histo (Domain, ExpandedImage, AbsoluteHisto, RelativeHisto)DomainExpandedImageAbsoluteHistoRelativeHistohisto_to_thresh 0 0 2 2 1 1 0 0    histo_to_thresh (RelativeHisto, 2, MinThresh, MaxThresh)RelativeHisto2MinThreshMaxThreshdev_display 1 0 0 0 1 2 0 0    dev_display (ExpandedImage)ExpandedImagethreshold 1 1 2 0 1 1 0 0    threshold (ExpandedImage, ExpandedImageRegion, MaxThresh[0], 255)ExpandedImageExpandedImageRegionMaxThresh[0]255connection 1 1 0 0 1 1 0 0    connection (ExpandedImageRegion, ConnectedRegions)ExpandedImageRegionConnectedRegionsintersection 2 1 0 0 1 1 0 0    intersection (ConnectedRegions, ExpandedImageRegion, RegionIntersection)ConnectedRegionsExpandedImageRegionRegionIntersectionselect_shape 1 1 4 0 1 1 0 0    select_shape (RegionIntersection, SelectedRegions, 'area', 'and', 20, 250)RegionIntersectionSelectedRegions'area''and'20250comment 0 0 1 0 1 3 0 1*     Sort the characters line-by-line.Sort the characters line-by-line.sort_region 1 1 3 0 1 1 0 0    sort_region (SelectedRegions, Characters, 'first_point', 'true', 'column')SelectedRegionsCharacters'first_point''true''column'comment 0 0 1 0 1 3 0 1*     Compute the true class of each character.Compute the true class of each character.count_obj 1 0 0 1 1 1 0 0    Number := |Characters|CharactersNumberrgb1_to_gray 1 1 0 0 1 1 0 1*     rgb1_to_gray (Image, GrayImage)ImageGrayImagefor 0 0 3 1 1 3 0 0    for J := 1 to Number by 11Number1Jselect_obj 1 1 1 0 2 1 0 0        ObjectSelected := Characters[J]CharactersObjectSelectedJassign 0 0 1 1 2 3 0 0        SingleClasses := Classes[m]Classes[m]SingleClassesappend_ocr_trainf 2 0 2 0 2 1 0 0        append_ocr_trainf (ObjectSelected, ExpandedImage, SingleClasses, TrainFileName)ObjectSelectedExpandedImageSingleClassesTrainFileNameassign 0 0 1 1 2 3 0 0        m := m+1m+1mendfor 0 0 0 0 1 3 45 0    endforendfor 0 0 0 0 0 3 21 0endforreturn 0 0 0 0 0 3 0 0return ()

⌨️ 快捷键说明

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