WIL説明書(C++)  3.0.0
全メンバ一覧 | 公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類
FVCL::Data::CFvPattern クラス

パタンオブジェクト [詳解]

詳解

パタンオブジェクト

namespace FVCL::Data

サーチ/マッチング機能等で使用するパタン画像情報を保有するクラスです。

必要条件:
ヘッダー: FVCLbasic.h

解説

パタン画像と登録位置の矩形情報と基準点を保持します。

CFvPattern.png

登録位置の矩形情報は、登録時に使用した画像の左上を 0,0 とする絶対値です。 基準点(center_mark)は、登録位置の左上からの相対値を表します。


サンプルコード

下記コードは、元画像(下図左)の中央付近のクリップをパタン画像として生成する例です。
パタン画像を生成するには、このクラスの MakePattern メソッドを使用します。 指定する座標は、矩形と基準点です。これらは共に元画像の左上を原点(0,0)とする絶対位置を指定します。 登録位置の矩形は、このクラスの m_RegistRect に保存されます。 基準点は、登録位置の矩形の左上からの相対位置に変換され m_CenterMark に保存されます。

生成したパタン画像をファイルに保存するには、このクラスの Save メソッドを使用します。 この例では、生成したパタンを『 Basic.MakePattern.pat 』と言う名前でカレントディレクトリに保存しています。 ディレクトリパスを含めて指定する事に注意してください。
保存したファイルをパタンオブジェクトに読み込みには、このクラスの Load メソッドを使用します。 保存の時と同様にディレクトリパスを含めて指定する必要があります。

元画像 パタン画像
clip_UC8_M.png
Pattern.clip.png

ソースコード:

// $Revision: 1.1 $
{
_tprintf( _T("%s\n"), __TFUNCTION__ );
// 1) インスタンスの準備
// 2) 処理対象画像の取り込み
INT status = FVCL::File::LoadImageFile( _T("clip_UC8_M.png"), &src );
if( status != FVCL_ErrorCode::_SUCCESS )
{
_tprintf(_T("%s: Failed to load image file. code=%d\n"), __TFUNCTION__, status);
return;
}
// 3) パタン生成
FVCL::Data::CFvRectangle rect( 134, 74, 181, 169 );
FVCL::Data::CFvPoint mark( 167, 139 );
pattern.MakePattern( src, rect, mark );
// 4) ファイル保存
if( ! pattern.Save( _T(".\\Basic.MakePattern.pat") ) )
{
_tprintf(_T("%s: Failed to save pattern file. code=%d\n"), __TFUNCTION__, pattern.GetErrorCode());
return;
}
// 5) ファイル読み込み
if( ! work.Load( _T(".\\Basic.MakePattern.pat") ) )
{
_tprintf(_T("%s: Failed to load pattern file. code=%d\n"), __TFUNCTION__, work.GetErrorCode());
return;
}
_tprintf( _T("rect=%.2f,%.2f,%.2f,%.2f\n"), _rect.st.x, _rect.st.y, _rect.ed.x, _rect.ed.y );
_tprintf( _T("mark=%.2f,%.2f\n"), _mark.x, _mark.y );
}
バージョン
FVCLbasic v1.2.0.0: 全ての画像種別に対応しました。 UC8x1ch 以外の時に Save を行った場合は、パタン画像を Raw 形式で保管します。
+ FVCL::Data::CFvPattern の継承関係図

公開型

enum  { DataID = 101 }
 
- 基底クラス FVCL::Data::CFvImage に属する継承公開型
enum  { DataID = 100 }
 

公開メンバ関数

 CFvPattern ()
 コンストラクタ [詳解]
 
 CFvPattern (UINT horz, UINT vert, UINT type=FVCL::ImageType::UC8, UINT ch=1, UINT alloc_option=(UINT)-1)
 コンストラクタ (画像サイズ指定) [詳解]
 
 CFvPattern (const FVCL::ImageSize &image_size, UINT alloc_option=(UINT)-1)
 コンストラクタ (画像サイズ指定) [詳解]
 
 CFvPattern (LPCTSTR szFileName)
 コンストラクタ (ファイル読み込み) [詳解]
 
 CFvPattern (const FVCL::Data::CFvImage &image, const FVCL::Data::CFvRectangle &rect, const FVCL::Data::CFvPoint &center_mark)
 コンストラクタ (パタン生成) [詳解]
 
virtual ~CFvPattern ()
 デストラクタ [詳解]
 
virtual INT GetDataID () const
 データIDの取得 [詳解]
 
virtual bool GetPointer (INT id, void **val) const
 インスタンスのポインタの取得 [詳解]
 
virtual bool Load (LPCTSTR szFileName)
 パタンファイルの読み込み [詳解]
 
virtual bool Load (LPCTSTR szFileName, INT pixelmode)
 パタンファイルの読み込み [詳解]
 
virtual bool Save (LPCTSTR szFileName)
 パタンのファイル保存 [詳解]
 
virtual void Free ()
 パタン領域の解放 [詳解]
 
virtual bool SetSize (UINT horz, UINT vert, UINT type, UINT ch, UINT alloc_option=(UINT)-1)
 パタン領域の確保 [詳解]
 
virtual bool SetSize (const FVCL::ImageSize &image_size, UINT alloc_option=(UINT)-1)
 パタン領域の確保 [詳解]
 
virtual bool MakePattern (const FVCL::Data::CFvImage &image, const FVCL::Data::CFvRectangle &rect, const FVCL::Data::CFvPoint &center_mark)
 パタンの生成 [詳解]
 
bool SetRegistRect (const FVCL::Data::CFvRectangle &rect)
 登録座標の設定 [詳解]
 
bool GetRegistRect (CFvRectangle *rect) const
 登録座標の取得 [詳解]
 
const FVCL::Data::CFvRectangleGetRegistRect () const
 登録座標の取得 [詳解]
 
FVCL::Data::CFvRectangleGetRegistRect ()
 登録座標の取得 [詳解]
 
bool SetCenterMark (const FVCL::Data::CFvPoint &center_mark)
 パタン基準点の設定 [詳解]
 
bool GetCenterMark (CFvPoint *center_mark) const
 パタン基準点の取得 [詳解]
 
const FVCL::Data::CFvPointGetCenterMark () const
 パタン基準点の取得 [詳解]
 
FVCL::Data::CFvPointGetCenterMark ()
 パタン基準点の取得 [詳解]
 
bool SetOption (INT option)
 オプションの設定 [詳解]
 
INT GetOption () const
 オプションの取得 [詳解]
 
bool GetAttachedMask (CFvImage *image) const
 マスク領域にアタッチされた画像オブジェクトの取得 [詳解]
 
bool MaskCopyFrom (const FVCL::Data::CFvImage &image)
 画像オブジェクトからマスク領域への複写 [詳解]
 
bool MaskCopyFrom (const FVCL::Data::CFvImage &image, INT maskbit)
 画像オブジェクトからマスク領域への複写 (ビット指定) [詳解]
 
bool MaskCopyTo (CFvImage *image) const
 マスク領域から画像オブジェクトへの複写 [詳解]
 
bool MaskCopyTo (CFvImage *image, INT maskbit) const
 マスク領域から画像オブジェクトへの複写 (ビット指定) [詳解]
 
void * GetMaskAdrs (UINT x=0, UINT y=0) const
 マスクアドレスの取得 [詳解]
 
bool SetMaskPixelUC8 (UINT x, UINT y, UCHAR value)
 マスク情報の設定 [詳解]
 
UCHAR GetMaskPixelUC8 (UINT x, UINT y) const
 マスク情報の取得 [詳解]
 
bool SetMaskPixelI32 (UINT x, UINT y, INT value)
 マスク情報の設定 [詳解]
 
INT GetMaskPixelI32 (UINT x, UINT y) const
 マスク情報の取得 [詳解]
 
bool SetMaskPixelI64 (UINT x, UINT y, INT64 value)
 マスク情報の設定 [詳解]
 
INT64 GetMaskPixelI64 (UINT x, UINT y) const
 マスク情報の取得 [詳解]
 
UINT GetMaskMemSize () const
 マスクのメモリ容量の取得 (非推奨) [詳解]
 
ULONG_PTR GetMaskMemSize64 () const
 マスクのメモリ容量の取得 [詳解]
 
