画像データの複製 (3) (IPL → FIE 画像オブジェクト)

Namespace: FVIL.Ipl
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public virtual FHANDLE ToFIE()
Visual Basic
Public Overridable Function ToFIE As FHANDLE

Return Value

Type: FHANDLE
新しく生成した FIE 画像オブジェクトに画像データを複製して返します。
使用後は Dispose()()()() (または fnFIE_free_object(FHANDLE)) で解放してください。

Remarks

このインスタンスの Pointer フィールドに有効なアドレスが設定されている必要があります。
処理可能な条件は、CopyTo(Object) と等価です。

処理に失敗した場合は例外が発行されます。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。


エラーコード:
ErrorCode メンバ内容
1FVIL.ErrorCode.FAILED_TO_ALLOCATE領域の確保に失敗しました。
11FVIL.ErrorCode.INVALID_PARAMETER引数に指定されたインスタンスが不正です。
12FVIL.ErrorCode.INVALID_OBJECTオブジェクトハンドルが無効です。
16FVIL.ErrorCode.INVALID_IMAGETYPE対応する画像種別がありません。
17FVIL.ErrorCode.INVALID_IMAGESIZE幅、高さが許容範囲外です。
18FVIL.ErrorCode.INVALID_CHANNELチャネル数が許容範囲外です。
21FVIL.ErrorCode.NOT_SUPPORTEDサポートしていない条件が指定されました。
23FVIL.ErrorCode.NOT_ALLOCATED画像データ領域が確保されていません。
96FVIL.ErrorCode.NOMATCH_IMAGESIZE画像の幅または高さが一致していません。
97FVIL.ErrorCode.NOMATCH_CHANNEL画像のチャネル数が一致していません。

Examples

ソースコード:
C# Copy imageCopy
// $Revision: 1.3 $

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 ToFIE()
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            IntPtr src = IntPtr.Zero;
            FHANDLE hdst = 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 画像オブジェクトへ画像データを複製する)
                hdst = converter.ToFIE();

                // -) 確認.(任意)
                FVIL.Data.CFviImage dst = new FVIL.Data.CFviImage(hdst, -1, new Rectangle());
                dst.Save(string.Format("IplImageConverter_{0}.bmp", MethodBase.GetCurrentMethod().Name));
            }
            finally
            {
                // 4) 解放.(IplImage を 解放する)
                cvReleaseImage( ref src );
                api.fnFIE_free_object(hdst);
            }
        }
    }
}


Visual Basic Copy imageCopy
' $Revision: 1.2 $

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 ToFIE()
            Console.WriteLine(MethodBase.GetCurrentMethod().Name)

            Dim src As IntPtr = IntPtr.Zero
            Dim hdst As FHANDLE = 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 画像オブジェクトへ画像データを複製する)
                hdst = converter.ToFIE()

                ' -) 確認.(任意)
                Dim dst As New FVIL.Data.CFviImage(hdst, -1, New Rectangle())
                dst.Save(String.Format("IplImageConverter_{0}.bmp", MethodBase.GetCurrentMethod().Name))
            Finally
                ' 4) 解放.(IplImage を 解放する)
                cvReleaseImage(src)
                api.fnFIE_free_object(hdst)
            End Try
        End Sub
    End Class
End Namespace

Exceptions

ExceptionCondition
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also