濃淡画像からの点データ列取得
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_img_get_points_gray( FHANDLE hsrc, double tlow, double thigh, int max_pnt_num, PNT_T_PTR pnts, ref int pnt_num ) |
Visual Basic |
---|
Public Shared Function fnFIE_img_get_points_gray ( hsrc As FHANDLE, tlow As Double, thigh As Double, max_pnt_num As Integer, pnts As PNT_T_PTR, ByRef pnt_num As Integer ) As Integer |
Parameters
- hsrc
- Type: fvalgcli..::..FHANDLE
入力画像( type:uc8,s16,us16,double / ch:1 )
- tlow
- Type: System..::..Double
2値化閾値の下限
- thigh
- Type: System..::..Double
2値化閾値の上限
- 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 | 不正なパラメータが渡された
|
F_ERR_NOMEMORY | メモリ不足エラー |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Examples
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { /// <summary> /// 濃淡画像からの点データ列取得. /// </summary> /// <remarks> /// 入力画像は type = uc8 / s16 / us16 / double のいずれかで、かつ 1ch であること. /// </remarks> [FvPluginExecute] public void fnFIE_img_get_points_gray() { int status = (int)f_err.F_ERR_NONE; FHANDLE himg = FHANDLE.Zero; // 入力画像. DOUBLE_PTR val1 = DOUBLE_PTR.Zero; // 描画点. DOUBLE_PTR val2 = DOUBLE_PTR.Zero; // 描画点. DPNT_T point; PNT_T_PTR pnts = PNT_T_PTR.Zero; // 点データ格納バッファ. int pnts_num = 0; int type = (int)f_imgtype.F_IMG_UC8; int channels = 1; int width = 96; int height = 96; int num = 20; double tlow = 100; // 閾値の下限. double thigh = 199; // 閾値の上限. try { // 画像の生成. himg = api.fnFIE_img_root_alloc(type, channels, width, height); api.fnFIE_img_clear(himg, 0.0); // テスト画像の描画. { val1 = DOUBLE_PTR.alloc(channels); val2 = DOUBLE_PTR.alloc(channels); for (int ch = 0; ch < channels; ch++) { val1[ch] = 100; val2[ch] = 200; } for (int i = 32; i < 32 + num; i++) { // 取得する点の描画. point.x = i; point.y = i; api.fnFIE_draw_point(himg, val1, point); // 取得しない点の描画. point.x = i + 1; point.y = i; api.fnFIE_draw_point(himg, val2, point); } } // 処理実行. pnts = PNT_T_PTR.alloc(num); status = api.fnFIE_img_get_points_gray(himg, tlow, thigh, 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(); pnts.Dispose(); for (int ch = 0; ch < channels; ch++) { val1.Dispose(); val2.Dispose(); } } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE ''' <summary> ''' 濃淡画像からの点データ列取得. ''' </summary> ''' <remarks> ''' 入力画像は type = uc8 / s16 / us16 / double のいずれかで、かつ 1ch であること. ''' </remarks> <FvPluginExecute> _ Public Sub fnFIE_img_get_points_gray() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim himg As FHANDLE = FHANDLE.Zero ' 入力画像. Dim val1 As DOUBLE_PTR = DOUBLE_PTR.Zero ' 描画点. Dim val2 As DOUBLE_PTR = DOUBLE_PTR.Zero ' 描画点. Dim point As DPNT_T Dim pnts As PNT_T_PTR = PNT_T_PTR.Zero ' 点データ格納バッファ. Dim pnts_num As Integer = 0 Dim type As Integer = CInt(f_imgtype.F_IMG_UC8) Dim channels As Integer = 1 Dim width As Integer = 96 Dim height As Integer = 96 Dim num As Integer = 20 Dim tlow As Double = 100 ' 閾値の下限. Dim thigh As Double = 199 ' 閾値の上限. Try ' 画像の生成. himg = api.fnFIE_img_root_alloc(type, channels, width, height) api.fnFIE_img_clear(himg, 0.0) ' テスト画像の描画. If True Then val1 = DOUBLE_PTR.alloc(channels) val2 = DOUBLE_PTR.alloc(channels) For ch As Integer = 0 To channels - 1 val1(ch) = 100 val2(ch) = 200 Next For i As Integer = 32 To 32 + (num - 1) ' 取得する点の描画. point.x = i point.y = i api.fnFIE_draw_point(himg, val1, point) ' 取得しない点の描画. point.x = i + 1 point.y = i api.fnFIE_draw_point(himg, val2, point) Next End If ' 処理実行. pnts = PNT_T_PTR.alloc(num) status = api.fnFIE_img_get_points_gray(himg, tlow, thigh, 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() pnts.Dispose() For ch As Integer = 0 To channels - 1 val1.Dispose() val2.Dispose() Next End Try End Sub End Class |