WIL説明書(.NET)  3.1.0
FGA ライブラリを使用した例

この例では、FGA ライブラリを使用しています。
fnFGA プレフィックスの関数が FGA ライブラリの関数です。 これらの関数は fvalgcli.fga 配下に集約されています。

FGA インストーラは、WIL 本体のインストーラとは分離していますので、別途インストールする必要があります。
また、FGA ライブラリを使用するには "fvalgcli for FGA" を参照設定に追加する必要があります。


コード例:

1 Partial Public Class TestClass
2  ''' <summary>
3  ''' FGA ライブラリを使用した例.
4  ''' </summary>
5  Public Sub Test3()
6  Dim status As f_err
7  Dim src As FVIL.Data.CFviImage = Nothing
8  Dim dst As FVIL.Data.CFviImage = Nothing
9  Dim hfga_src As FHANDLE = IntPtr.Zero
10  Dim hfga_dst1 As FHANDLE = IntPtr.Zero
11  Dim hfga_dst2 As FHANDLE = IntPtr.Zero
12  Dim type As Int32
13  Dim channels As Int32
14  Dim width As Int32
15  Dim height As Int32
16 
17  If fga.fnFGA_is_setuped() = False Then
18  Return
19  End If
20 
21  Try
22  '' ==================================================
23  '' 入力.
24  src = New FVIL.Data.CFviImage("Data/key_UC8_M.png")
25 
26  type = api.fnFIE_img_get_type(src.GetFIE())
27  channels = api.fnFIE_img_get_channels(src.GetFIE())
28  width = api.fnFIE_img_get_width(src.GetFIE())
29  height = api.fnFIE_img_get_height(src.GetFIE())
30 
31  '' 生成.
32  hfga_src = fga.fnFGA_img_root_alloc(type, channels, width, height)
33 
34  '' コピー.(FIE → FGA)
35  fga.fnFGA_img_copy(src.GetFIE(), hfga_src)
36 
37  '' ==================================================
38  '' 処理.
39  type = fga.fnFGA_img_get_type(hfga_src)
40  channels = fga.fnFGA_img_get_channels(hfga_src)
41  width = fga.fnFGA_img_get_width(hfga_src)
42  height = fga.fnFGA_img_get_height(hfga_src)
43 
44  '' 生成.
45  hfga_dst1 = fga.fnFGA_img_root_alloc(type, channels, width, height)
46  hfga_dst2 = fga.fnFGA_img_root_alloc(type, channels, width, height)
47 
48  '' 平均化.
49  status = fga.fnFGA_average(hfga_src, hfga_dst1, f_border_mode.F_BORDER_CONTINUOUS, 0.0)
50  If status <> f_err.F_ERR_NONE Then
51  Console.WriteLine("fnFGA_average failed.({0})", status)
52  Throw New FvException(status)
53  End If
54 
55  '' ソーベル.
56  status = fga.fnFGA_sobel(hfga_dst1, hfga_dst2, f_sobel_mode.F_SOBEL_XY_MODE, f_border_mode.F_BORDER_CONTINUOUS, 0.0)
57  If status <> f_err.F_ERR_NONE Then
58  Console.WriteLine("fnFGA_sobel failed.({0})", status)
59  Throw New FvException(status)
60  End If
61 
62  '' ==================================================
63  '' 出力.
64  type = fga.fnFGA_img_get_type(hfga_dst2)
65  channels = fga.fnFGA_img_get_channels(hfga_dst2)
66  width = fga.fnFGA_img_get_width(hfga_dst2)
67  height = fga.fnFGA_img_get_height(hfga_dst2)
68 
69  '' 生成.
70  Dim hfie_dst As FHANDLE = api.fnFIE_img_root_alloc(type, channels, width, height)
71 
72  '' コピー.(FGA → FIE)
73  fga.fnFGA_img_copy(hfga_dst2, hfie_dst)
74 
75  '' ファイル保存.
76  dst = New FVIL.Data.CFviImage(hfie_dst, False)
77  dst.Save("Result/Result3.png")
78  Finally
79  '' 解放.
80  If src IsNot Nothing Then src.Dispose()
81  If dst IsNot Nothing Then dst.Dispose()
82  hfga_src.Dispose()
83  hfga_dst1.Dispose()
84  hfga_dst2.Dispose()
85  End Try
86  End Sub
87 
88  ''' <summary>
89  ''' エントリポイントの例.
90  ''' </summary>
91  Public Sub main()
92  '' 初期化.
93  Dim status As Int32 = fga.fnFGA_setup()
94 
95  If status = f_err.F_ERR_NONE Then
96  Test3()
97  End If
98 
99  '' 解放.
100  fga.fnFGA_teardown()
101  End Sub
102 
103 End Class

※注)
FGA ライブラリの初期化は暗黙的には行われませんので、 上記のようにアプリケーションのエントリポイント等で初期化関数を呼び出す必要があります。


Documentation copyright © 2008 FAST Corporation. [B-001864]
Generated on 2024年10月10日(木) 10時07分53秒 for WIL説明書(.NET) by doxygen 1.8.11