UINT GetMaskHorzByte () const
 マスクの水平方向サイズの取得 [詳解]
 
UINT GetMaskImageType () const
 マスクの画像種別の取得 [詳解]
 
virtual CFvPatternoperator= (const CFvPattern &src)
 代入オペレータ (=) [詳解]
 
virtual bool operator== (const CFvPattern &src) const
 比較オペレータ (==) [詳解]
 
virtual bool operator!= (const CFvPattern &src) const
 比較オペレータ (!=) [詳解]
 
- 基底クラス FVCL::Data::CFvImage に属する継承公開メンバ関数
 CFvImage ()
 コンストラクタ [詳解]
 
 CFvImage (UINT horz, UINT vert, UINT type=ImageType::UC8, UINT ch=1, UINT alloc_option=(UINT)-1)
 コンストラクタ(内部メモリ確保) [詳解]
 
 CFvImage (const FVCL::ImageSize &image_size, UINT alloc_option=(UINT)-1)
 コンストラクタ(内部メモリ確保) [詳解]
 
 CFvImage (FHANDLE hImage, INT channel, FVCL::Rectangle region)
 コンストラクタ (FIE ハンドル 指定) [詳解]
 
 CFvImage (const FVCL::Data::CFvImage &src, UINT attach_option=0)
 コンストラクタ (コピー または アタッチ) [詳解]
 
 CFvImage (void *adrs, UINT horz, UINT vert, UINT type, void *handle)
 コンストラクタ(1ch専用アタッチ) [詳解]
 
 CFvImage (void **adrs, UINT horz, UINT vert, UINT type, UINT ch, void **handles)
 コンストラクタ(複数チャネル対応アタッチ) [詳解]
 
 CFvImage (LPCTSTR szFileName)
 コンストラクタ (ファイル読み込み) [詳解]
 
virtual ~CFvImage ()
 デストラクタ [詳解]
 
FVCL::Data::CFvImageoperator= (const FVCL::Data::CFvImage &src)
 代入オペレータ(=) [詳解]
 
bool operator== (const FVCL::Data::CFvImage &src) const
 比較オペレータ(==) [詳解]
 
bool operator!= (const FVCL::Data::CFvImage &src) const
 比較オペレータ(!=) [詳解]
 
virtual bool SetFIE (FHANDLE hImage, bool is_attach)
 FIE ハンドルの設定 [詳解]
 
virtual bool AttachFIE (FHANDLE hImage, INT channel, FVCL::Rectangle region)
 FIE 画像オブジェクトへのアタッチ [詳解]
 
virtual bool Attach (const FVCL::Data::CFvImage &src)
 画像オブジェクトへのアタッチ [詳解]
 
virtual bool Attach (UINT channel, const FVCL::Data::CFvImage &src)
 画像オブジェクトへのアタッチ (チャネル指定) [詳解]
 
virtual bool Attach (CFvImage *src[], UINT channels)
 画像オブジェクトへのアタッチ (複数チャネル) [詳解]
 
virtual bool Attach (const FVCL::Data::CFvImage *src[], UINT channels)
 画像オブジェクトへのアタッチ (複数チャネル) [詳解]
 
virtual bool Attach (void *adrs, UINT horz, UINT vert, UINT type, void *handle=NULL)
 外部メモリのアタッチ(1ch専用) [詳解]
 
virtual bool Attach (void **adrs, UINT horz, UINT vert, UINT type, UINT ch, void **handles=NULL)
 外部メモリのアタッチ(複数チャネル対応) [詳解]
 
bool Detach ()
 デタッチ [詳解]
 
UINT IsAttach () const
 アタッチフラグの取得 [詳解]
 
FHANDLE GetFIE () const
 FIE ハンドルの取得 [詳解]
 
FHANDLE GetFIEChild () const
 FIE ハンドルの取得 (チャイルド画像) [詳解]
 
FHANDLE GetFIERoot () const
 FIE ハンドルの取得 (ルート画像) [詳解]
 
void * GetHandle (UINT ch=0) const
 画像ハンドルの取得 [詳解]
 
void * GetRootAdrs (UINT ch=0) const
 画像メモリの先頭アドレスの取得 (Offset を無視する) [詳解]
 
void * GetImageAdrs (UINT ch=0, UINT x=0, UINT y=0) const
 画像メモリの先頭アドレスの取得 (Offset を考慮する) [詳解]
 
UINT GetMemSize () const
 画像メモリサイズを取得 (非推奨) [詳解]
 
ULONG_PTR GetMemSize64 () const
 画像メモリサイズを取得 [詳解]
 
UINT GetHorzByte () const
 横方向メモリサイズの取得 [詳解]
 
bool GetSize (UINT *horz, UINT *vert, UINT *type, UINT *ch) const
 サイズの取得 [詳解]
 
FVCL::ImageSize GetImageSize () const
 サイズの取得 [詳解]
 
INT GetBitPosition (UINT x) const
 ビット位置の取得 [詳解]
 
PNT_T GetOffset () const
 画像の先頭アドレスからのオフセット座標の取得 [詳解]
 
UINT GetHorzSize () const
 横方向画素数の取得 [詳解]
 
UINT GetVertSize () const
 縦方向画素数の取得 [詳解]
 
UINT GetImageType () const
 画像種別の取得 [詳解]
 
UINT GetChannel () const
 チャネル数の取得 [詳解]
 
bool SetDepth (UINT depth)
 ビット深度の設定 [詳解]
 
UINT GetDepth () const
 ビット深度の取得 [詳解]
 
bool SetImageInfo (UINT image_info)
 画像情報の設定 [詳解]
 
UINT GetImageInfo () const
 画像情報の取得 [詳解]
 
bool SetWindow (INT xs, INT ys, INT x_size, INT y_size)
 処理ウィンドウの設定 [詳解]
 
bool SetWindow (const CFvRectangle &rect, bool contain_ed=true)
 処理ウィンドウの設定 [詳解]
 
bool GetWindow (INT *xs, INT *ys, INT *x_size, INT *y_size) const
 処理ウィンドウの取得 [詳解]
 
CFvRectangle GetWindow (bool contain_ed=true) const
 処理ウィンドウの取得 [詳解]
 
UINT GetImageTypeToBpp (UINT type) const
 ピクセルサイズの取得 [詳解]
 
INT CalcDepth () const
 ビット深度の計算 [詳解]
 
INT CalcDepthForChannel (UINT channel) const
 ビット深度の計算 (チャネル毎) [詳解]
 
bool SetPixelI32 (UINT ch, UINT x, UINT y, INT value)
 画素値の設定 (整数) [詳解]
 
INT GetPixelI32 (UINT ch, UINT x, UINT y) const
 画素値の取得 (整数) [詳解]
 
bool SetPixelI64 (UINT ch, UINT x, UINT y, INT64 value)
 画素値の設定 (整数) [詳解]
 
INT64 GetPixelI64 (UINT ch, UINT x, UINT y) const
 画素値の取得 (整数) [詳解]
 
bool SetPixelD64 (UINT ch, UINT x, UINT y, DOUBLE value)
 画素値の設定 (実数) [詳解]
 
DOUBLE GetPixelD64 (UINT ch, UINT x, UINT y) const
 画素値の取得 (実数) [詳解]
 
bool SetPixelRGB (UINT ch, UINT x, UINT y, FVCL::tagRGB32 value)
 画素値の設定 (カラー) [詳解]
 
FVCL::tagRGB32 GetPixelRGB (UINT ch, UINT x, UINT y) const
 画素値の取得 (カラー) [詳解]
 
bool Clear (DOUBLE value=0, UINT option=0)
 画像メモリのクリア [詳解]
 
bool ClearForChannel (UINT channel, DOUBLE value, UINT option=0)
 画像メモリのクリア (チャネル指定) [詳解]
 
bool ClearRGB (FVCL::tagRGB32 value, UINT option=0)
 画像メモリのクリア [詳解]
 
bool ClearRGBForChannel (UINT channel, FVCL::tagRGB32 value, UINT option=0)
 画像メモリのクリア (チャネル指定) [詳解]
 
bool Copy (const FVCL::Data::CFvImage &src, UINT option=0)
 画像コピー [詳解]
 
bool Copy (const FVCL::Data::CFvImage &src, const CFvObject &region, INT origin_mode=FVCL::OriginMode::Window)
 画像コピー (リージョン指定) [詳解]
 
