#include "l_bitmap.h"
L_LTIMGCOR_API L_INT EXT_FUNCTION L_ObjectCounter(pBitmap、uCount、pCallback、pUserData、uFlags)
pBITMAPHANDLE pBitmap; |
/* ビットマップへのポインター*/ |
L_UINT * uCount; |
/* オブジェクトカウントで更新される変数*/ |
OBJECTCOUNTERCALLBACK pCallback; |
/* オプションのコールバック関数*/ |
L_VOID * pUserData; |
/* コールバックのより多くのパラメータへのポインター*/ |
L_UINT32 uFlags; |
/* フラグ*/ |
バイナリイメージの中で黒いオブジェクトの数を取得します。
パラメーター |
説明 |
pBitmap |
バイナリイメージにリファレンスをつけているビットマップハンドルへのポインター。 |
uCount |
黒いオブジェクトの数で更新される変数へのポインタ。 |
pCallback |
追加の処理のためのオプションのコールバック関数。 |
|
コールバック関数を提供しないならば、このパラメーターの値としてNULLを使います。 |
|
コールバック関数を提供するならば、このパラメーターの値として関数ポインターを使用します。 |
|
コールバック関数は、OBJECTCOUNTERCALLBACK関数で説明される関数のプロトタイプに準拠しなければなりません。 |
pUserData |
コールバック関数が必要とする一つ以上の追加のパラメータを渡すために使用することができるボイドポインター。 |
|
この機能を使用するには、値を変数に割り当てるか、必要な数のフィールドを格納する構造体を作成します。その後、このパラメーターで、変数または構造体のアドレスを渡し、L_VOID *に呼び出します。 |
|
独自のpUserDataパラメーターでアドレスを受け取るコールバック関数は、適切なデータタイプのポインターにキャストし変数や構造体にアクセスします。 |
|
これ以上パラメーターが必要ない場合は、このパラメーターでNULLを渡すこともできます。 |
uFlags |
今後使うため確保されます。0でなければなりません。 |
戻り値
SUCCESS |
関数は成功しました。 |
<1 |
エラーが発生しました。リターンコードを参照してください |
コメント
白体が黒いimageの上にあるならば、指定されたビットマップの色はL_InvertBitmap関数を呼び出すことによって反転されなければなりません。
この関数は、1ビット画像の上で機能するだけです。
この関数は、32ビットグレースケールイメージをサポートしません。32ビットグレースケールimageがこの関数に渡されるならば、それはエラーコードERROR_GRAY32_UNSUPPORTEDを返します。
必須のDLLとライブラリ
ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください。 |
Win32、x64、Linux。
参照
関数: |
L_DeleteObjectInfo, L_EndFastMagicWandEngine, L_FastMagicWand, L_StartFastMagicWandEngine, L_SetBitmapRgnMagicWand |
トピック: |
|
|
サンプル
このサンプルはビットマップをロードして、それの中でオブジェクトを数えて、リージョンを囲んでいるrectangle\のパラメータを印刷します
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName L_INT EXT_CALLBACK ObjectCounterExampleCB(L_RECT rect, L_INT **pObject, L_VOID *pUserData) { UNREFERENCED_PARAMETER(pUserData); UNREFERENCED_PARAMETER(pObject); L_TCHAR szMsg[200]; wsprintf( szMsg, TEXT("Region Bounds: left=%d, right=%d, top=%d, bottom=%d \n count=%d"), rect.left, rect.right, rect.top, rect.bottom); MessageBox(NULL, szMsg, TEXT(""), MB_OK); return SUCCESS; } L_LTIMGTEX_API L_INT ObjectCounterExample(L_VOID) { L_INT nRet; BITMAPHANDLE LeadBitmap; /*Bitmap handle to hold the loaded image*/ L_UINT uCount; /*variable to hold the count*/ /* Load the bitmap, keeping the bits per pixel of the file */ nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("ImageProcessingDemo\\Image4.tif")), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR,NULL, NULL); if(nRet != SUCCESS) return nRet; if (LeadBitmap.BitsPerPixel != 1) return ERROR_BITPERPIXEL; //Apply Object Counter nRet = L_ObjectCounter(&LeadBitmap, &uCount, ObjectCounterExampleCB, NULL, 0); if(nRet != SUCCESS) return nRet; //free bitmap if(LeadBitmap.Flags.Allocated) L_FreeBitmap(&LeadBitmap); return SUCCESS; }