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

📄 ocrblock.h

📁 一OCR的相关资料。.希望对研究OCR的朋友有所帮助.
💻 H
字号:
/********************************************************************** * File:        ocrblock.h  (Formerly block.h) * Description: Page block class definition. * Author:		Ray Smith * Created:		Thu Mar 14 17:32:01 GMT 1991 * * (C) Copyright 1991, Hewlett-Packard Ltd. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * **********************************************************************/#ifndef           OCRBLOCK_H#define           OCRBLOCK_H#include          "img.h"#include          "ocrrow.h"#include          "pageblk.h"#include          "pdblock.h"class BLOCK;                     //forward declELISTIZEH_S (BLOCK)class BLOCK:public ELIST_LINK, public PDBLK//page block{  friend class BLOCK_RECT_IT;    //block iterator                                 //block label  friend void scan_hpd_blocks(const char *name,                              PAGE_BLOCK_LIST *page_blocks,  //head of full pag                              INT32 &block_no,               //no of blocks                              BLOCK_IT *block_it);  friend BOOL8 read_vec_file(              //read uscan output                             STRING name,  //basename of file                             INT32 xsize,  //page size //output list                             INT32 ysize,                             BLOCK_LIST *blocks);  friend BOOL8 read_pd_file(              //read uscan output                            STRING name,  //basename of file                            INT32 xsize,  //page size //output list                            INT32 ysize,                            BLOCK_LIST *blocks);  public:    BLOCK() {  //empty constructor      hand_block = NULL;      hand_poly = NULL;    }    BLOCK(                   //simple constructor          const char *name,  //filename          BOOL8 prop,        //proportional          INT16 kern,        //kerning          INT16 space,       //spacing          INT16 xmin,        //bottom left          INT16 ymin,          INT16 xmax,        //top right          INT16 ymax);    //      void                                            set_sides(                                                 //set vertex lists    //              ICOORDELT_LIST       *left,                        //list of left vertices    //              ICOORDELT_LIST       *right);                      //list of right vertices    ~BLOCK () {                  //destructor    }    void set_stats(                   //set space size etc.                   BOOL8 prop,        //proportional                   INT16 kern,        //inter char size                   INT16 space,       //inter word size                   INT16 ch_pitch) {  //pitch if fixed      proportional = prop;      kerning = (INT8) kern;      spacing = space;      pitch = ch_pitch;    }    void set_xheight(  //set char size                     INT32 height) {      xheight = height;    }    void set_font_class(  //set font class                        INT16 font) {      font_class = font;    }    //      TEXT_REGION*                            text_region()    //      {    //              return hand_block;    //      }    //      POLY_BLOCK*                                     poly_block()    //      {    //              return hand_poly;    //      }    BOOL8 prop() const {  //return proportional      return proportional;    }    INT32 fixed_pitch() const {  //return pitch      return pitch;    }    INT16 kern() const {  //return kerning      return kerning;    }    INT16 font() const {  //return font class      return font_class;    }    INT16 space() const {  //return spacing      return spacing;    }    const char *name() const {  //return filename      return filename.string ();    }    INT32 x_height() const {  //return xheight      return xheight;    }    ROW_LIST *row_list() {  //get rows      return &rows;    }    C_BLOB_LIST *blob_list() {  //get blobs      return &c_blobs;    }    C_BLOB_LIST *reject_blobs() {       return &rej_blobs;    }    //      void                                                    bounding_box(                                           //get box    //              ICOORD&                                 bottom_left,                                            //bottom left    //              ICOORD&                                 top_right) const                                        //topright    //      {    //              bottom_left=box.botleft();    //              top_right=box.topright();    //      }    //      const BOX&                                      bounding_box() const                            //get real box    //      {    //              return box;    //      }    //      BOOL8                                                   contains(                                                       //is pt inside block    //              ICOORD                                  pt);    //      void                                                    move(                                                                   // reposition block    //         const ICOORD                 vec);                                                                   // by vector    void sort_rows();  //decreasing y order    void compress();  //shrink white space    void check_pitch();  //check proportional    void compress(                    //shrink white space                  const ICOORD vec);  //and move by vector    void print(              //print summary/table               FILE *fp,     //file to print on               BOOL8 dump);  //dump whole table    //      void                                                    plot(                                                                   //draw histogram    //              WINDOW                                  window,                                                         //window to draw in    //              INT32                                           serial,                                                         //serial number    //              COLOUR                                  colour);                                                                //colour to draw in    //      void                                                    show(                                                                   //show image    //              IMAGE                                           *image,                                                         //image to show    //              WINDOW                                  window);                                                                //window to show in    void prep_serialise() {  //set ptrs to counts      filename.prep_serialise ();      rows.prep_serialise ();      c_blobs.prep_serialise ();      rej_blobs.prep_serialise ();      leftside.prep_serialise ();      rightside.prep_serialise ();    }    void dump(  //write external bits              FILE *f) {      filename.dump (f);      rows.dump (f);      c_blobs.dump (f);      rej_blobs.dump (f);      leftside.dump (f);      rightside.dump (f);      if (hand_block != NULL)        hand_block->serialise (f);    }    void de_dump(  //read external bits                 FILE *f) {      filename.de_dump (f);      rows.de_dump (f);      c_blobs.de_dump (f);      rej_blobs.de_dump (f);      leftside.de_dump (f);      rightside.de_dump (f);      if (hand_block != NULL)        hand_block = TEXT_REGION::de_serialise (f);    }                                 //assignment    make_serialise (BLOCK) BLOCK & operator= (      const BLOCK & source);     //from this  private:    BOOL8 proportional;          //proportional    INT8 kerning;                //inter blob gap    INT16 spacing;               //inter word gap    INT16 pitch;                 //pitch of non-props    INT16 font_class;            //correct font class    INT32 xheight;               //height of chars    STRING filename;             //name of block    //      TEXT_REGION*                            hand_block;                                                     //if it exists    //      POLY_BLOCK*                                     hand_poly;                                                      //wierd as well    ROW_LIST rows;               //rows in block    C_BLOB_LIST c_blobs;         //before textord    C_BLOB_LIST rej_blobs;       //duff stuff    //      ICOORDELT_LIST                          leftside;                                                       //left side vertices    //      ICOORDELT_LIST                          rightside;                                                      //right side vertices    //      BOX                                                     box;                                                                    //bounding box};int decreasing_top_order(  //                         const void *row1,                         const void *row2);#endif

⌨️ 快捷键说明

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