指定された画像領域から縦・横線を検出し交点を抽出します。
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_aligned_corner_extraction( FHANDLE fim, BOX_T roi_horz, BOX_T roi_vert, double delta_angle, int filter_size, ref DLINE_T line_horz_out, ref DLINE_T line_vert_out, ref DPNT_T pnt_out ) |
Visual Basic |
---|
Public Shared Function fnFIE_aligned_corner_extraction ( fim As FHANDLE, roi_horz As BOX_T, roi_vert As BOX_T, delta_angle As Double, filter_size As Integer, ByRef line_horz_out As DLINE_T, ByRef line_vert_out As DLINE_T, ByRef pnt_out As DPNT_T ) As Integer |
Parameters
- fim
- Type: fvalgcli..::..FHANDLE
入力画像 [UC8 x1ch]
- roi_horz
- Type: fvalgcli..::..BOX_T
横線を検出する画像領域。
- roi_vert
- Type: fvalgcli..::..BOX_T
縦線を検出する画像領域。
- delta_angle
- Type: System..::..Double
横線と縦線の間の角度(radian)。縦線の角度=横線の角度+delta_angle
- filter_size
- Type: System..::..Int32
エッジ抽出フィルタのサイズ。[範囲:3以上の奇数、推奨値:11以上]
- line_horz_out
- Type: fvalgcli..::..DLINE_T%
抽出された横線。
- line_vert_out
- Type: fvalgcli..::..DLINE_T%
抽出された縦線。
- pnt_out
- Type: fvalgcli..::..DPNT_T%
抽出された交点。
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_NOMEMORY | メモリ不足エラー |
F_ERR_INVALID_PARAM | パラメータ不正 |
F_ERR_INVALID_IMAGE | 不正な画像が渡された |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Examples
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using System.Reflection; using fvalgcli; namespace TC { public partial class FIE { [FvPluginExecute] public void fnFIE_aligned_corner_extraction() { int status = (int)f_err.F_ERR_NONE; FHANDLE hImage = IntPtr.Zero; try { string filepath = TestImageDir + "/testdata/aligned_corner_extraction.png"; status = api.fnFIE_load_img_file(filepath, ref hImage, f_color_img_type.F_COLOR_IMG_TYPE_UC8); if (status != (int)f_err.F_ERR_NONE) throw new FvException(status, string.Format("fnFIE_load_img_file = {0}", (f_err)status)); BOX_T roi_horz = BOX_T.init(222, 140, 619, 190); BOX_T roi_vert = BOX_T.init(182, 169, 238, 461); double delta_angle = 90 * System.Math.PI / 180; int filter_size = 11; DLINE_T line_horz_out = new DLINE_T(); DLINE_T line_vert_out = new DLINE_T(); DPNT_T pnt_out = new DPNT_T(); status = api.fnFIE_aligned_corner_extraction(hImage, roi_horz, roi_vert, delta_angle, filter_size, ref line_horz_out, ref line_vert_out, ref pnt_out); if (status != (int)f_err.F_ERR_NONE) throw new FvException(status, string.Format("fnFIE_aligned_corner_extraction = {0}", (f_err)status)); // 結果を出力する. Console.WriteLine(MethodBase.GetCurrentMethod().Name); Console.WriteLine("line_horz_out={0},{1},{2}", line_horz_out.a, line_horz_out.b, line_horz_out.c); Console.WriteLine("line_vert_out={0},{1},{2}", line_vert_out.a, line_vert_out.b, line_vert_out.c); Console.WriteLine("pnt_out={0},{1}", pnt_out.x, pnt_out.y); } finally { hImage.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports System.Reflection Imports fvalgcli Public Partial Class FIE <FvPluginExecute> _ Public Sub fnFIE_aligned_corner_extraction() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim hImage As FHANDLE = IntPtr.Zero Try Dim filepath As String = TestImageDir & "/testdata/aligned_corner_extraction.png" status = api.fnFIE_load_img_file(filepath, hImage, f_color_img_type.F_COLOR_IMG_TYPE_UC8) If status <> CInt(f_err.F_ERR_NONE) Then Throw New FvException(status, String.Format("fnFIE_load_img_file = {0}", CType(status, f_err))) End If Dim roi_horz As BOX_T = BOX_T.init(222, 140, 619, 190) Dim roi_vert As BOX_T = BOX_T.init(182, 169, 238, 461) Dim delta_angle As Double = 90 * System.Math.PI / 180 Dim filter_size As Integer = 11 Dim line_horz_out As New DLINE_T() Dim line_vert_out As New DLINE_T() Dim pnt_out As New DPNT_T() status = api.fnFIE_aligned_corner_extraction(hImage, roi_horz, roi_vert, delta_angle, filter_size, line_horz_out, _ line_vert_out, pnt_out) If status <> CInt(f_err.F_ERR_NONE) Then Throw New FvException(status, String.Format("fnFIE_aligned_corner_extraction = {0}", CType(status, f_err))) End If ' 結果を出力する. Console.WriteLine(MethodBase.GetCurrentMethod().Name) Console.WriteLine("line_horz_out={0},{1},{2}", line_horz_out.a, line_horz_out.b, line_horz_out.c) Console.WriteLine("line_vert_out={0},{1},{2}", line_vert_out.a, line_vert_out.b, line_vert_out.c) Console.WriteLine("pnt_out={0},{1}", pnt_out.x, pnt_out.y) Finally hImage.Dispose() End Try End Sub End Class |
出力結果:
fnFIE_aligned_corner_extraction line_horz_out=-0.0553293779731365,0.998468156694597,-144.702044306811 line_vert_out=-0.998468156694597,-0.0553293779731364,221.802553043967 pnt_out=213.456512185028,156.752580741738