フレームを表示

L_FastMagicWand

フレームを表示

#include "l_bitmap.h"

L_LTIMGCOR_API L_INT EXT_FUNCTION L_FastMagicWand(MagicWnd、nTolerance、nXposition、nYposition、pObjectInfo、uFlags)

MAGICWANDHANDLE MagicWnd;

/* 高速マジックワンドハンドル*/

L_INT nTolerance;

/* 許容値値*/

L_INT nXposition;

/* x座標*/

L_INT nYposition;

/* y座標*/

pOBJECTINFO pObjectInfo;

/* OBJECTINFOへのポインター*/

L_UINT32 uFlags;

/* フラグ*/

高速マジックワンド操作を実行して、XpositionとYpositionで色値に応じてリージョンをOBJECTINFO構造体から得ます。

パラメーター

説明

MagicWnd

高速マジックワンドハンドル(L_StartFastMagicWandEngine関数を呼び出すことによって初期化される)。

nTolerance

許容値値は、停止している上下のカラー境界を設定します。

nXposition

ポイントのX-座標。ポイントのカラーは、リージョンを見つけるのに用いられます。

nYposition

ポイントのY-座標。ポイントのカラーは、リージョンを見つけるのに用いられます。

pObjectInfo

得られたリージョンでアップデートされるOBJECTINFO構造体へのポインター。

uFlags

今後使うため確保されます。0でなければなりません。

戻り値

SUCCESS

関数は成功しました。

<1

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

コメント

L_StartFastMagicWandEngineが呼び出されたあと、この関数は呼び出されることができるだけです。渡されるMAGICWANDHANDLE構造体は、L_StartFastMagicWandEngine関数に渡されるものと同じでなければなりません。

MAGICWANDHANDLEOBJECTINFO構造体はL_EndFastMagicWandEngineを呼び出すことによってアンインストール済みでなければなりません、そして、L_DeleteObjectInfoは機能します。

それがより速く実行して1つのimage(特に大きなイメージ)にかかっている多くのリージョンを選択するために必要であるとき、この関数が使われます。

この関数は、1、8と24-ビットイメージをサポートします。

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

必須のDLLとライブラリ

LTIMGCOR

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

プラットホーム

Win32、x64、Linux

参照

関数:

L_DeleteObjectInfo ,L_EndFastMagicWandEngine, L_ObjectCounter, L_StartFastMagicWandEngine, L_SetBitmapRgnMagicWand

トピック:

ラスター画像は機能します:画像解析

 

画像の処理

サンプル

このサンプルはビットマップをロードして、カラーの指定されたポイントと許容値でFastMagicWandを適用して、リージョンを白く着色します

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


L_LTIMGTEX_API L_INT FastMagicWandExample(L_VOID)
{  
   L_INT i , j ;           /*counters*/
   L_INT nRet;             /*to hold return values*/
   BITMAPHANDLE LeadBitmap; /*Bitmap handle to hold the loaded image*/
   L_INT X = 100;          /*X position*/
   L_INT Y = 100;          /*Y position*/
   L_INT Tolerance = 50;   /*color Tolerance*/
   MAGICWANDHANDLE MagicWnd;
   OBJECTINFO ObjectInfo;
   /* Load the bitmap, keeping the bits per pixel of the file */
   nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("sample5.cmp")), 
      &LeadBitmap, sizeof(BITMAPHANDLE), 0,
      ORDER_BGR, NULL, NULL);
   if(nRet != SUCCESS)
      return nRet;

   //performing the magicwand
   nRet = L_StartFastMagicWandEngine(&MagicWnd, &LeadBitmap, 0);
   if(nRet != SUCCESS)
      return nRet;

   nRet = L_FastMagicWand(MagicWnd, Tolerance, X, Y, &ObjectInfo, 0);
   if(nRet != SUCCESS)
      return nRet;

   nRet = L_EndFastMagicWandEngine(MagicWnd, 0);
   if(nRet != SUCCESS)
      return nRet;

   //coloring the region with white
   for( i = ObjectInfo.rcRect.left; i < ObjectInfo.rcRect.right; i++)
   {
      for( j = ObjectInfo.rcRect.top ; j < ObjectInfo.rcRect.bottom; j++)
      {
         if(ObjectInfo.pObject[i - ObjectInfo.rcRect.left][ j - ObjectInfo.rcRect.top] == 1)
         {
            L_PutPixelColor(&LeadBitmap , j, i, RGB(0,0,0));
         }
      }
   }

   //deleting the region data
   nRet = L_DeleteObjectInfo(&ObjectInfo , 0);
   if(nRet != SUCCESS)
      return nRet;


   //free bitmap 
   if(LeadBitmap.Flags.Allocated)  
      L_FreeBitmap(&LeadBitmap);
   return SUCCESS;

}