複数チャネル画像へのアンパッキング関数

Namespace: fvalgcli
Assembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)

Syntax

C#
public static int fnFIE_unpacking_ch(
	FHANDLE hsrc,
	FHANDLE hdst
)
Visual Basic
Public Shared Function fnFIE_unpacking_ch ( 
	hsrc As FHANDLE,
	hdst As FHANDLE
) As Integer

Parameters

hsrc
Type: fvalgcli..::..FHANDLE
入力画像( type: uc8, s16, us16, double, float )
hdst
Type: fvalgcli..::..FHANDLE
出力画像( type: uc8, s16, us16, double, float )

Return Value

Type: Int32
以下のエラーコードを返します。

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_IMAGE不正な画像オブジェクト
F_ERR_NO_LICENCEライセンスエラー

Examples

C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;

using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        /// <summary>
        /// 複数チャネル画像へのアンパッキング関数
        /// </summary>
        [FvPluginExecute]
        public void fnFIE_unpacking_ch()
        {
            int status = (int)f_err.F_ERR_NONE;

            FHANDLE hSrc = FHANDLE.Zero;    // 処理対象画像.
            FHANDLE hDst = FHANDLE.Zero;    // 処理結果画像.
            FHANDLE saveimg = FHANDLE.Zero;

            try
            {
                // 処理対象画像のロード.
                api.fnFIE_load_bmp(TestImageDir + "/testdata/fpm_pattern_cross.bmp", ref hSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8);

                int src_width = api.fnFIE_img_get_width(hSrc);
                int src_height = api.fnFIE_img_get_height(hSrc);

                // 処理結果画像の確保.
                hDst = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 3, src_width/3, src_height);

                // 処理の実行.
                status = api.fnFIE_unpacking_ch(hSrc, hDst);

                // エラー判定.
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status);

                // 処理結果画像の保存.
                // RGB各成分を独立した濃淡画像として保存.
                {
                    IntPtr[] adrs = new IntPtr[1];

                    int type = (int)f_imgtype.F_IMG_UC8;
                    SIZE_T step = api.fnFIE_img_get_step(hDst);
                    int dst_width = api.fnFIE_img_get_width(hDst);
                    int dst_height = api.fnFIE_img_get_height(hDst);

                    for (int i = 0; i < 3; i++)
                    {
                        adrs[0] = api.fnFIE_img_get_ch_adrs(hDst, i);
                        saveimg = api.fnFIE_img_root_import_alloc(adrs, 1, type, step, dst_width, dst_height);
                        api.fnFIE_save_png(ResultDir + string.Format("/fnFIE_unpacking_ch-{0}.png", i), saveimg, -1);
                        api.fnFIE_free_object(saveimg);
                        saveimg = IntPtr.Zero;
                    }

                }
            }
            finally
            {
                // オブジェクトの開放.
                hSrc.Dispose();
                hDst.Dispose();
                saveimg.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
Imports System.Collections.Generic
Imports System.Text

Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' 複数チャネル画像へのアンパッキング関数
    ''' </summary>
    <FvPluginExecute> _
    Public Sub fnFIE_unpacking_ch()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        Dim hSrc As FHANDLE = FHANDLE.Zero
        ' 処理対象画像.
        Dim hDst As FHANDLE = FHANDLE.Zero
        ' 処理結果画像.
        Dim saveimg As FHANDLE = FHANDLE.Zero

        Try
            ' 処理対象画像のロード.
            api.fnFIE_load_bmp(TestImageDir & "/testdata/fpm_pattern_cross.bmp", hSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8)

            Dim src_width As Integer = api.fnFIE_img_get_width(hSrc)
            Dim src_height As Integer = api.fnFIE_img_get_height(hSrc)

            ' 処理結果画像の確保.
            hDst = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_UC8), 3, src_width \ 3, src_height)

            ' 処理の実行.
            status = api.fnFIE_unpacking_ch(hSrc, hDst)

            ' エラー判定.
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err))

            ' 処理結果画像の保存.
            ' RGB各成分を独立した濃淡画像として保存.
            If True Then
                Dim adrs As IntPtr() = New IntPtr(0) {}

                Dim type As Integer = CInt(f_imgtype.F_IMG_UC8)
                Dim [step] As SIZE_T = api.fnFIE_img_get_step(hDst)
                Dim dst_width As Integer = api.fnFIE_img_get_width(hDst)
                Dim dst_height As Integer = api.fnFIE_img_get_height(hDst)

                For i As Integer = 0 To 2
                    adrs(0) = api.fnFIE_img_get_ch_adrs(hDst, i)
                    saveimg = api.fnFIE_img_root_import_alloc(adrs, 1, type, [step], dst_width, dst_height)
                    api.fnFIE_save_png(ResultDir & String.Format("/fnFIE_unpacking_ch-{0}.png", i), saveimg, -1)
                    api.fnFIE_free_object(saveimg)
                    saveimg = IntPtr.Zero
                Next

            End If
        Finally
            ' オブジェクトの開放.
            hSrc.Dispose()
            hDst.Dispose()
            saveimg.Dispose()
        End Try
    End Sub
End Class

See Also