フレームを表示

L_AutoZoneBitmap

フレームを表示

#include "l_bitmap.h"

L_LTIMGCOR_API L_INT EXT_FUNCTION L_AutoZoneBitmappBitmap、phZones、puCount、uFlags、pCallback、pUserData

pBITMAPHANDLE pBitmap;

/* ビットマップハンドルへのポインター*/

pLEADZONE * phZones;

/* 検出したゾーンでアップデートされる操作機能のポインター*/

L_UINT32 * puCount;

/* 検出したゾーンのカウント*/

L_UINT32 uFlags;

/* フラグ*/

AUTOZONECALLBACK pCallback;

/* オプションのコールバック関数*/

L_VOID * pUserData;

/* コールバックのためのより多くのパラメータへのポインター*/

自動的に、検出様々なゾーンは、image(そうすることはOCR前処理から認識結果を改善します)で、タイプします(テキスト、グラフィクスと表)。この関数は、混合ラスターコンテンツ(MRC)イメージの範囲内で自動的にイメージ、テーブルとテキストを切り離す必要がある任意のアプリケーションに役立ちます。

パラメーター

説明

pBitmap

ゾーンが検出されるビットマップを参照文に引用しているビットマップハンドルへのポインター。

phZones

検出したゾーンでアップデートされるハンドルへのポインター。検出したゾーンについてデータを検索することは、GlobalLockが機能させるpLEADZONEと呼び出しphZonesをキャストしました。

puCount

検出したゾーンの数で更新される変数へのポインタ。

uFlags

関数がどのようにふるまわなければならないかについて示しているFlags。ビットごとのORを用いて適切なとき、値を結合します( | )。設定可能な値は、以下の通りです。

 

どの種類のゾーンを検出するべきかについて示しているFlags:(これらの1つは必須です)

 

意味

 

AUTOZONE_DETECT_TEXT

[0x0001]、テキストゾーンを検出します。

 

AUTOZONE_DETECT_GRAPHIC

[0x0002]、グラフィックゾーンを検出します。

 

AUTOZONE_DETECT_TABLE

[0x0004]、テーブルゾーンを検出します。

 

AUTOZONE_DETECT_ALL

[0x0007]、すべてのゾーンタイプ(テキスト、グラフィクスと表)を検出します。

 

ゾーンの間で重なるのを許すべきかどうか示しているFlags:(オプション)

 

意味

 

AUTOZONE_DONT_ALLOW_OVERLAP

[0x0000]、ゾーンが重なるのを許しません。

 

AUTOZONE_ALLOW_OVERLAP

[0x0010]、重なるのにゾーンを見込みます。

 

Flagsは、テキストゾーンを結合する方法を示します:(オプション)

 

意味

 

AUTOZONE_ACCURATE_ZONES

[0x0000]、テキストゾーンを結合しません、そして、切り離して(パラグラフ)おきます。

 

AUTOZONE_GENERAL_ZONES

[0x0100]、できる限りテキストゾーンを結合します。

 

Flagsは、テーブルゾーン検出のためにオプションを示します:(オプション)

 

意味

 

AUTOZONE_DONT_RECOGNIZE_ONE_CELL_TABLE

[0x0000]、1セルテーブル(境界)を無視します、そして、中にあることを検出します。

 

AUTOZONE_RECOGNIZE_ONE_CELL_TABLE

[0x1000]、境界を1セルテーブルと思います。

 

AUTOZONE_NORMAL_TABLE       (バージョン17、または、後)

[0x0000]、正規表検出を使います。

 

AUTOZONE_ADVANCED_TABLE     (バージョン17、または、後)

[0x2000]、より多くの正確な結果を返して、複合表を検出する高度な表検出を使います。

 

AUTOZONE_LINES_RECONSTRUCTION     (バージョン17、または、後)

[0x4000]、模様のついたテーブルのために、そして、点線を接続するために、ライン再建を使います。

 

マルチスレッディングを使うべきかどうか示しているFlags:(オプション)

 

意味

 

AUTOZONE_USE_MULTITHREADING

[0x00000000]、マルチスレッディング(マルチコアCPUのためにより高速)を使います。

 

AUTOZONE_DONTUSE_MULTITHREADING

[0x80000000]、マルチスレッディング(単一のコアCPUのために必要な)を使いません。

 

それが格納するすべてがテキストであるように、ビットマップが変更されなければならないことを示しているフラグ:(オプション)

 

意味

 

AUTOZONE_TEXT_DETECTION

