leptonica_pageseg_interface.cpp

来自「一个google的OCR源码」· C++ 代码 · 共 83 行

CPP
83
字号
///////////////////////////////////////////////////////////////////////// File:        leptonica_pageseg_interface.cpp// Description: Leptonica-based page segmenter interface.// Author:      Thomas Kielbus// Created:     Mon Aug 27 10:05:01 PDT 2007//// (C) Copyright 2007, Google Inc.// 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./////////////////////////////////////////////////////////////////////////// Include automatically generated configuration file if running autoconf.#ifdef HAVE_CONFIG_H#include "config_auto.h"#endif#include "leptonica_pageseg_interface.h"#include "leptonica_pageseg.h"#include "imgs.h"#ifdef HAVE_LIBLEPT// Include leptonica library only if autoconf (or makefile etc) tell us to.#include "allheaders.h"#endif#ifdef HAVE_LIBLEPT// ONLY available if you have Leptonica installed.// Use the LeptonicaPageSeg class to perform text block detection. Propagates// the error if any. LeptonicaPageSeg can also return invalid masks; in this// case, return an empty text block mask.bool leptonica_pageseg_get_textblock_mask(IMAGE* page_image,                                          IMAGE* textblock_mask_image) {  bool success = true;  // Convert the page IMAGE to a PIX  PIX* page_pix = page_image->ToPix();  // Compute the textblock mask PIX  PIX* textblock_mask_pix = NULL;  if (LeptonicaPageSeg::GetTextblockMask(page_pix, &textblock_mask_pix,                                         NULL, NULL, false)) {    if (pixGetWidth(textblock_mask_pix) != page_image->get_xsize() ||        pixGetWidth(textblock_mask_pix) != page_image->get_xsize())      fprintf(stderr, "WARNING: Leptonica's text block mask (%dx%d)"              " and the original image (%dx%d) differ in size !\n",              pixGetWidth(textblock_mask_pix), pixGetHeight(textblock_mask_pix),              page_image->get_xsize(), page_image->get_ysize());    // Create the resulting mask image    textblock_mask_image->destroy();    if (pixGetWidth(textblock_mask_pix) <= 0 ||        pixGetHeight(textblock_mask_pix) <= 0) {      // Leptonica failed. Create an empty mask.      fprintf(stderr, "WARNING: Leptonica's text block mask is invalid.\n");      textblock_mask_image->create(page_image->get_xsize(),                                   page_image->get_ysize(), 1);    } else {      // Leptonica succeeded. Convert textblock_mask PIX to an IMAGE      textblock_mask_image->FromPix(textblock_mask_pix);    }  } else {    success = false;  }  pixDestroy(&page_pix);  pixDestroy(&textblock_mask_pix);  return success;}#endif  // HAVE_LIBLEPT

⌨️ 快捷键说明

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