#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関数に渡されるものと同じでなければなりません。
MAGICWANDHANDLEとOBJECTINFO構造体はL_EndFastMagicWandEngineを呼び出すことによってアンインストール済みでなければなりません、そして、L_DeleteObjectInfoは機能します。
それがより速く実行して1つのimage(特に大きなイメージ)にかかっている多くのリージョンを選択するために必要であるとき、この関数が使われます。
この関数は、1、8と24-ビットイメージをサポートします。
この関数は、32ビットグレースケールイメージをサポートしません。32ビットグレースケールimageがこの関数に渡されるならば、それはエラーコードERROR_GRAY32_UNSUPPORTEDを返します。
必須のDLLとライブラリ
ツールキットバージョンに基づいた正確な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; }