示例#1
0
    private void ThreadFunctions()
    {
        lock (LockThread)
        {
            ImageRecognitionOptimized.ConvertPixelArrayToBynarMatrix(SpritePixels,
                                                                     ContrastValue,
                                                                     GammaCorrectionValue,
                                                                     MedianGroupPixel,
                                                                     BynarizationThreshold);

            EdgeCalculation.CalcualteBorders(ImageRecognitionOptimized.GetMatrix(),
                                             ImageRecognitionOptimized.GetWidth(),
                                             ImageRecognitionOptimized.GetHeight());

            if (RecognizePlateCode)
            {
                LocalizePlate.InitializePlateLocalizationParameters(EdgeCalculation.GetContour(),
                                                                    ImageRecognitionOptimized.GetMatrix(),
                                                                    DimensionOfPlateCharX_Min_Max,
                                                                    DimensionOfPlateCharY_Min_Max);
                LocalizePlate.LocalizePlateString();

                if (ApplyPlateCodeSlantCorrection)
                {
                    LocalizePlate.SlantCorrection(SlantThreshold);
                }

                #region DRAWING_FUNCTIONS

                LocalizePlate.DrawContour();
                LocalizePlate.DrawArrangedPossiblePlate();

                #endregion

                if (ExtractPlateString)
                {
                    LocalizePlate.CalculateStringAccuracy();
                }
            }

            SpritePixels = ImageRecognitionOptimized.ConvertBynariMatrixToPixelArray();

            finished = true;
        }
    }