画像処理の実行

Namespace: FVIL.Measure
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public override void Execute()
Visual Basic
Public Overrides Sub Execute

Remarks

処理対象画像の処理ウィンドウで指定された範囲に対して処理を実行します。

処理に失敗した場合は例外を発行します。
例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。

エラーコード:

ErrorCode メンバ内容
51FVIL.ErrorCode.LICENSE_ERROR ライセンスキーが見つからない為、実行できません。 または、FVIL._SetUp.InitVisionLibrary が実行されていません。
1FVIL.ErrorCode.FAILED_TO_ALLOCATEメモリ確保に失敗しました。
12FVIL.ErrorCode.INVALID_OBJECT指定された画像オブジェクトが無効です。
81FVIL.ErrorCode.HAVE_NOT_IMAGE画像オブジェクトが設定されていません。
18FVIL.ErrorCode.INVALID_CHANNEL処理対象チャネル指標が不正です。
91FVIL.ErrorCode.INVALID_SRC_IMAGETYPE入力画像の画像種別が不正です。
97FVIL.ErrorCode.INVALID_SRC_CHANNEL入力画像のチャネル数が不正です。

Examples


処理時間:
    0.396 msec : FVIL.Measure.CFviProjection.Execute.X
    0.757 msec : FVIL.Measure.CFviProjection.Execute.Y


ソースコード:
C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace User.SampleCode
{
    public partial class Measure
    {
        /// <summary>
        /// 濃度投影
        /// </summary>
        [FvPluginExecute]
        public void Projection1()
        {
            FVIL.Data.CFviImage src = new FVIL.Data.CFviImage(Defs.TestImageDir + "/key_UC8_M.png");
            FVIL.CFviTimeCounter watch = new FVIL.CFviTimeCounter();
            double msec = 0;
            Dictionary<string, double> times = new Dictionary<string, double>();

            #region 画像統計量.
            {
                FVIL.Measure.CFviProjectionResult result_x = new FVIL.Measure.CFviProjectionResult();
                FVIL.Measure.CFviProjectionResult result_y = new FVIL.Measure.CFviProjectionResult();
                FVIL.Measure.CFviProjection parser = new FVIL.Measure.CFviProjection(src, 0, FVIL.Measure.Direction.X, result_x);

                // X 方向.
                watch.Start();
                parser.Direction = FVIL.Measure.Direction.X;
                parser.Result = result_x;
                parser.Execute();
                msec = watch.Stop();
                times["FVIL.Measure.CFviProjection.Execute.X"] = msec;

                // Y 方向.
                parser.Direction = FVIL.Measure.Direction.Y;
                parser.Result = result_y;
                parser.Execute();
                msec = watch.Stop();
                times["FVIL.Measure.CFviProjection.Execute.Y"] = msec;

                // 出力(X 方向)
                Console.WriteLine(
                    "{0,-5},{1,5},{2,9},{3,9},{4,9},{5,9},{6,9},{7,9}",
                    "No.", "Count", "Sum", "Mean", "Min", "Max", "Sigma", "Var");
                for (int i = 0; i < result_x.Count; i++)
                {
                    FVIL.Statistics stat = result_x[i];
                    Console.WriteLine(
                        "[{0:000}] {1,5:0},{2,9:0},{3,9:0.000},{4,9:0.000},{5,9:0.000},{6,9:0.000},{7,9:0.000}",
                        i, stat.Count, stat.Sum, stat.Mean, stat.Min, stat.Max, stat.Sigma, stat.Variance);
                }

                // 出力(Y 方向)
                Console.WriteLine(
                    "{0,-5},{1,5},{2,9},{3,9},{4,9},{5,9},{6,9},{7,9}",
                    "No.", "Count", "Sum", "Mean", "Min", "Max", "Sigma", "Var");
                for (int i = 0; i < result_y.Count; i++)
                {
                    FVIL.Statistics stat = result_y[i];
                    Console.WriteLine(
                        "[{0:000}] {1,5:0},{2,9:0},{3,9:0.000},{4,9:0.000},{5,9:0.000},{6,9:0.000},{7,9:0.000}",
                        i, stat.Count, stat.Sum, stat.Mean, stat.Min, stat.Max, stat.Sigma, stat.Variance);
                }
            }
            #endregion

            Console.WriteLine("");
            foreach (KeyValuePair<string, double> item in times)
            {
                Console.WriteLine("{0,9:0.000} msec : {1}", item.Value, item.Key);
            }
        }
    }
}


Visual Basic Copy imageCopy
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Namespace SampleCode
    Partial Public Class Measure
        ''' <summary>
        ''' 濃度投影
        ''' </summary>
        <FvPluginExecute()> _
        Public Sub Projection1()
            Dim src As New FVIL.Data.CFviImage(Defs.TestImageDir + "/key_UC8_M.png")
            Dim watch As New FVIL.CFviTimeCounter()
            Dim msec As Double = 0
            Dim times As New Dictionary(Of String, Double)()

            '#Region "画像統計量."
            If True Then
                Dim result_x As New FVIL.Measure.CFviProjectionResult()
                Dim result_y As New FVIL.Measure.CFviProjectionResult()
                Dim parser As New FVIL.Measure.CFviProjection(src, 0, FVIL.Measure.Direction.X, result_x)

                ' X 方向.
                watch.Start()
                parser.Direction = FVIL.Measure.Direction.X
                parser.Result = result_x
                parser.Execute()
                msec = watch.[Stop]()
                times("FVIL.Measure.CFviProjection.Execute.X") = msec

                ' Y 方向.
                parser.Direction = FVIL.Measure.Direction.Y
                parser.Result = result_y
                parser.Execute()
                msec = watch.[Stop]()
                times("FVIL.Measure.CFviProjection.Execute.Y") = msec

                ' 出力(X 方向)
                Console.WriteLine( _
                 "{0,-5},{1,5},{2,9},{3,9},{4,9},{5,9},{6,9},{7,9}", _
                 "No.", "Count", "Sum", "Mean", "Min", "Max", "Sigma", "Var")
                For i As Integer = 0 To result_x.Count - 1
                    Dim stat As FVIL.Statistics = result_x(i)
                    Console.WriteLine( _
                     "[{0:000}] {1,5:0},{2,9:0},{3,9:0.000},{4,9:0.000},{5,9:0.000},{6,9:0.000},{7,9:0.000}", _
                     i, stat.Count, stat.Sum, stat.Mean, stat.Min, stat.Max, stat.Sigma, stat.Variance)
                Next

                ' 出力(Y 方向)
                Console.WriteLine( _
                 "{0,-5},{1,5},{2,9},{3,9},{4,9},{5,9},{6,9},{7,9}", _
                 "No.", "Count", "Sum", "Mean", "Min", "Max", "Sigma", "Var")
                For i As Integer = 0 To result_y.Count - 1
                    Dim stat As FVIL.Statistics = result_y(i)
                    Console.WriteLine( _
                     "[{0:000}] {1,5:0},{2,9:0},{3,9:0.000},{4,9:0.000},{5,9:0.000},{6,9:0.000},{7,9:0.000}", _
                     i, stat.Count, stat.Sum, stat.Mean, stat.Min, stat.Max, stat.Sigma, stat.Variance)
                Next
            End If
            '#End Region

            Console.WriteLine("")
            For Each item As KeyValuePair(Of String, Double) In times
                Console.WriteLine("{0,9:0.000} msec : {1}", item.Value, item.Key)
            Next
        End Sub
    End Class
End Namespace

Exceptions

ExceptionCondition
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also