2値画像からの点データ取得
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_img_get_points_bin(
FHANDLE hsrc,
int color,
int max_pnt_num,
PNT_T_PTR pnts,
ref int pnt_num
) |
Visual Basic |
---|
Public Shared Function fnFIE_img_get_points_bin (
hsrc As FHANDLE,
color As Integer,
max_pnt_num As Integer,
pnts As PNT_T_PTR,
ByRef pnt_num As Integer
) As Integer |
Parameters
- hsrc
- Type: fvalgcli..::..FHANDLE
入力画像( type:bin / ch:1 )
- color
- Type: System..::..Int32
対象エリア色
- max_pnt_num
- Type: System..::..Int32
点データの最大数
- pnts
- Type: fvalgcli..::..PNT_T_PTR
点データ格納バッファ( sizeof(PNT_T) * max_pnt_num byte 必要 )
- pnt_num
- Type: System..::..Int32%
取得された点数(0以上)
Return Value
Type:
Int32
以下のエラーコードを返します。
エラーコード:f_err | 内容 |
---|
F_ERR_NONE | 正常終了 |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが渡された |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された
- pnts または pnt_num が IntPtr.Zero
- max_pnt_num が0以下
- color が0または1ではない
|
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Examples
C# | Copy |
---|
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;
namespace TC
{
public partial class FIE
{
[FvPluginExecute]
public void fnFIE_img_get_points_bin()
{
int status = (int)f_err.F_ERR_NONE;
FHANDLE himg = FHANDLE.Zero;
DOUBLE_PTR val = DOUBLE_PTR.Zero;
PNT_T_PTR pnts = PNT_T_PTR.Zero;
DPNT_T point;
int pnts_num = 0;
int type = (int)f_imgtype.F_IMG_BIN;
int channels = 1;
int width = 96;
int height = 96;
int num = 20;
try
{
himg = api.fnFIE_img_root_alloc(type, channels, width, height);
api.fnFIE_img_clear(himg, 0);
val = DOUBLE_PTR.alloc(channels);
for(int ch=0 ; ch<channels ; ch++)
val[ch] = 1;
for (int i = 32; i < 32 + num; i++)
{
point.x =i;
point.y =i;
api.fnFIE_draw_point(himg, val, point);
}
int channels_check = api.fnFIE_img_get_channels(himg);
int type_check = api.fnFIE_img_get_type(himg);
pnts = PNT_T_PTR.alloc(num);
status = api.fnFIE_img_get_points_bin(himg, 1, num, pnts, ref pnts_num);
Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status);
Assert.IsTrue(pnts_num == num, "取得点数:期待値と一致しません.");
for (int index = 0; index < pnts_num; index++)
{
Assert.IsTrue(pnts[index].x == 32 + index, "取得値:期待値と一致しません.");
Assert.IsTrue(pnts[index].y == 32 + index, "取得値:期待値と一致しません.");
}
}
finally
{
himg.Dispose();
val.Dispose();
pnts.Dispose();
}
}
}
} |
Visual Basic | Copy |
---|
Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli
Public Partial Class FIE
<FvPluginExecute> _
Public Sub fnFIE_img_get_points_bin()
Dim status As Integer = CInt(f_err.F_ERR_NONE)
Dim himg As FHANDLE = FHANDLE.Zero
Dim val As DOUBLE_PTR = DOUBLE_PTR.Zero
Dim pnts As PNT_T_PTR = PNT_T_PTR.Zero
Dim point As DPNT_T
Dim pnts_num As Integer = 0
Dim type As Integer = CInt(f_imgtype.F_IMG_BIN)
Dim channels As Integer = 1
Dim width As Integer = 96
Dim height As Integer = 96
Dim num As Integer = 20
Try
himg = api.fnFIE_img_root_alloc(type, channels, width, height)
api.fnFIE_img_clear(himg, 0)
val = DOUBLE_PTR.alloc(channels)
For ch As Integer = 0 To channels - 1
val(ch) = 1
Next
For i As Integer = 32 To 32 + (num - 1)
point.x = i
point.y = i
api.fnFIE_draw_point(himg, val, point)
Next
Dim channels_check As Integer = api.fnFIE_img_get_channels(himg)
Dim type_check As Integer = api.fnFIE_img_get_type(himg)
pnts = PNT_T_PTR.alloc(num)
status = api.fnFIE_img_get_points_bin(himg, 1, num, pnts, pnts_num)
Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err))
Assert.IsTrue(pnts_num = num, "取得点数:期待値と一致しません.")
For index As Integer = 0 To pnts_num - 1
Assert.IsTrue(pnts(index).x = 32 + index, "取得値:期待値と一致しません.")
Assert.IsTrue(pnts(index).y = 32 + index, "取得値:期待値と一致しません.")
Next
Finally
himg.Dispose()
val.Dispose()
pnts.Dispose()
End Try
End Sub
End Class |
See Also