計測ライン(円弧)上の濃度投影による濃度プロファイルの作成

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

Syntax

C#
public static int fnFIE_edge1d_projection_arc(
	FHANDLE hsrc,
	F_ARC arc,
	int prj_width,
	DOUBLE_PTR pprj,
	int prj_len,
	F_ARRAY_INDEX_PTR valid_reg,
	int vreg_len,
	ref int prj_num
)
Visual Basic
Public Shared Function fnFIE_edge1d_projection_arc ( 
	hsrc As FHANDLE,
	arc As F_ARC,
	prj_width As Integer,
	pprj As DOUBLE_PTR,
	prj_len As Integer,
	valid_reg As F_ARRAY_INDEX_PTR,
	vreg_len As Integer,
	ByRef prj_num As Integer
) As Integer

Parameters

hsrc
Type: fvalgcli..::..FHANDLE
入力画像(type:uc8,s16,us16,double / ch:1)
arc
Type: fvalgcli..::..F_ARC
計測ライン(円弧)
  • x 中心x座標
  • y 中心y座標
  • radius 半径:0 < radius
  • start_angle 開始角:[0,2π]
  • sweep_angle 円弧の角度
    • 時計回り 正
    • 反時計回り 負
prj_width
Type: System..::..Int32
濃度投影片幅(0以上、単位:画素)
pprj
Type: fvalgcli..::..DOUBLE_PTR
濃度プロファイル配列
prj_len
Type: System..::..Int32
濃度プロファイル配列の長さ
valid_reg
Type: fvalgcli..::..F_ARRAY_INDEX_PTR
濃度プロファイルの有効領域配列
  • index 要素番号:濃度プロファイル配列の原点からのオフセット量
  • size 長さ :有効領域の長さ
vreg_len
Type: System..::..Int32
濃度プロファイルの有効領域配列の長さ
prj_num
Type: System..::..Int32%
濃度プロファイル配列の有効領域個数

Return Value

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

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_IMAGE不正な画像が渡された
F_ERR_INVALID_PARAM不正なパラメータが渡された
F_ERR_NO_LICENCEライセンスエラー、または未初期化エラー

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

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

namespace TC
{
    public partial class FIE
    {
        [FvPluginExecute]
        public void fnFIE_edge1d_projection_arc()
        {
            string filepath = TestImageDir + "/testdata/image_file_8bpp.bmp";

            int status = (int)f_err.F_ERR_NONE;
            FHANDLE hImage = FHANDLE.Zero;
            DOUBLE_PTR pprj = DOUBLE_PTR.Zero;
            F_ARRAY_INDEX_PTR valid_reg = F_ARRAY_INDEX_PTR.Zero;

            try
            {
                api.fnFIE_load_bmp(filepath, ref hImage, f_color_img_type.F_COLOR_IMG_TYPE_UC8);

                int prj_width = 5;
                int prj_len = 0;
                int vreg_len = 0;
                int length = 0;
                int prj_num = 0;

                F_ARC arc = new F_ARC();
                arc.x = 200;
                arc.y = 200;
                arc.radius = 100;
                arc.start_angle = 0;
                arc.sweep_angle = Math.PI * 2;

                // 計測ラインの長さを計算.
                api.fnFIE_edge1d_calc_projection_arc_length(arc, ref length);
                prj_len = (int)(length + 0.5);
                vreg_len = prj_len;
                valid_reg = F_ARRAY_INDEX_PTR.alloc(vreg_len);

                pprj = DOUBLE_PTR.alloc(prj_len);

                status = fvalgcli.api.fnFIE_edge1d_projection_arc(hImage, arc, prj_width, pprj, prj_len, valid_reg, vreg_len, ref prj_num);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_edge1d_projection_arc: エラーが発生しました。({0})", (f_err)status);
                Console.WriteLine("fnFIE_edge1d_projection_arc");
            }
            finally
            {
                hImage.Dispose();
                pprj.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Imports fvalgcli

Public Partial Class FIE
    <FvPluginExecute> _
    Public Sub fnFIE_edge1d_projection_arc()
        Dim filepath As String = TestImageDir & "/testdata/image_file_8bpp.bmp"

        Dim status As Integer = CInt(f_err.F_ERR_NONE)
        Dim hImage As FHANDLE = FHANDLE.Zero
        Dim pprj As DOUBLE_PTR = DOUBLE_PTR.Zero
        Dim valid_reg As F_ARRAY_INDEX_PTR = F_ARRAY_INDEX_PTR.Zero

        Try
            api.fnFIE_load_bmp(filepath, hImage, f_color_img_type.F_COLOR_IMG_TYPE_UC8)

            Dim prj_width As Integer = 5
            Dim prj_len As Integer = 0
            Dim vreg_len As Integer = 0
            Dim length As Integer = 0
            Dim prj_num As Integer = 0

            Dim arc As New F_ARC()
            arc.x = 200
            arc.y = 200
            arc.radius = 100
            arc.start_angle = 0
            arc.sweep_angle = Math.PI * 2

            ' 計測ラインの長さを計算.
            api.fnFIE_edge1d_calc_projection_arc_length(arc, length)
            prj_len = CInt(Math.Truncate(length + 0.5))
            vreg_len = prj_len
            valid_reg = F_ARRAY_INDEX_PTR.alloc(vreg_len)

            pprj = DOUBLE_PTR.alloc(prj_len)

            status = fvalgcli.api.fnFIE_edge1d_projection_arc(hImage, arc, prj_width, pprj, prj_len, valid_reg, _
                vreg_len, prj_num)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_edge1d_projection_arc: エラーが発生しました。({0})", CType(status, f_err))
            Console.WriteLine("fnFIE_edge1d_projection_arc")
        Finally
            hImage.Dispose()
            pprj.Dispose()
        End Try
    End Sub
End Class

See Also