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

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

Syntax

C#
public virtual CFviGdiImage ToCFviGdiImage()
Visual Basic
Public Overridable Function ToCFviGdiImage As CFviGdiImage

Return Value

Type: CFviGdiImage
新しく生成した GDI 画像オブジェクトに画像データを複製して返します。

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;

namespace SampleCode.Ipl
{
    partial class Converter
    {
        public static void ToCFviGdiImage()
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            // 1) 画像準備.
            IntPtr 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) 複製.(CFviGdiImage へ画像データを複製する)
            FVIL.GDI.CFviGdiImage dst = converter.ToCFviGdiImage();

            // -) 確認.(任意)
            dst.Save(string.Format("IplImageConverter_{0}.bmp", MethodBase.GetCurrentMethod().Name));

            // 4) 解放.(IplImage を 解放する)
            cvReleaseImage( ref src );
        }
    }
}


Visual Basic Copy imageCopy
' $Revision: 1.2 $

Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Drawing
Imports System.Reflection

Namespace Ipl
    Partial Class Converter
        Public Shared Sub ToCFviGdiImage()
            Console.WriteLine(MethodBase.GetCurrentMethod().Name)

            ' 1) 画像準備.
            Dim src As IntPtr = 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) 複製.(CFviGdiImage へ画像データを複製する)
            Dim dst As FVIL.GDI.CFviGdiImage = converter.ToCFviGdiImage()

            ' -) 確認.(任意)
            dst.Save(String.Format("IplImageConverter_{0}.bmp", MethodBase.GetCurrentMethod().Name))

            ' 4) 解放.(IplImage を 解放する)
            cvReleaseImage(src)
        End Sub
    End Class
End Namespace

Exceptions

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

See Also