Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
[SerializableAttribute] public class CFviPattern : CFviImage |
Visual Basic |
---|
<SerializableAttribute> Public Class CFviPattern Inherits CFviImage |
Remarks
パタン画像情報を保有するクラスです。
パタンオブジェクトは、パタン画像、マスク情報、登録位置の矩形情報、基準点から成り立ちます。 パタン画像は CFviImage を継承して、一般的な画像情報として保有しています。 その他の情報は、このクラスで実装したものです。
トピック
初期値と範囲 (パタンオブジェクトの固有情報):
プロパティ | 初期値 | 範囲 | 変更 |
---|---|---|---|
RegistRect | 0,0-0,0 | 範囲なし | MakePattern(CFviImage, CFviRectangle, CFviPoint) で指定、または、当プロパティで変更可能です。 |
CenterMark | 0,0 | 範囲なし | MakePattern(CFviImage, CFviRectangle, CFviPoint) で指定、または、当プロパティで変更可能です。 |
Caption | null | 任意の文字列 | 当プロパティで変更可能です。 |
FilePath | null | 有効なファイルパス | 当プロパティで変更可能です。 |
Option | 0 | 範囲なし | 当プロパティで変更可能です。 |
MaskImageType | FVIL.ImageType.UC8 | ImageType に定義された定数 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
MaskHorzByte | 640 (byte) | HorzSize と ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
MaskMemSize | 307,200 (byte) | Size と ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
初期値と範囲 (パタン画像部分):
プロパティ | 初期値 | 範囲 | 変更 |
---|---|---|---|
HorzSize | 640 (pixel) | 1~ | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
VertSize | 480 (pixel) | 1~ | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
ImageType | FVIL.ImageType.UC8 | FVIL.ImageType に定義された定数 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
Channel | 1 (チャネル) | 1~16 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
Bpp | 8 (bit) | ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
HorzByte | 640 (byte) | HorzSize と ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
MemSize | 307,200 (byte) | Size と ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
Depth | 8 (bit) | ImageType に依存します。 | 当プロパティから変更可能です。 |
ImageInfo | FVIL.ImageInfo.GRAY | FVIL.ImageInfo に定義された定数 | 当プロパティから変更可能です。 |
Window | X=0,Y=0,Width=640,Height=480 | X: 0~HorzSize-1、Y: 0~VertSize-1 | 当プロパティから変更可能です。 |
登録位置と基準点:
登録位置の矩形情報は、登録時に使用した画像の左上を 0,0 とする絶対値です。 基準点(center_mark)は、登録位置の左上からの相対値を表します。
関連:
MakePattern(CFviImage, CFviRectangle, CFviPoint)
RegistRect
CenterMark
パタンファイル構成:
パタンファイルは、下記のように複数のファイルで構成されます。 表中の PatternName は任意の文字列です。
ファイル | 内容 | 形式 |
---|---|---|
PatternName.pat | パタン画像 | 非圧縮のビットマップ または Raw 形式 |
PatternName.pat_MSK | マスク情報 | 非圧縮のビットマップ |
PatternName.pat_INF | 登録位置の矩形と基準点 | iniファイル |
マスクビット:
パタン画像のマスク情報を示すビットフィールド定数です。
パタン画像は、各画素に 1byte(8bit) のマスク画素が対応しており、
1つのマスク画素に8種のマスク情報を保有できるようになっています。
現在は、ここに定義される2種のマスク情報が使用されています。
名称 | 値 | 内容 |
---|---|---|
FVIL.Data.Pattern.MaskBit.None | 0x00 | マスクなし |
FVIL.Data.Pattern.MaskBit.MASK | 0x01 | マスク部分 |
FVIL.Data.Pattern.MaskBit.ESSENTIAL | 0x02 | 不可欠部分 |
FVIL.Data.Pattern.MaskBit.ALL | 0x03 | すべての有効なビット |
関連:
SetMaskPixel(Int32, Int32, CFviPixel)
GetMaskPixel(Int32, Int32)
マスク指標:
パタン画像のマスク情報を示す定数です。
配列指標などに用いられる事を想定していますが、現在、使用されていません。
名称 | 値 | 内容 |
---|---|---|
FVIL.Data.Pattern.MaskIndex.MASK | 0 | マスク部分 |
FVIL.Data.Pattern.MaskIndex.ESSENTIAL | 1 | 不可欠部分 |
Examples
下記コードは、元画像(下図)の中央付近のクリップをパタン画像として生成する例です。
パタン画像を生成するには、このクラスの
MakePattern(CFviImage, CFviRectangle, CFviPoint)
メソッドを使用します。
指定する座標は、矩形と基準点です。これらは共に元画像の左上を原点(0,0)とする絶対位置を指定します。
登録位置の矩形は、このクラスの
RegistRect に保存されます。
基準点は、登録位置の矩形の左上からの相対位置に変換され
CenterMark に保存されます。
元画像:
パタン画像:
出力結果:
User.SampleCode.Basic.MakePattern rect=134.00,74.00,181.00,169.00 mark=33.00,65.00
ソースコード:
C# | Copy |
---|---|
// $Revision: 1.3 $ using System; using System.Collections.Generic; using System.Text; using System.Drawing; using fvalgcli; // FvPluginXXXX attribute requires fvalgcli namespace User.SampleCode { public partial class Basic { /// <summary> /// サーチパタンの作成. /// </summary> [FvPluginExecute] public void MakePattern() { System.Reflection.MethodBase method = System.Reflection.MethodBase.GetCurrentMethod(); Console.WriteLine("{0}.{1}", method.DeclaringType.FullName, method.Name); // 1) インスタンスの準備. FVIL.Data.CFviImage src = new FVIL.Data.CFviImage(); // 2) 処理対象画像の取り込み. FVIL.File.Function.LoadImageFile(Defs.TestImageDir + "/clip_UC8_M.png", src, FVIL.PixelMode.Unpacking); // 3) パタン生成. FVIL.Data.CFviPattern pattern = new FVIL.Data.CFviPattern(); FVIL.Data.CFviRectangle rect = new FVIL.Data.CFviRectangle( 134, 74, 181, 169 ); FVIL.Data.CFviPoint mark = new FVIL.Data.CFviPoint( 167, 139 ); pattern.MakePattern( src, rect, mark ); // 4) ファイル保存. pattern.Save(Defs.ResultDir + "/Basic.MakePattern.pat"); // 5) ファイル読み込み. FVIL.Data.CFviPattern work = new FVIL.Data.CFviPattern(); work.Load(Defs.ResultDir + "/Basic.MakePattern.pat"); FVIL.Data.CFviRectangle _rect = work.RegistRect; FVIL.Data.CFviPoint _mark = work.CenterMark; Console.WriteLine("rect={0:F},{1:F},{2:F},{3:F}", _rect.St.X, _rect.St.Y, _rect.Ed.X, _rect.Ed.Y); Console.WriteLine("mark={0:F},{1:F}", _mark.X, _mark.Y); } }; } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports System.Drawing Imports fvalgcli ' FvPluginXXXX attribute requires fvalgcli Namespace SampleCode Public Partial Class Basic ''' <summary> ''' サーチパタンの作成. ''' </summary> <FvPluginExecute> _ Public Sub MakePattern() Dim method As System.Reflection.MethodBase = System.Reflection.MethodBase.GetCurrentMethod() Console.WriteLine("{0}.{1}", method.DeclaringType.FullName, method.Name) ' 1) インスタンスの準備. Dim src As New FVIL.Data.CFviImage() ' 2) 処理対象画像の取り込み. FVIL.File.[Function].LoadImageFile(Defs.TestImageDir & "/clip_UC8_M.png", src, FVIL.PixelMode.Unpacking) ' 3) パタン生成. Dim pattern As New FVIL.Data.CFviPattern() Dim rect As New FVIL.Data.CFviRectangle(134, 74, 181, 169) Dim mark As New FVIL.Data.CFviPoint(167, 139) pattern.MakePattern(src, rect, mark) ' 4) ファイル保存. pattern.Save(Defs.ResultDir & "/Basic.MakePattern.pat") ' 5) ファイル読み込み. Dim work As New FVIL.Data.CFviPattern() work.Load(Defs.ResultDir & "/Basic.MakePattern.pat") Dim _rect As FVIL.Data.CFviRectangle = work.RegistRect Dim _mark As FVIL.Data.CFviPoint = work.CenterMark Console.WriteLine("rect={0:F},{1:F},{2:F},{3:F}", _rect.St.X, _rect.St.Y, _rect.Ed.X, _rect.Ed.Y) Console.WriteLine("mark={0:F},{1:F}", _mark.X, _mark.Y) End Sub End Class End Namespace |
Inheritance Hierarchy
FVIL..::..CFviObject
FVIL.Data..::..CFviDataObject
FVIL.Data..::..CFviImage
FVIL.Data..::..CFviPattern