フレームを表示

L_ObjectCounter

フレームを表示

#include "l_bitmap.h"

L_LTIMGCOR_API L_INT EXT_FUNCTION L_ObjectCounterpBitmap、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とライブラリ

LTIMGCOR

ツールキットバージョンに基づいた正確な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;

}