[0x8000]、設定されるならば、関数はphZonesでテキストゾーンを返しません。代わりに、テキスト領域だけを持っていることは、pBitmapを修正します:グラフィクスとテーブル領域は、入力イメージから削除されます。

注意:それを保持したいならば、オリジナルのimageのコピーを作成します、この関数がいつかはAUTOZONE_TEXT_DETECTIONに設定するため、オリジナルのimageは修正されます。

pCallback

追加の処理のためのオプションのコールバック関数。

 

  • コールバック関数を提供しないならば、このパラメーターの値としてNULLを使います。

 

  • コールバック関数を提供するならば、このパラメーターの値として関数ポインターを使用します。

 

コールバック関数は、AUTOZONECALLBACK関数で説明される関数のプロトタイプに準拠しなければなりません。

pUserData

コールバック関数が必要とする一つ以上の追加のパラメータを渡すために使用することができるボイドポインター。

 

この機能を使用するには、値を変数に割り当てるか、必要な数のフィールドを格納する構造体を作成します。その後、このパラメーターで、変数または構造体のアドレスを渡し、L_VOID *に呼び出します。独自のpUserDataパラメーターでアドレスを受け取るコールバック関数は、適切なデータタイプのポインターにキャストし変数や構造体にアクセスします。

 

追加のパラメータが必要でないならば、NULLを渡します。

戻り値

SUCCESS

関数は成功しました。

<1

エラーが発生しました。リターンコードを参照してください

コメント

この関数を使った後に、L_FreeZoneDataを用いて無料のphZonesは、機能します。

状況表示バーを更新するか、この関数の実行の間、ユーザー割り込みを検出するために、L_SetStatusCallback関数を参照します。

この関数は、12と16ビットグレースケールと48と64ビットカラーイメージをサポートしません。imageが12と16ビットグレースケールと48と64ビットカラーであるならば、関数はエラーを返しません。

この関数は、符合付きデータイメージをサポートしません。符合付きデータイメージがこの関数に渡されるならば、それはエラーコードERROR_SIGNED_DATA_NOT_SUPPORTEDを返します。

この関数は、32ビットグレースケールイメージをサポートしません。32ビットグレースケールimageがこの関数に渡されるならば、それはERROR_GRAY32_UNSUPPORTEDエラーコードを返します。

必須のDLLとライブラリ

LTIMGCOR

ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください

プラットホーム

Win32、x64、Linux

参照

関数:

L_FreeZoneData, L_DespeckleBitmap, L_WindowLevel, L_ApplyTransformationParameters, L_GetMarksCenterMassBitmap, L_GetTransformationParameters, L_IsRegMarkBitmap, L_SearchRegMarksBitmap

トピック:

ラスター画像は機能します:Document Imaging

 

ラスター画像は機能します:画像の処理

 

画像の処理

サンプル

imageがゾーンに分ける検出と戻りは、結果です。

#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName


L_LTIMGTEX_API  L_INT AutoZoneBitmapExample(L_VOID)
{
   L_INT nRet;
   BITMAPHANDLE LeadBitmap;   /* Bitmap handle to hold the loaded image. */
   pLEADZONE pZones = NULL;
   L_UINT32 count = 0;
   L_INT TextZonesCount = 0;
   L_INT GraphicZonesCount = 0;
   L_INT TableZonesCount = 0;
   L_INT CellsCount = 0;
   L_UINT i;

   nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("Clean.tif")), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
   if(nRet !=SUCCESS)
      return nRet;


   nRet = L_AutoZoneBitmap(&LeadBitmap,
                           &pZones,
                           &count,
                           AUTOZONE_DETECT_TEXT,
                           NULL,
                           NULL);

   if(nRet !=SUCCESS)
      return nRet;

   for(i=0; i<count; i++)
   {
      if (pZones[i].uZoneType == LEAD_ZONE_TYPE_TEXT)
      {
         TextZonesCount++;
      }
      if (pZones[i].uZoneType == LEAD_ZONE_TYPE_GRAPHIC)
      {
         GraphicZonesCount++;
      }
      if (pZones[i].uZoneType == LEAD_ZONE_TYPE_TABLE)
      {
         TableZonesCount++;
         TABLEZONE * pTable = (TABLEZONE *)GlobalLock(pZones[i].pZoneData);
         CellsCount = pTable->Rows * pTable->Columns;
         GlobalUnlock(pTable);
      }
   }

   nRet = L_FreeZoneData(pZones, count);

   if(nRet !=SUCCESS)
      return nRet;

   if(LeadBitmap.Flags.Allocated)  
      L_FreeBitmap(&LeadBitmap); 

   return SUCCESS;
}