画像データの複製 (3) (IPL → FIE 画像オブジェクト)
Namespace: FVIL.IplAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual FHANDLE ToFIE( f_imgtype type ) |
Visual Basic |
---|
Public Overridable Function ToFIE ( type As f_imgtype ) As FHANDLE |
Parameters
- type
- Type: fvalgcli..::..f_imgtype
画像種別 [UC8,US16,S16,I32,FLOAT,DOUBLE,RGBTRIPLE,RGBQUAD] 複製先の再確保を行う際の画像種別を示します。
チャネル数は IPL 側に従います。但し RGBTRIPLE/RGBQUAD の場合は常に 1 チャネルになります。
Return Value
Type: FHANDLE新しく生成した FIE 画像オブジェクトに画像データを複製して返します。
使用後は Dispose()()()() (または fnFIE_free_object(FHANDLE)) で解放してください。
Remarks
このインスタンスの Pointer フィールドに有効なアドレスが設定されている必要があります。
処理可能な条件は、CopyTo(Object) と等価です。
処理に失敗した場合は例外が発行されます。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | 領域の確保に失敗しました。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | 引数に指定されたインスタンスが不正です。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | オブジェクトハンドルが無効です。 |
16 | FVIL.ErrorCode.INVALID_IMAGETYPE | 対応する画像種別がありません。 |
17 | FVIL.ErrorCode.INVALID_IMAGESIZE | 幅、高さが許容範囲外です。 |
18 | FVIL.ErrorCode.INVALID_CHANNEL | チャネル数が許容範囲外です。 |
21 | FVIL.ErrorCode.NOT_SUPPORTED | サポートしていない条件が指定されました。 |
23 | FVIL.ErrorCode.NOT_ALLOCATED | 画像データ領域が確保されていません。 |
96 | FVIL.ErrorCode.NOMATCH_IMAGESIZE | 画像の幅または高さが一致していません。 |
97 | FVIL.ErrorCode.NOMATCH_CHANNEL | 画像のチャネル数が一致していません。 |
Examples
出力結果:
ソースコード:
Copy | |
---|---|
[0] bpp=8 [1] bpp=24 [2] bpp=32 |
ソースコード:
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Drawing; using System.Reflection; using fvalgcli; namespace SampleCode.Ipl { partial class Converter { public static void ToFIE1() { Console.WriteLine(MethodBase.GetCurrentMethod().Name); IntPtr src = IntPtr.Zero; try { // 1) 画像準備. src = cvLoadImage ("floppy_RGB.jpg", CV_LOAD_IMAGE.CV_LOAD_IMAGE_COLOR); if (src == IntPtr.Zero) throw new FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "cvLoadImage"); // 2) ポインタを IplImageConverter に設定する. FVIL.Ipl.IplImageConverter converter = new FVIL.Ipl.IplImageConverter(src); // 3) 複製.(FIE 画像オブジェクトへ画像データを複製する) f_imgtype[] types = { f_imgtype.F_IMG_UC8, f_imgtype.F_IMG_US16, f_imgtype.F_IMG_S16, f_imgtype.F_IMG_I32, f_imgtype.F_IMG_FLOAT, f_imgtype.F_IMG_DOUBLE, f_imgtype.F_IMG_RGBTRIPLE, f_imgtype.F_IMG_RGBQUAD, }; for(int i=0 ; i<types.Length ; i++) { // -) 複製. using (FHANDLE hdst = converter.ToFIE( types[i] )) { // -) 確認.(任意) f_imgtype type = (f_imgtype)api.fnFIE_img_get_type(hdst); int channels = api.fnFIE_img_get_channels(hdst); Console.WriteLine("[{0}] type={1}, channels={2}", i, type, channels); } } } finally { // 4) 解放.(IplImage を 解放する) cvReleaseImage( ref src ); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports System.Runtime.InteropServices Imports System.Drawing Imports System.Reflection Imports fvalgcli Namespace Ipl Partial Class Converter Public Shared Sub ToFIE1() Console.WriteLine(MethodBase.GetCurrentMethod().Name) Dim src As IntPtr = IntPtr.Zero Try ' 1) 画像準備. src = cvLoadImage("floppy_RGB.jpg", CV_LOAD_IMAGE.CV_LOAD_IMAGE_COLOR) If src = IntPtr.Zero Then Throw New FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "cvLoadImage") End If ' 2) ポインタを IplImageConverter に設定する. Dim converter As New FVIL.Ipl.IplImageConverter(src) ' 3) 複製.(FIE 画像オブジェクトへ画像データを複製する) Dim types As f_imgtype() = { _ f_imgtype.F_IMG_UC8, _ f_imgtype.F_IMG_US16, _ f_imgtype.F_IMG_S16, _ f_imgtype.F_IMG_I32, _ f_imgtype.F_IMG_FLOAT, _ f_imgtype.F_IMG_DOUBLE, _ f_imgtype.F_IMG_RGBTRIPLE, _ f_imgtype.F_IMG_RGBQUAD} For i As Integer = 0 To types.Length - 1 ' -) 複製. Using hdst As FHANDLE = converter.ToFIE(types(i)) ' -) 確認.(任意) Dim type As f_imgtype = CType(api.fnFIE_img_get_type(hdst), f_imgtype) Dim channels As Integer = api.fnFIE_img_get_channels(hdst) Console.WriteLine("[{0}] type={1}, channels={2}", i, type, channels) End Using Next Finally ' 4) 解放.(IplImage を 解放する) cvReleaseImage(src) End Try End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |