REGION間AND演算

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

Syntax

C#
public static int fnFIE_region_and(
	FHANDLE hsrc1,
	FHANDLE hsrc2,
	ref FHANDLE hdst
)
Visual Basic
Public Shared Function fnFIE_region_and ( 
	hsrc1 As FHANDLE,
	hsrc2 As FHANDLE,
	ByRef hdst As FHANDLE
) As Integer

Parameters

hsrc1
Type: fvalgcli..::..FHANDLE
入力REGIONハンドル
hsrc2
Type: fvalgcli..::..FHANDLE
入力REGIONハンドル
hdst
Type: fvalgcli..::..FHANDLE%
出力REGIONハンドルのアドレス

Return Value

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

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_NOMEMORYメモリ不足エラー
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_NO_LICENCEライセンスエラー、または未初期化エラー

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        [FvPluginExecute]
        public void fnFIE_region_and()
        {
            // 2つの2値画像を読み込む.
            FHANDLE himage1 = FHANDLE.Zero;
            FHANDLE himage2 = FHANDLE.Zero;
            FHANDLE himaged = FHANDLE.Zero;
            FHANDLE hregion1 = FHANDLE.Zero;
            FHANDLE hregion2 = FHANDLE.Zero;
            FHANDLE hRegion = FHANDLE.Zero;
            FHANDLE hFill = FHANDLE.Zero;
            FHANDLE htemp = FHANDLE.Zero;

            try
            {
                api.fnFIE_load_img_file(TestImageDir + "/TC/SampleCode/blob_BIN.png", ref himage1, f_color_img_type.F_COLOR_IMG_TYPE_UC8);
                api.fnFIE_load_img_file(TestImageDir + "/TC/SampleCode/blob_BIN_2.png", ref himage2, f_color_img_type.F_COLOR_IMG_TYPE_UC8);

                Assert.IsTrue(himage1 != FHANDLE.Zero, "himage1 が異常です.");
                Assert.IsTrue(himage2 != FHANDLE.Zero, "himage2 が異常です.");

                int width = api.fnFIE_img_get_width(himage1);
                int height = api.fnFIE_img_get_height(himage1);
                int type = api.fnFIE_img_get_type(himage1);
                int channels = api.fnFIE_img_get_channels(himage1);
                himaged = api.fnFIE_img_root_alloc(type, channels, width, height);

                // --- 2値画像の演算.
                api.fnFIE_img_and(himage1, himage2, himaged);

                // 画像からリージョンを作成する.
                // --- オフセット.
                PNT_T offset = new PNT_T();
                offset.x = 0;
                offset.y = 0;
                // --- 作成.
                hregion1 = fnFIE_region_encode(himage1, offset);
                hregion2 = fnFIE_region_encode(himage2, offset);

                // --- リージョンの演算.
                api.fnFIE_region_and(hregion1, hregion2, ref hRegion);

                // リージョンの塗り潰し.
                fnFIE_region_fill(hRegion, ref hFill);

                // REGIONオブジェクトの連結性設定関数.
                fnFIE_region_set_connection(hRegion);

                // REGIONオブジェクトのランレングスを設定.
                fnFIE_region_set_runlength(hRegion);

                // REGION特徴量:面積.
                fnFIE_region_get_area(hRegion);

                // REGION特徴量:重心.
                fnFIE_region_get_center(hRegion);

                // REGION特徴量:外周距離.
                fnFIE_region_get_distance_to_boundary(hRegion);

                // REGION特徴量:等価楕円 .
                fnFIE_region_get_equivalent_ellipse(hRegion);

                // REGION特徴量:座標の最大最小位置.
                fnFIE_region_get_maxminpos(hRegion);

                // REGION特徴量:1次モーメント .
                fnFIE_region_get_moment1(hRegion);

                // REGION特徴量:2次モーメント.
                fnFIE_region_get_moment2(hRegion);

                // REGION特徴量:周囲長計測.
                fnFIE_region_get_perimeter(hRegion);

                // REGION特徴量:外接矩形面積.
                fnFIE_region_get_rect1_area(hRegion);

                // REGION特徴量:外接矩形縦横比.
                fnFIE_region_get_rect1_lratio(hRegion);

                // REGION特徴量:外接矩形面積比.
                fnFIE_region_get_rect1_sratio(hRegion);

                // REGION特徴量:外接長方形面積.
                fnFIE_region_get_rect2_area(hRegion);

                // REGION特徴量:外接長方形縦横比.
                fnFIE_region_get_rect2_lratio(hRegion);

                // REGION特徴量:外接長方形.
                fnFIE_region_get_rect2_size(hRegion);

                // REGION特徴量:外接長方形面積比.
                fnFIE_region_get_rect2_sratio(hRegion);

                // リージョンのラン配列のポインタを取得 .
                fnFIE_region_get_runlength(hRegion);

                // REGION特徴量:外接矩形サイズ取得(xdiff、ydiff).
                fnFIE_region_get_xydiff(hRegion);

                // REGION特徴量:座標の最大最小値.
                fnFIE_region_get_xyrange(hRegion);
            }
            finally
            {
                himage1.Dispose();
                himage2.Dispose();
                himaged.Dispose();
                hRegion.Dispose();
                hFill.Dispose();
                hregion1.Dispose();
                hregion2.Dispose();
                htemp.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    <FvPluginExecute> _
    Public Sub fnFIE_region_and()
        ' 2つの2値画像を読み込む.
        Dim himage1 As FHANDLE = FHANDLE.Zero
        Dim himage2 As FHANDLE = FHANDLE.Zero
        Dim himaged As FHANDLE = FHANDLE.Zero
        Dim hregion1 As FHANDLE = FHANDLE.Zero
        Dim hregion2 As FHANDLE = FHANDLE.Zero
        Dim hRegion As FHANDLE = FHANDLE.Zero
        Dim hFill As FHANDLE = FHANDLE.Zero
        Dim htemp As FHANDLE = FHANDLE.Zero

        Try
            api.fnFIE_load_img_file(TestImageDir & "/TC/SampleCode/blob_BIN.png", himage1, f_color_img_type.F_COLOR_IMG_TYPE_UC8)
            api.fnFIE_load_img_file(TestImageDir & "/TC/SampleCode/blob_BIN_2.png", himage2, f_color_img_type.F_COLOR_IMG_TYPE_UC8)

            Assert.IsTrue(himage1 <> FHANDLE.Zero, "himage1 が異常です.")
            Assert.IsTrue(himage2 <> FHANDLE.Zero, "himage2 が異常です.")

            Dim width As Integer = api.fnFIE_img_get_width(himage1)
            Dim height As Integer = api.fnFIE_img_get_height(himage1)
            Dim type As Integer = api.fnFIE_img_get_type(himage1)
            Dim channels As Integer = api.fnFIE_img_get_channels(himage1)
            himaged = api.fnFIE_img_root_alloc(type, channels, width, height)

            ' --- 2値画像の演算.
            api.fnFIE_img_and(himage1, himage2, himaged)

            ' 画像からリージョンを作成する.
            ' --- オフセット.
            Dim offset As New PNT_T()
            offset.x = 0
            offset.y = 0
            ' --- 作成.
            hregion1 = fnFIE_region_encode(himage1, offset)
            hregion2 = fnFIE_region_encode(himage2, offset)

            ' --- リージョンの演算.
            api.fnFIE_region_and(hregion1, hregion2, hRegion)

            ' リージョンの塗り潰し.
            fnFIE_region_fill(hRegion, hFill)

            ' REGIONオブジェクトの連結性設定関数.
            fnFIE_region_set_connection(hRegion)

            ' REGIONオブジェクトのランレングスを設定.
            fnFIE_region_set_runlength(hRegion)

            ' REGION特徴量:面積.
            fnFIE_region_get_area(hRegion)

            ' REGION特徴量:重心.
            fnFIE_region_get_center(hRegion)

            ' REGION特徴量:外周距離.
            fnFIE_region_get_distance_to_boundary(hRegion)

            ' REGION特徴量:等価楕円 .
            fnFIE_region_get_equivalent_ellipse(hRegion)

            ' REGION特徴量:座標の最大最小位置.
            fnFIE_region_get_maxminpos(hRegion)

            ' REGION特徴量:1次モーメント .
            fnFIE_region_get_moment1(hRegion)

            ' REGION特徴量:2次モーメント.
            fnFIE_region_get_moment2(hRegion)

            ' REGION特徴量:周囲長計測.
            fnFIE_region_get_perimeter(hRegion)

            ' REGION特徴量:外接矩形面積.
            fnFIE_region_get_rect1_area(hRegion)

            ' REGION特徴量:外接矩形縦横比.
            fnFIE_region_get_rect1_lratio(hRegion)

            ' REGION特徴量:外接矩形面積比.
            fnFIE_region_get_rect1_sratio(hRegion)

            ' REGION特徴量:外接長方形面積.
            fnFIE_region_get_rect2_area(hRegion)

            ' REGION特徴量:外接長方形縦横比.
            fnFIE_region_get_rect2_lratio(hRegion)

            ' REGION特徴量:外接長方形.
            fnFIE_region_get_rect2_size(hRegion)

            ' REGION特徴量:外接長方形面積比.
            fnFIE_region_get_rect2_sratio(hRegion)

            ' リージョンのラン配列のポインタを取得 .
            fnFIE_region_get_runlength(hRegion)

            ' REGION特徴量:外接矩形サイズ取得(xdiff、ydiff).
            fnFIE_region_get_xydiff(hRegion)

            ' REGION特徴量:座標の最大最小値.
            fnFIE_region_get_xyrange(hRegion)
        Finally
            himage1.Dispose()
            himage2.Dispose()
            himaged.Dispose()
            hRegion.Dispose()
            hFill.Dispose()
            hregion1.Dispose()
            hregion2.Dispose()
            htemp.Dispose()
        End Try
    End Sub
End Class

See Also