bool Compare (const FVCL::Data::CFvImage &src, DOUBLE ErrRange=0.0, UINT option=0)
 画像データの比較 [詳解]
 
FVCL::Data::CFvPoint Find (UINT channel, DOUBLE value, DOUBLE ErrRange=0.0, UINT option=0) const
 画像データの検索 (実数指定) [詳解]
 
FVCL::Data::CFvPoint FindRGB (UINT channel, FVCL::tagRGB32 value, DOUBLE ErrRange=0.0, UINT option=0) const
 画像データの検索 (カラー指定) [詳解]
 
FVCL::Data::CFvPoint FindMaxValue (UINT channel, UINT option=0) const
 最大値の検索 [詳解]
 
FVCL::Data::CFvPoint FindMinValue (UINT channel, UINT option=0) const
 最小値の検索 [詳解]
 
bool GetPointsGray (UINT channel, DOUBLE low, DOUBLE high, INT max_num, FVCL::CFvBuffer<::PNT_T > *points) const
 濃淡画像からの点列取得 [詳解]
 
bool GetPointsBIN (UINT channel, INT color, INT max_num, FVCL::CFvBuffer<::PNT_T > *points) const
 2値画像からの点列取得 [詳解]
 
bool Saturate (UINT option=0)
 画像データの飽和処理 [詳解]
 
bool SaturateWithRange (UINT channel, DOUBLE minval, DOUBLE maxval, UINT option=0)
 画像データの飽和処理 (範囲指定) [詳解]
 
bool Abs (UINT option=0)
 画像データの絶対値演算 [詳解]
 
bool Invert (UINT option=0)
 画像データの濃度値反転 [詳解]
 
bool SignedToRGB (UINT channel, CFvImage *dst, INT option=0) const
 符号付き画像からカラー画像への変換 [詳解]
 
bool ConvertToGray (INT mode, INT depth, CFvImage *dst) const
 濃淡画像への変換 [詳解]
 
bool ConvertToColor (INT mode, INT depth, CFvImage *dst) const
 カラー画像への変換 [詳解]
 
bool ConvertToAny (INT mode, INT depth, CFvImage *dst) const
 任意の型の画像への変換 [詳解]
 
bool GetRotatedImage (INT num, CFvImage *dst) const
 回転画像の取得 [詳解]
 
bool GetScaledImage (DOUBLE mag_x, DOUBLE mag_y, INT sampling_mode, CFvImage *dst) const
 サイズ変更画像の取得 [詳解]
 
- 基底クラス FVCL::CFvDataObject に属する継承公開メンバ関数
 CFvDataObject ()
 標準のコンストラクタ [詳解]
 
