サイズ情報の取得 (IPL 用)

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

Syntax

C#
public static IplImageSize ToIplImageSize(
	FHANDLE hImage,
	bool use_alpha
)
Visual Basic
Public Shared Function ToIplImageSize ( 
	hImage As FHANDLE,
	use_alpha As Boolean
) As IplImageSize

Parameters

hImage
Type: fvalgcli..::..FHANDLE
サイズ情報の取得先
use_alpha
Type: System..::..Boolean
アルファチャネル使用の有無。[true:channels=4、false:channels=3]
image が F_IMG_RGBQUAD x1ch の場合、IplImageSize.channels を 3, 4 の何れにするかを指示します。
他の条件の場合は、この値は無視されます。

Return Value

Type: IplImageSize
IplImage を確保する際に使用するサイズ情報を返します。

Remarks

引数に指定された画像オブジェクトと互換性のある IplImage のサイズ情報に変換します。

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


エラーコード:
ErrorCode メンバ内容
16FVIL.ErrorCode.INVALID_IMAGETYPE対応する画像種別がありません。
18FVIL.ErrorCode.INVALID_CHANNELチャネル数が許容範囲外です。

Examples

出力結果:
Copy imageCopy
width               : 93
height              : 47
depth               : IPL_DEPTH_32F
channels            : 1


ソースコード:
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 ToIplImageSize4()
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            // 1) 画像準備.
            FHANDLE hsrc = api.fnFIE_img_root_alloc(f_imgtype.F_IMG_FLOAT, 1, 93, 47);
            if (hsrc == IntPtr.Zero)
                throw new FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "fnFIE_img_root_alloc");

            // 2) 画像サイズ情報の取得.
            FVIL.Ipl.IplImageSize size = FVIL.Ipl.IplImageConverter.ToIplImageSize(hsrc);

            // -) 確認.(任意)
            Console.WriteLine("{0,-20}: {1}", "width", size.width);
            Console.WriteLine("{0,-20}: {1}", "height", size.height);
            Console.WriteLine("{0,-20}: {1}", "depth", (IPL_DEPTH)size.depth);
            Console.WriteLine("{0,-20}: {1}", "channels", size.channels);

            // 3) 解放.
            api.fnFIE_free_object(hsrc);
        }
    }
}


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

            ' 1) 画像準備.
            Dim hsrc As FHANDLE = api.fnFIE_img_root_alloc(f_imgtype.F_IMG_FLOAT, 1, 93, 47)
            If hsrc = IntPtr.Zero Then
                Throw New FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "fnFIE_img_root_alloc")
            End If

            ' 2) 画像サイズ情報の取得.
            Dim size As FVIL.Ipl.IplImageSize = FVIL.Ipl.IplImageConverter.ToIplImageSize(hsrc)

            ' -) 確認.(任意)
            Console.WriteLine("{0,-20}: {1}", "width", size.width)
            Console.WriteLine("{0,-20}: {1}", "height", size.height)
            Console.WriteLine("{0,-20}: {1}", "depth", CType(size.depth, IPL_DEPTH))
            Console.WriteLine("{0,-20}: {1}", "channels", size.channels)

            ' 3) 解放.
            api.fnFIE_free_object(hsrc)
        End Sub
    End Class
End Namespace

Exceptions

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

See Also