virtual ~CFvDataObject ()
 デストラクタ [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承公開メンバ関数
 CFvObject ()
 標準のコンストラクタ [詳解]
 
virtual ~CFvObject ()
 デストラクタ [詳解]
 
INT SetErrorCode (INT err)
 エラーコードの設定 [詳解]
 
INT SetErrorCode (INT err) const
 エラーコードの設定 [詳解]
 
INT GetErrorCode () const
 エラーコードの取得 [詳解]
 
bool SetAllocateOption (INT value)
 画像領域確保時のオプションの設定 [詳解]
 
INT GetAllocateOption () const
 画像領域確保時のオプションの取得 [詳解]
 
void * operator new (size_t uiSize)
 new オペレータ [詳解]
 
void * operator new[] (size_t uiSize)
 new[] オペレータ [詳解]
 
void operator delete (void *pvObject)
 delete オペレータ [詳解]
 
void operator delete[] (void *pvObject)
 delete[] オペレータ [詳解]
 
void * operator new (size_t uiSize, LPCSTR szFileName, INT iLine)
 new オペレータ [詳解]
 
void * operator new[] (size_t uiSize, LPCSTR szFileName, INT iLine)
 new[] オペレータ [詳解]
 
void operator delete (void *pvObject, LPCSTR szFileName, INT iLine)
 delete オペレータ [詳解]
 
void operator delete[] (void *pvObject, LPCSTR szFileName, INT iLine)
 delete[] オペレータ [詳解]
 
virtual CFvObjectoperator= (const CFvObject &src)
 代入オペレータ [詳解]
 
virtual bool operator== (const CFvObject &src) const
 比較オペレータ (==) [詳解]
 
virtual bool operator!= (const CFvObject &src) const
 比較オペレータ (!=) [詳解]
 

静的公開メンバ関数

static void MakePatternRevision (int value)
 MakePattern メソッドのリビジョンの設定 [詳解]
 
static int MakePatternRevision ()
 MakePattern メソッドのリビジョンの取得 [詳解]
 
- 基底クラス FVCL::Data::CFvImage に属する継承静的公開メンバ関数
static UINT CalcBppOfImageType (UINT type)
 ピクセルサイズの計算 [詳解]
 
static UINT CalcDepthOfImageType (UINT type)
 ビット深度の計算 [詳解]
 
static UINT CalcAllocBpp (UINT bpp)
 ピクセルサイズ計算 [詳解]
 
static UINT CalcHorzByte (UINT horz, UINT bpp)
 横方向バイト数の計算 [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承静的公開メンバ関数
static bool SetDefaultAllocateOption (INT value)
 既定の画像領域確保時のオプションの設定 [詳解]
 
static INT GetDefaultAllocateOption ()
 既定の画像領域確保時のオプションの取得 [詳解]
 

限定公開メンバ関数

virtual INT fnImportFIE (FHANDLE hImage, bool is_ref)
 FIE ハンドルのインポート [詳解]
 
virtual INT fnAllocate (UINT horz, UINT vert, UINT type, UINT ch, UINT option=0)
 内部メモリのアロケーション [詳解]
 
virtual INT fnAttach (void **adrs, UINT horz, UINT vert, UINT type, UINT ch, void **handles)
 画像メモリのアタッチ [詳解]
 
virtual bool MaskAllocate (UINT horz, UINT vert, UINT type)
 マスク領域の確保 [詳解]
 
virtual bool MaskFree ()
 マスク領域の解放 [詳解]
 
- 基底クラス FVCL::Data::CFvImage に属する継承限定公開メンバ関数
FHANDLE CreateFIERoot (void **adrs, UINT horz, UINT vert, UINT type, UINT ch) const
 FIE ルートオブジェクトの生成 [詳解]
 
FHANDLE CreateFIEChild (FHANDLE hRoot) const
 FIE チャイルドオブジェクトの生成 [詳解]
 
INT fnParamCheck (UINT horz, UINT vert, UINT type, UINT ch) const
 画像パラメータチェック [詳解]
 
bool fnCreateDIB (UINT horz, UINT vert, UINT bpp, UINT ch)
 画像メモリの確保 (DIB版) [詳解]
 
bool fnCreateNew (UINT horz, UINT vert, UINT bpp, UINT ch)
 画像メモリの確保 (calloc版) [詳解]
 
UINT fnCopy (const FVCL::Data::CFvImage &src, CFvImage &dst, UINT option)
 コピー [詳解]
 
INT fnClear (UINT xs, UINT ys, UINT xe, UINT ye, UINT ch, DOUBLE value)
 画像データのクリア [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承限定公開メンバ関数
INT fnCPUCheck ()
 CPU情報の取得 [詳解]
 

限定公開変数類

FVCL::Data::CFvRectangle m_RegistRect
 登録座標 [詳解]
 
FVCL::Data::CFvPoint m_CenterMark
 パタン基準点 [詳解]
 
INT m_Option
 オプション [詳解]
 
FVCL::Data::CFvImage m_MaskImage
 パタンマスク [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承限定公開変数類
INT m_ErrorCode
 エラーコード [詳解]
 
INT m_AllocateOption
 画像領域確保時のオプション [詳解]
 

列挙型メンバ詳解

anonymous enum
列挙値
DataID 

パタンオブジェクトのデータID

このクラスのデータIDです。

構築子と解体子

FVCL::Data::CFvPattern::CFvPattern ( )

コンストラクタ

標準のコンストラクタです。

640x480 (x1CH)、 UC8 の内部メモリとマスクメモリを確保します。

バージョン
FVCLbasic v2.0.0.0: 追加
FVCL::Data::CFvPattern::CFvPattern ( UINT  horz,
UINT  vert,
UINT  type = FVCL::ImageType::UC8,
UINT  ch = 1,
UINT  alloc_option = (UINT)-1 
)

コンストラクタ (画像サイズ指定)

初期値を指定してインスタンスを生成します。

引数
[in]horz横方向サイズ (1~)
[in]vert縦方向サイズ (1~)
[in]typeメモリ確保情報(画像種別)

[in]chチャネル数 (1~16)
[in]alloc_optionオプション
  • 0: 既定の動作
  • 1: DIB を使用しない

オプションについて
既定の動作では、指定された型(type)が BIN,UC8,RGB24,RGB32 且つ チャネル数(ch)が 1 のとき、 Windows の CreateDIBSection 関数を使用して領域を確保しますが、 CreateDIBSection によって 2GB を超えるような大きいサイズの領域を確保できない場合があります。 64bit アプリケーションでも、この挙動が見られます。 alloc_option に 1 を指定すると、CreateDIBSection を使用しませんので、この制限を回避できます。
また、このオブジェクトがビットマップハンドルを保有する為、 10,000 個のインスタンスを作成すると GDI リソースが枯渇します。 上限は流動的で、その他で GDI リソースを使用していると 10,000 個より少ない値で枯渇することになります。 このインスタンスを大量に生成する必要がある場合は、 前述と同様に alloc_option に 1 を指定し、CreateDIBSection を使用しないようにしてください。
バグ:
FVCLbasic v1.1.0.0: 既定値(640x480 UC8 x1ch)以外を指定しても反映されないバグを改修しました。
参照
CFvImage::CFvImage
FVCL::Data::CFvPattern::CFvPattern ( const FVCL::ImageSize image_size,
UINT  alloc_option = (UINT)-1 
)

コンストラクタ (画像サイズ指定)

初期値を指定してインスタンスを生成します。

引数
[in]image_size画像サイズ情報
[in]alloc_optionオプション
  • 0: 既定の動作
  • 1: DIB を使用しない

例外
FVCL::CFveBadAllocExceptionメモリの確保に失敗しました。
オプションについて
既定の動作では、指定された型(type)が BIN,UC8,RGB24,RGB32 且つ チャネル数(ch)が 1 のとき、 Windows の CreateDIBSection 関数を使用して領域を確保しますが、 CreateDIBSection によって 2GB を超えるような大きいサイズの領域を確保できない場合があります。 64bit アプリケーションでも、この挙動が見られます。 alloc_option に 1 を指定すると、CreateDIBSection を使用しませんので、この制限を回避できます。
また、このオブジェクトがビットマップハンドルを保有する為、 10,000 個のインスタンスを作成すると GDI リソースが枯渇します。 上限は流動的で、その他で GDI リソースを使用していると 10,000 個より少ない値で枯渇することになります。 このインスタンスを大量に生成する必要がある場合は、 前述と同様に alloc_option に 1 を指定し、CreateDIBSection を使用しないようにしてください。
参照
CFvImage::SetSize (const FVCL::ImageSize& image_size, UINT alloc_option)
FVCL::Data::CFvPattern::CFvPattern ( LPCTSTR  szFileName)

コンストラクタ (ファイル読み込み)

指定されたファイルからデータを復元します。
このコンストラクタは、内部で Load メソッドを実行しています。

引数
[in]szFileNameファイル名称
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。
発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。メモリが不足しています。
11 FVCL_ErrorCode::INVALID_PARAMETER パラメータが無効です。ファイル名に null や空白は指定できません。
21 FVCL_ErrorCode::NOT_SUPPORTED 指定されたファイル形式はサポートされていません。
23 FVCL_ErrorCode::NOT_ALLOCATED メモリが確保されていません。
参照
FVCL::File::CFvImageFile::SetDefaultPixelMode
FVCL::File::CFvImageFile::GetDefaultPixelMode
FVCL::Data::CFvPattern::CFvPattern ( const FVCL::Data::CFvImage image,
const FVCL::Data::CFvRectangle rect,
const FVCL::Data::CFvPoint center_mark 
)

コンストラクタ (パタン生成)

画像オブジェクト上の任意の領域からパタンを生成します。 詳しくは、 MakePattern の説明をご参照ください。

引数
[in]image元画像
[in]rect登録位置の矩形 (元画像の左上を(0,0)とする絶対座標)
[in]center_mark基準点 (元画像の左上を(0,0)とする絶対座標)
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に指定された画像オブジェクトが不正です。
13162 FVCL_ErrorCode::CFvPattern::INVALID_REGIST_RECT 登録範囲が無効です。
バージョン
FVCLbasic v2.0.0.0: 新規追加
参照
CFvImage::CFvImage
MakePattern
FVCL::Data::CFvPattern::~CFvPattern ( )
virtual

デストラクタ

このオブジェクトを破棄します。

関数詳解

FVCL::Data::CFvPattern::MakePatternRevision ( int  value)
static

MakePattern メソッドのリビジョンの設定

引数
[in]valueリビジョン番号
  • 0: 端数を残す。(従来の仕様です。) [初期値]
  • 1: 端数を四捨五入する。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。
発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
解説:
この関数は MakePattern メソッドの引数 rect (登録位置の矩形)の処理方法を切り替える為のものです。 リビジョン 0 は従来の処理を意味します。 従来の処理では、MakePattern メソッドの引数 rect (登録位置の矩形) に指定された座標が1画素単位でない(端数がある)場合にサーチ機能の回答座標との矛盾が生じます。 通常は端数がない座標値を指定することを推奨します。 端数が発生する場合は、この関数でリビジョンを 1 に設定してご使用ください。
設定変更はアプリケーション起動時に1度行うだけで構いません。
尚、この設定値はライブラリ内で共有していますので、インスタンス毎に設定することはできません。
サンプルコード:
具体的な使用方法については下記コードを参考にしてください。
本例ではパタン登録の直前に本関数を呼び出していますが、必ずしも直前である必要はなく、 前述の通り、アプリケーション起動時に1度行うだけで構いません。
void MakePatternRevisionDemo();
{
_tprintf( _T("%s\n"), __TFUNCTION__ );
// 既定値:
MakePatternRevisionDemo();
// リビジョン 1 に設定した場合:
MakePatternRevisionDemo();
// リビジョン 0 に設定した場合:
MakePatternRevisionDemo();
}
void MakePatternRevisionDemo()
{
_tprintf(_T("MakePatternRevision=%d\n"), FVCL::Data::CFvPattern::MakePatternRevision());
INT status = FVCL::File::LoadImageFile( _T("clip_UC8_M.png"), &src );
if( status != FVCL_ErrorCode::_SUCCESS )
{
_tprintf(_T("%s: Failed to load image file. code=%d\n"), __TFUNCTION__, status);
return;
}
FVCL::Data::CFvRectangle rect( 134.4, 74.5, 181.1, 169.8 );
FVCL::Data::CFvPoint mark( 167.6, 139.5 );
pattern.MakePattern( src, rect, mark );
_tprintf( _T("rect=%.1f,%.1f,%.1f,%.1f\n"), _rect.st.x, _rect.st.y, _rect.ed.x, _rect.ed.y );
_tprintf( _T("mark=%.1f,%.1f\n"), _mark.x, _mark.y );
}
出力結果)
User::SampleCode::Basic::MakePatternRevision
MakePatternRevision=0
rect=134.4,74.5,181.1,169.8
mark=33.2,65.0
MakePatternRevision=1
rect=134.0,75.0,181.0,170.0
mark=33.6,64.5
MakePatternRevision=0
rect=134.4,74.5,181.1,169.8
mark=33.2,65.0
参照
MakePattern
MakePatternRevision()
FVCL::Data::CFvPattern::MakePatternRevision ( )
static

MakePattern メソッドのリビジョンの取得

戻り値
現在設定されているリビジョン番号を返します。
既定では 0 が設定されています。
参照
MakePatternRevision(int value)
FVCL::Data::CFvPattern::GetDataID ( ) const
virtual

データIDの取得

戻り値
データIDを返します。
参照
CFvPattern::DataID

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::GetPointer ( INT  id,
void **  val 
) const
virtual

インスタンスのポインタの取得

引数
[in]idデータID
[in]valインスタンスのポインタを格納する変数のポインタ
戻り値
true正常
fasle異常
参照
CFvPattern::DataID

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::Load ( LPCTSTR  szFileName)
virtual

パタンファイルの読み込み

パタンファイルを読み込みます。
引数には、.pat の拡張子が付いたファイル名を指定してください。 それ以外の場合は FVCL::Data::CFvImage::Load を実行し、画像データ部分のみを復元します。 その他のプロパティは初期値のままになります。

引数
[in]szFileNameパタンファイル名称
※ディレクトリと拡張子も含めて指定してください。(解説参照)
戻り値
true正常
false異常
GetErrorCodeメソッドによりエラーコードを取得できます。
エラーコード
定数 内容
6 FVCL_ErrorCode::FAILED_TO_LOAD パタンファイル(.pat)が見つかりません。または不正です。
マスクファイル(.pat_MSK)が見つかりません。または不正です。
13 FVCL_ErrorCode::INVALID_DATA パタンとマスクのサイズが一致しません。
座標に異常があります。
解説:
『MyPattern』と言うファイルをカレントディレクトリから読み込みたい場合は、 拡張子 .pat も含めて『.\MyPattern.pat』と言う文字列を指定します。 この場合、以下の3つのファイルが読み込まれます。
  • MyPattern.pat ... パタン画像
  • MyPattern.pat_MSK ... マスク画像
  • MyPattern.pat_INF ... 登録座標と基準点の情報

『MyPattern.pat』のように、ディレクトリを指定しなかった場合は、 MyPattern.pat_INF ファイルのみを Windows ディレクトリから読み込もうと試みます。 その他の2つは、カレントディレクトリから読み込みます。
パタン画像が UC8x1ch の時は .pat はビットマップ形式で保管されています。 その他の場合は Raw 形式で保管されており、上記の他に .pat.conf が付加されています。
クラスの説明に示すサンプルコードを参考にしてください。
参照
MakePattern
FVCL::Data::CFvImage::Load
FVCL::File::CFvImageFile::SetDefaultPixelMode
FVCL::File::CFvImageFile::GetDefaultPixelMode

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::Load ( LPCTSTR  szFileName,
INT  pixelmode 
)
virtual

パタンファイルの読み込み

ファイル読み込み

パタンファイルを読み込みます。
引数には、.pat の拡張子が付いたファイル名を指定してください。 それ以外の場合は FVCL::Data::CFvImage::Load を実行し、画像データ部分のみを復元します。 その他のプロパティは初期値のままになります。

引数
[in]szFileNameファイル名称
[in]pixelmodeピクセルモード
戻り値
true正常
false異常
GetErrorCodeメソッドによりエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。メモリが不足しています。
11 FVCL_ErrorCode::INVALID_PARAMETER パラメータが無効です。ファイル名に null や空白は指定できません。
21 FVCL_ErrorCode::NOT_SUPPORTED 指定されたファイル形式はサポートされていません。
23 FVCL_ErrorCode::NOT_ALLOCATED メモリが確保されていません。
解説:
『MyPattern』と言うファイルをカレントディレクトリから読み込みたい場合は、 拡張子 .pat も含めて『.\MyPattern.pat』と言う文字列を指定します。 この場合、以下の3つのファイルが読み込まれます。
  • MyPattern.pat ... パタン画像
  • MyPattern.pat_MSK ... マスク画像
  • MyPattern.pat_INF ... 登録座標と基準点の情報

『MyPattern.pat』のように、ディレクトリを指定しなかった場合は、 MyPattern.pat_INF ファイルのみを Windows ディレクトリから読み込もうと試みます。 その他の2つは、カレントディレクトリから読み込みます。
パタン画像が UC8x1ch の時は .pat はビットマップ形式で保管されています。 その他の場合は Raw 形式で保管されており、上記の他に .pat.conf が付加されています。
クラスの説明に示すサンプルコードを参考にしてください。
参照
FVCL::File::CFvImageFile::SetDefaultPixelMode
FVCL::File::CFvImageFile::GetDefaultPixelMode

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::Save ( LPCTSTR  szFileName)
virtual

パタンのファイル保存

パタンをファイルに保存します。
引数には、.pat の拡張子が付いたファイル名を指定してください。 それ以外の場合は FVCL::Data::CFvImage::Save を実行し、画像データ部分のみを保存します。

引数
[in]szFileNameパタンファイル名称
※ディレクトリと拡張子も含めて指定してください。(解説参照)
戻り値
true正常
false異常
GetErrorCodeメソッドによりエラーコードを取得できます。
エラーコード
定数 内容
7 FVCL_ErrorCode::FAILED_TO_SAVE パタンファイル(.pat)を保存する際にエラーが発生しました。
マスクファイル(.pat_MSK)を保存する際にエラーが発生しました。
解説:
『MyPattern』と言うファイルをカレントディレクトリに保存したい場合は、 拡張子 .pat も含めて『.\MyPattern.pat』と言う文字列を指定します。 この場合、以下の3つのファイルが保存されます。
  • MyPattern.pat ... パタン画像
  • MyPattern.pat_MSK ... マスク画像
  • MyPattern.pat_INF ... 登録座標と基準点の情報

『MyPattern.pat』のように、ディレクトリを指定しなかった場合は、 MyPattern.pat_INF ファイルだけが Windows ディレクトリに保管されてしまいます。 その他の2つは、カレントディレクトリに保存されます。
パタン画像が UC8x1ch の時は .pat にはビットマップ形式で保管します。 その他の場合は Raw 形式で保管し、.pat.conf が付加されます。
クラスの説明に示すサンプルコードを参考にしてください。
参照
MakePattern

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::Free ( )
virtual

パタン領域の解放

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::SetSize ( UINT  horz,
UINT  vert,
UINT  type,
UINT  ch,
UINT  alloc_option = (UINT)-1 
)
virtual

パタン領域の確保

パタンとマスク領域を確保します。
使用可能なパタンの種類については、サーチ機能の説明をご参照ください。

引数
[in]horz横方向サイズ (1~)
[in]vert縦方向サイズ (1~)
[in]typeメモリ確保情報(画像種別)

[in]chチャネル数 (1~16)
[in]alloc_optionオプション
  • 0: 既定の動作
  • 1: DIB を使用しない

戻り値
true正常
fasle異常
GetErrorCodeメソッドによりエラーコードを取得できます。
オプションについて
既定の動作では、指定された型(type)が BIN,UC8,RGB24,RGB32 且つ チャネル数(ch)が 1 のとき、 Windows の CreateDIBSection 関数を使用して領域を確保しますが、 CreateDIBSection によって 2GB を超えるような大きいサイズの領域を確保できない場合があります。 64bit アプリケーションでも、この挙動が見られます。 alloc_option に 1 を指定すると、CreateDIBSection を使用しませんので、この制限を回避できます。
また、このオブジェクトがビットマップハンドルを保有する為、 10,000 個のインスタンスを作成すると GDI リソースが枯渇します。 上限は流動的で、その他で GDI リソースを使用していると 10,000 個より少ない値で枯渇することになります。 このインスタンスを大量に生成する必要がある場合は、 前述と同様に alloc_option に 1 を指定し、CreateDIBSection を使用しないようにしてください。
エラーコード
定数 内容
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリが不足しています。
参照
CFvImage::SetSize

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::SetSize ( const FVCL::ImageSize image_size,
UINT  alloc_option = (UINT)-1 
)
virtual

パタン領域の確保

パタンとマスク領域を確保します。
使用可能なパタンの種類については、サーチ機能の説明をご参照ください。

引数
[in]image_size画像サイズ
[in]alloc_optionオプション
  • 0: 既定の動作
  • 1: DIB を使用しない

戻り値
true正常
fasle異常
GetErrorCodeメソッドによりエラーコードを取得できます。
オプションについて
既定の動作では、指定された型(type)が BIN,UC8,RGB24,RGB32 且つ チャネル数(ch)が 1 のとき、 Windows の CreateDIBSection 関数を使用して領域を確保しますが、 CreateDIBSection によって 2GB を超えるような大きいサイズの領域を確保できない場合があります。 64bit アプリケーションでも、この挙動が見られます。 alloc_option に 1 を指定すると、CreateDIBSection を使用しませんので、この制限を回避できます。
また、このオブジェクトがビットマップハンドルを保有する為、 10,000 個のインスタンスを作成すると GDI リソースが枯渇します。 上限は流動的で、その他で GDI リソースを使用していると 10,000 個より少ない値で枯渇することになります。 このインスタンスを大量に生成する必要がある場合は、 前述と同様に alloc_option に 1 を指定し、CreateDIBSection を使用しないようにしてください。
エラーコード
定数 内容
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリが不足しています。
参照
CFvImage::SetSize

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::MakePattern ( const FVCL::Data::CFvImage image,
const FVCL::Data::CFvRectangle rect,
const FVCL::Data::CFvPoint center_mark 
)
virtual

パタンの生成

画像オブジェクト上の任意の領域からパタンを生成します。

引数
[in]image元画像
[in]rect登録位置の矩形 (元画像の左上を(0,0)とする絶対座標) (単位:画素)
[in]center_mark基準点 (元画像の左上を(0,0)とする絶対座標) (単位:画素(サブピクセル指定可))
戻り値
true正常
false異常
エラーコード:
定数 内容
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリが不足しています。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に指定された画像オブジェクトが不正です。
13162 FVCL_ErrorCode::CFvPattern::INVALID_REGIST_RECT 登録範囲が無効です。
解説:
引数 image に指定された画像オブジェクト上の指定領域から 画像データをコピーしてパタン画像を生成します。 登録座標(rect)、基準点(center_mark)ともに画像上の絶対座標を指定してください。 登録座標の矩形の終点(rect.ed)も領域に含まれます。 基準点は、この関数の内部で登録座標の左上からの相対値に変換されます。
CFvPattern.png
具体的な処理手順については、クラスの説明に示すサンプルコードを参考にしてください。
留意事項:
このメソッドの引数 rect (登録位置の矩形) に指定された座標が1画素単位でない(端数がある)場合にサーチ機能の回答座標との矛盾が生じます。 通常は端数がない座標値を指定することを推奨します。 端数が発生する場合は、MakePatternRevision スタティック関数でリビジョンを 1 に設定してご使用ください。
バグ:
FVCLbasic v1.1.0.0: 引数 rect の終端チェックの誤りを修正しました。
引数 rect の終端チェックに誤りがあり、XY方向それぞれに 1 画素分の領域違反を起こす可能性がありました。
参照
MakePatternRevision(int value)
FVCL::Data::CFvPattern::SetRegistRect ( const FVCL::Data::CFvRectangle rect)

登録座標の設定

引数
[in]rect登録座標が格納された CFvRectangle オブジェクトへの参照
戻り値
true正常
fasle異常
参照
m_RegistRect
FVCL::Data::CFvPattern::GetRegistRect ( CFvRectangle rect) const

登録座標の取得

引数
[out]rect登録座標を格納する CFvRectangle オブジェクトへのポインタ
戻り値
true正常
fasle異常
参照
m_RegistRect
FVCL::Data::CFvPattern::GetRegistRect ( ) const

登録座標の取得

戻り値
登録座標(m_RegistRect)への参照を返します。
FVCL::Data::CFvPattern::GetRegistRect ( )

登録座標の取得

戻り値
登録座標(m_RegistRect)への参照を返します。 この参照を介して直接変更する事が可能です。
FVCL::Data::CFvPattern::SetCenterMark ( const FVCL::Data::CFvPoint center_mark)

パタン基準点の設定

パタン基準点を設定します。
基準点は登録座標の左上からの相対座標です。

引数
[in]center_markパタン基準点が格納された CFvPoint オブジェクトへの参照
戻り値
true正常
fasle異常
参照
m_CenterMark
FVCL::Data::CFvPattern::GetCenterMark ( CFvPoint center_mark) const

パタン基準点の取得

パタン基準点を取得します。
基準点は登録座標の左上からの相対座標です。

引数
[out]center_markパタン基準点を格納する CFvPoint オブジェクトへのポインタ
戻り値
true正常
false異常
参照
m_CenterMark
FVCL::Data::CFvPattern::GetCenterMark ( ) const

パタン基準点の取得

戻り値
パタン基準点(m_CenterMark)への参照を返します。
FVCL::Data::CFvPattern::GetCenterMark ( )

パタン基準点の取得

戻り値
パタン基準点(m_CenterMark)への参照を返します。 この参照を介して直接変更する事が可能です。
FVCL::Data::CFvPattern::SetOption ( INT  option)

オプションの設定

任意のオプションを設定します。

引数
[in]optionオプション
戻り値
true正常
false異常
参照
m_Option
FVCL::Data::CFvPattern::GetOption ( ) const

オプションの取得

戻り値
現在設定されているオプションを返します。
参照
m_Option
FVCL::Data::CFvPattern::GetAttachedMask ( CFvImage image) const

マスク領域にアタッチされた画像オブジェクトの取得

引数に指定された画像オブジェクトに このオブジェクトが持つマスク領域アドレスをアタッチして返します。

引数
[out]imageアタッチ用の画像オブジェクト
戻り値
true正常
false異常
GetErrorCode メソッドでエラーコードを取得できます。
エラーコード:
定数 内容
23 FVCL_ErrorCode::NOT_ALLOCATED マスク領域が確保されていません。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数が不正です。
バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Data::CFvPattern::MaskCopyFrom ( const FVCL::Data::CFvImage image)

画像オブジェクトからマスク領域への複写

画像オブジェクトからマスク領域へデータを複写します。

引数
[in]image複写元画像
戻り値
true正常
false異常
GetErrorCode メソッドでエラーコードを取得できます。
エラーコード:
定数 内容
23 FVCL_ErrorCode::NOT_ALLOCATED マスク領域が確保されていません。
12 FVCL_ErrorCode::INVALID_OBJECT 引数に指定された画像オブジェクトの領域が確保されていません。
16 FVCL_ErrorCode::INVALID_IMAGETYPE 引数に指定された画像オブジェクトの画像種別が処理対象外です。
99 FVCL_ErrorCode::NOMATCH_CHANNEL 引数に指定された画像オブジェクトのチャネル数が処理対象外です。
19 FVCL_ErrorCode::INVALID_PROCAREA 処理範囲のサイズが一致していません。
解説:
複写元の画像オブジェクトの画素値を このインスタンスのマスク領域へそのまま複写します。
処理範囲を考慮しますので、予め SetWindow により処理範囲の設定を行ってください。
複写元に指定できる画像オブジェクトの条件は以下の通りです。
  • 複写先の処理範囲サイズと一致している事
    ※但し、複写先の処理範囲の縦と横のサイズがいずれも大きい場合は許容されます。
  • チャネル数が 1 である事
  • 画像種別が UC8 である事

バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Data::CFvPattern::MaskCopyFrom ( const FVCL::Data::CFvImage image,
INT  maskbit 
)

画像オブジェクトからマスク領域への複写 (ビット指定)

画像オブジェクトからマスク領域へデータを複写します。

引数
[in]image複写元画像
[in]maskbit対象マスクの指示
以下の定数を指定してください。
  • FVCL::Pattern::MaskBit::MASK (マスク部分)
  • FVCL::Pattern::MaskBit::ESSENTIAL (不可欠部分)

戻り値
true正常
false異常
GetErrorCode メソッドでエラーコードを取得できます。
エラーコード:
定数 内容
23 FVCL_ErrorCode::NOT_ALLOCATED マスク領域が確保されていません。
12 FVCL_ErrorCode::INVALID_OBJECT 引数に指定された画像オブジェクトの領域が確保されていません。
16 FVCL_ErrorCode::INVALID_IMAGETYPE 引数に指定された画像オブジェクトの画像種別が処理対象外です。
99 FVCL_ErrorCode::NOMATCH_CHANNEL 引数に指定された画像オブジェクトのチャネル数が処理対象外です。
19 FVCL_ErrorCode::INVALID_PROCAREA 処理範囲のサイズが一致していません。
解説:
複写元の画像オブジェクトの画素値が 0 か否かによって、 このインスタンスのマスク領域のビット(マスク情報)を OFF/ON します。 どのビット(マスク情報)を対象とするかは、引数 maskbit で指示します。
処理範囲を考慮しますので、予め SetWindow により処理範囲の設定を行ってください。
複写元に指定できる画像オブジェクトの条件は以下の通りです。
  • 複写先の処理範囲サイズと一致している事
    ※但し、複写先の処理範囲の縦と横のサイズがいずれも大きい場合は許容されます。
  • チャネル数が 1 である事
  • 画像種別が以下の何れかである事
    • FVCL::ImageType::BIN
    • FVCL::ImageType::UC8
    • FVCL::ImageType::US16
    • FVCL::ImageType::UI32
    • FVCL::ImageType::S16
    • FVCL::ImageType::I32
    • FVCL::ImageType::I64
    • FVCL::ImageType::F32
    • FVCL::ImageType::D64


バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Data::CFvPattern::MaskCopyTo ( CFvImage image) const

マスク領域から画像オブジェクトへの複写

マスク領域から画像オブジェクトへデータを複写します。

引数
[out]image複写先画像
戻り値
true正常
false異常
GetErrorCode メソッドでエラーコードを取得できます。
エラーコード:
定数 内容
23 FVCL_ErrorCode::NOT_ALLOCATED マスク領域が確保されていません。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数が不正です。
12 FVCL_ErrorCode::INVALID_OBJECT 引数に指定された画像オブジェクトの領域が確保されていません。
16 FVCL_ErrorCode::INVALID_IMAGETYPE 引数に指定された画像オブジェクトの画像種別が処理対象外です。
99 FVCL_ErrorCode::NOMATCH_CHANNEL 引数に指定された画像オブジェクトのチャネル数が処理対象外です。
19 FVCL_ErrorCode::INVALID_PROCAREA 処理範囲のサイズが一致していません。
解説:
マスク領域のビット(マスク情報)を複写先の画像オブジェクトへそのまま複写します。
処理範囲を考慮しますので、予め SetWindow により処理範囲の設定を行ってください。
複写先に指定できる画像オブジェクトの条件は以下の通りです。
  • 複写元の処理範囲サイズと一致している事
    ※但し、複写先の処理範囲の縦と横のサイズがいずれも大きい場合は許容されます。
  • チャネル数が 1 である事
  • 画像種別が UC8 である事

バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Data::CFvPattern::MaskCopyTo ( CFvImage image,
INT  maskbit 
) const

マスク領域から画像オブジェクトへの複写 (ビット指定)

マスク領域から画像オブジェクトへデータを複写します。

引数
[out]image複写先画像
[in]maskbit対象マスクの指示
以下の定数を指定してください。
  • FVCL::Pattern::MaskBit::MASK (マスク部分)
  • FVCL::Pattern::MaskBit::ESSENTIAL (不可欠部分)

戻り値
true正常
false異常
GetErrorCode メソッドでエラーコードを取得できます。
エラーコード:
定数 内容
23 FVCL_ErrorCode::NOT_ALLOCATED マスク領域が確保されていません。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数が不正です。
12 FVCL_ErrorCode::INVALID_OBJECT 引数に指定された画像オブジェクトの領域が確保されていません。
16 FVCL_ErrorCode::INVALID_IMAGETYPE 引数に指定された画像オブジェクトの画像種別が処理対象外です。
99 FVCL_ErrorCode::NOMATCH_CHANNEL 引数に指定された画像オブジェクトのチャネル数が処理対象外です。
19 FVCL_ErrorCode::INVALID_PROCAREA 処理範囲のサイズが一致していません。
解説:
マスク領域のビット(マスク情報)の ON/OFF によって、 複写先の画像オブジェクトの画素値を 1/0 に設定します。 どのビット(マスク情報)を対象とするかは、引数 maskbit で指示します。 maskbit に MASKESSENTIAL の論理和が指定された場合は、 MASK (マスク部分)または ESSENTIAL (不可欠部分)の何れかが ON の場合に複写先の画素値に 1 を設定し、 何れも OFF の場合に複写先の画素値に 0 を設定します。
処理範囲を考慮しますので、予め SetWindow により処理範囲の設定を行ってください。
複写先に指定できる画像オブジェクトの条件は以下の通りです。
  • 複写元の処理範囲サイズと一致している事
    ※但し、複写先の処理範囲の縦と横のサイズがいずれも大きい場合は許容されます。
  • チャネル数が 1 である事
  • 画像種別が以下の何れかである事
    • FVCL::ImageType::BIN
    • FVCL::ImageType::UC8
    • FVCL::ImageType::US16
    • FVCL::ImageType::UI32
    • FVCL::ImageType::S16
    • FVCL::ImageType::I32
    • FVCL::ImageType::I64
    • FVCL::ImageType::F32
    • FVCL::ImageType::D64


バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Data::CFvPattern::GetMaskAdrs ( UINT  x = 0,
UINT  y = 0 
) const

マスクアドレスの取得

パタンマスクデータが格納された領域の任意のアドレスを取得します。

引数
[in]x水平方向の座標(pixel)
[in]y垂直方向の座標(pixel)
戻り値
マスクアドレスを返します。
パタンが生成されていない場合は NULL が返ります。
指定した座標がマスク領域外の場合は、例外を発行します。
例外
FVCL::CFveBadAccessException
FVCL::Data::CFvPattern::SetMaskPixelUC8 ( UINT  x,
UINT  y,
UCHAR  value 
)

マスク情報の設定

指定位置のマスク情報を設定します。
FVCL::Pattern::MaskBit に定義された定数の論理和を指定してください。

引数
[in]x水平座標 (0~)
[in]y垂直座標 (0~)
[in]value設定するマスク情報
戻り値
true正常
false異常
例外
FVCL::CFveBadAccessException座標が領域外を示しています。
または、マスク領域が確保されていません。
サンプルコード:
// x=5、y=10 の画素位置のマスクを ON する.
// x=5、y=10 の画素位置の不可欠部分を ON する.
// x=5、y=10 の画素位置のマスクと不可欠部分を ON する.
pattern.SetMaskPixelUC8( 5, 10,

バージョン
FVCLbasic v2.0.0.0: 新規に追加しました。
参照
GetMaskAdrs
GetMaskPixelUC8
FVCL::Data::CFvPattern::GetMaskPixelUC8 ( UINT  x,
UINT  y 
) const

マスク情報の取得

指定位置のマスク情報を取得します。
取得した値と FVCL::Pattern::MaskBit に定義された定数を論理演算して、 情報を取得してください。

引数
[in]x水平座標 (0~)
[in]y垂直座標 (0~)
戻り値
該当する位置のマスク情報を INT に格納して返します。
例外
FVCL::CFveBadAccessException座標が領域外を示しています。
または、マスク領域が確保されていません。
バージョン
FVCLbasic v2.0.0.0: 新規に追加しました。
参照
GetMaskAdrs
SetMaskPixelUC8
FVCL::Data::CFvPattern::SetMaskPixelI32 ( UINT  x,
UINT  y,
INT  value 
)

マスク情報の設定

指定位置のマスク情報を設定します。
FVCL::Pattern::MaskBit に定義された定数の論理和を指定してください。

引数
[in]x水平座標 (0~)
[in]y垂直座標 (0~)
[in]value設定するマスク情報
戻り値
true正常
false異常
例外
FVCL::CFveBadAccessException座標が領域外を示しています。
または、マスク領域が確保されていません。
サンプルコード:
// x=5、y=10 の画素位置のマスクを ON する.
// x=5、y=10 の画素位置の不可欠部分を ON する.
// x=5、y=10 の画素位置のマスクと不可欠部分を ON する.
pattern.SetMaskPixelI32( 5, 10,

バージョン
FVCLbasic v2.0.0.0: 新規に追加しました。
参照
GetMaskAdrs
GetMaskPixelI32
FVCL::Data::CFvPattern::GetMaskPixelI32 ( UINT  x,
UINT  y 
) const

マスク情報の取得

指定位置のマスク情報を取得します。
取得した値と FVCL::Pattern::MaskBit に定義された定数を論理演算して、 情報を取得してください。

引数
[in]x水平座標 (0~)
[in]y垂直座標 (0~)
戻り値
該当する位置のマスク情報を INT に格納して返します。
例外
FVCL::CFveBadAccessException座標が領域外を示しています。
または、マスク領域が確保されていません。
バージョン
FVCLbasic v2.0.0.0: 新規に追加しました。
参照
GetMaskAdrs
SetMaskPixelI32
FVCL::Data::CFvPattern::SetMaskPixelI64 ( UINT  x,
UINT  y,
INT64  value 
)

マスク情報の設定

指定位置のマスク情報を設定します。
FVCL::Pattern::MaskBit に定義された定数の論理和を指定してください。

引数
[in]x水平座標 (0~)
[in]y垂直座標 (0~)
[in]value設定するマスク情報
戻り値
true正常
false異常
例外
FVCL::CFveBadAccessException座標が領域外を示しています。
または、マスク領域が確保されていません。
サンプルコード:
// x=5、y=10 の画素位置のマスクを ON する.
// x=5、y=10 の画素位置の不可欠部分を ON する.
// x=5、y=10 の画素位置のマスクと不可欠部分を ON する.
pattern.SetMaskPixelI64( 5, 10,

バージョン
FVCLbasic v1.2.0.0: 新規に追加しました。
参照
GetMaskAdrs
GetMaskPixelI64
FVCL::Data::CFvPattern::GetMaskPixelI64 ( UINT  x,
UINT  y 
) const

マスク情報の取得

指定位置のマスク情報を取得します。
取得した値と FVCL::Pattern::MaskBit に定義された定数を論理演算して、 情報を取得してください。

引数
[in]x水平座標 (0~)
[in]y垂直座標 (0~)
戻り値
該当する位置のマスク情報を INT64 に格納して返します。
例外
FVCL::CFveBadAccessException座標が領域外を示しています。
または、マスク領域が確保されていません。
バージョン
FVCLbasic v1.2.0.0: 新規に追加しました。
参照
GetMaskAdrs
SetMaskPixelI64
FVCL::Data::CFvPattern::GetMaskMemSize ( ) const

マスクのメモリ容量の取得 (非推奨)

このメソッドは互換性の為に残しています。 新しい開発では GetMaskMemSize64 を使用してください。

マスクのメモリ容量(バイト数)を取得します。

戻り値
マスクのメモリ容量(バイト数)を返します。
FVCL::Data::CFvPattern::GetMaskMemSize64 ( ) const

マスクのメモリ容量の取得

マスクのメモリ容量(バイト数)を取得します。

戻り値
マスクのメモリ容量(バイト数)を返します。
FVCL::Data::CFvPattern::GetMaskHorzByte ( ) const

マスクの水平方向サイズの取得

マスクの水平方向のサイズ(バイト数)を取得します。

戻り値
マスクの水平方向のバイト数を返します。
FVCL::Data::CFvPattern::GetMaskImageType ( ) const

マスクの画像種別の取得

戻り値
マスクの画像種別を返します。
参照
FVCL::ImageType
FVCL::Data::CFvPattern::operator= ( const CFvPattern src)
virtual

代入オペレータ (=)

引数
[in]srcコピー元のブジェクト
戻り値
自身のオブジェクトへの参照を返します。
FVCL::Data::CFvPattern::operator== ( const CFvPattern src) const
virtual

比較オペレータ (==)

引数
[in]src比較対象のオブジェクト
戻り値
true一致
false不一致
FVCL::Data::CFvPattern::operator!= ( const CFvPattern src) const
virtual

比較オペレータ (!=)

引数
[in]src比較対象のオブジェクト
戻り値
true不一致
false一致
FVCL::Data::CFvPattern::fnImportFIE ( FHANDLE  hImage,
bool  is_ref 
)
protectedvirtual

FIE ハンドルのインポート

※ 派生元のクラスが画像メモリの確保を行う際にマスク領域の確保(MaskAllocate)が 実行されることを目的としてオーバーライドしたものです。

指定された FIE ハンドルから画像アドレスを取得して、このクラスのフィールドに保管します。

この関数は、外部で確保された FIE ハンドルをこのクラスに設定する際に使用します。
fnAllocate や fnAttach を使用すると内部で FIE ハンドルを生成しますので、 このメソッドとは併用できません。

引数
[in]hImageFIE 画像オブジェクト
以下のタイプのオブジェクトを指定できます。
  • F_OBJID_IMG_ROOT
  • F_OBJID_IMG_CHILD

オブジェクトタイプ は、FIE ライブラリの fnFIE_get_objtype で取得することが可能です。
[in]is_refFIE ハンドル の参照フラグ
  • true : アタッチします。このクラスはハンドルを解放しません。
  • false : アタッチしません。このクラスはハンドルを解放します。

戻り値
FVCL_ErrorCode::_SUCCESS正常終了
FVCL_ErrorCode::INVALID_OBJECTオブジェクトが無効です。
参照
fnAllocate
fnAttach

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::fnAllocate ( UINT  horz,
UINT  vert,
UINT  type,
UINT  ch,
UINT  option = 0 
)
protectedvirtual

内部メモリのアロケーション

※ 派生元のクラスが画像メモリの確保を行う際にマスク領域の確保(MaskAllocate)が 実行されることを目的としてオーバーライドしたものです。

画像種別にあわせて、メモリアロケーションを行います。

引数
[in]horz横方向サイズ (1~)
[in]vert縦方向サイズ (1~)
[in]type画像種別
FVCL::ImageType をご参照ください。
[in]chチャネル (1~16)
[in]optionオプション
  • 0: 既定の動作
  • 1: DIB を使用しない

戻り値
FVCL_ErrorCode::_SUCCESS正常終了
FVCL_ErrorCode::FAILED_TO_ALLOCATEメモリが確保できません。
FVCL_ErrorCode::INVALID_IMAGESIZE画像サイズに0が指定されています。
FVCL_ErrorCode::INVALID_IMAGETYPE画像種別が無効です。
FVCL_ErrorCode::INVALID_CHANNELチャネル数が無効です。
参照
CFvImage
SetSize

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::fnAttach ( void **  adrs,
UINT  horz,
UINT  vert,
UINT  type,
UINT  ch,
void **  handles 
)
protectedvirtual

画像メモリのアタッチ

※ 派生元のクラスが画像メモリの確保を行う際にマスク領域の確保(MaskAllocate)が 実行されることを目的としてオーバーライドしたものです。

画像メモリをアタッチします。

引数
[in]adrs先頭アドレス配列
[in]horz横方向サイズ
[in]vert縦方向サイズ
[in]type画像種別
[in]chチャネル数 (1~16)
[in]handlesハンドル配列
戻り値
FVCL_ErrorCode::_SUCCESS正常
FVCL_ErrorCode::INVALID_PARAMETERパラメータが不正
参照
Attach

FVCL::Data::CFvImageを再実装しています。

FVCL::Data::CFvPattern::MaskAllocate ( UINT  horz,
UINT  vert,
UINT  type 
)
protectedvirtual

マスク領域の確保

マスク領域を確保します。

引数
[in]horz横方向サイズ
[in]vert縦方向サイズ
[in]type画像種別
戻り値
true正常
false異常
エラーコード:
定数 内容
23 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
バージョン
FVCLbasic v1.2.0.0: 登録位置の幅・高さをリセットする処理を追加しました。
m_RegistRect の幅・高さが指定サイズ(horz,vert)と一致しない場合に 指定サイズ(0,0,horz-1,vert-1)に合わせます。
FVCL::Data::CFvPattern::MaskFree ( )
protectedvirtual

マスク領域の解放

マスク領域を開放します。

戻り値
true正常
false既に開放済み

メンバ詳解

FVCL::Data::CFvPattern::m_RegistRect
protected

登録座標

パタン生成時の座標です。

参照
SetRegistRect
GetRegistRect
FVCL::Data::CFvPattern::m_CenterMark
protected

パタン基準点

パタンの基準点を示す座標です。

参照
SetCenterMark
GetCenterMark
FVCL::Data::CFvPattern::m_Option
protected

オプション

現在は使用していません。

参照
SetOption
GetOption
FVCL::Data::CFvPattern::m_MaskImage
protected

パタンマスク

パタン画像の画素毎のマスク部分・不可欠部分を示す情報です。

バージョン
FVCLbasic v2.0.0.0: 新規追加
参照
SetSize
MakePattern
GetAttachedMask
GetMaskAdrs
SetMaskPixelUC8
GetMaskPixelUC8
SetMaskPixelI32
GetMaskPixelI32
SetMaskPixelI64
GetMaskPixelI64
GetMaskMemSize
GetMaskHorzByte
GetMaskImageType

Documentation copyright © 2007 FAST Corporation. [B-001864]
Generated on 2023年11月02日(木) 10時13分00秒 for WIL説明書(C++) by doxygen 1.8.11