Beispiel #1
0
        //   HashSet<PostUserActivity.Contracts.AnalyzeImageResultType> webCamErrors;
        private AnalyseResult WebCamAnalyse(ImageChangedEventArgs imgArgs)
        {
            var obj        = new AnalyseResult();
            var tempBitmap = (Bitmap)imgArgs.Img;

            var tempResult = Tevian_Analyser.AnalyseCamImage(tempBitmap);

            obj.Full   = tempBitmap;
            obj.Errors = tempResult.Errors;
            //костыль чтобы не падала
            if (tempResult.Errors == AnalyzeImageResultType.InnerException)
            {
                return(obj);
            }
            //рамко
            if (tempBitmap != null)
            {
                try
                {
                    //рисовать мы будем в другом месте...
                    //using (Graphics G = Graphics.FromImage(tempBitmap))
                    //{
                    if (tempResult.Faces.Length != 0)
                    {
                        FaceCoordinates = new Rectangle(tempResult.Faces[0].X, tempResult.Faces[0].Y, tempResult.Faces[0].Width, tempResult.Faces[0].Height);
                        //положить в кроп найденное лицо
                        //if (CheckImageDemenions(tempResult.ImageDimensions))
                        //{
                        //"Лицо сильно повернуто по одной из осей" отсутствует
                        obj.Cropped = CommonLib.ImageExtensions.CropImage(new Bitmap(tempBitmap), FaceCoordinates);
                        //}
                        //  G.DrawRectangle(new Pen(Color.Yellow), Rect);

                        return(obj);
                    }
                    else
                    {
                        //пустой ректангл, если не нашли лица(для логики отрисовки)
                        FaceCoordinates = new Rectangle();
                        return(obj);
                    }
                }
                //}
                catch (Exception ex)
                {
                    logger.Error(ex.Message);
                    logger.Error(ex.InnerException);
                }
            }
            return(obj);
            //return null;
        }
Beispiel #2
0
        private void bwImageAnalizer_DoWork(object sender, DoWorkEventArgs e)
        {
            var Args    = (BackGrndArgs)e.Argument;
            var imgArgs = Args.ImgArgs;
            var device  = Args.Device;

            logger.Debug("Пришел кадр на анализ с устройства " + device.ToString());

            saveImage(imgArgs);
            if (!string.IsNullOrEmpty(imgArgs.ImgPath))
            {
                logger.Info("file path: " + imgArgs.ImgPath);
            }
            AnalyseResult Result = null;

            switch (device)
            {
            case DeviceType.WebCam:
            {
                Result = WebCamAnalyse(imgArgs);
                break;
            }

            case DeviceType.Scanner:
            {
                Result = ScannerAnalyse(imgArgs);
                break;
            }

            case DeviceType.HDDrive:
            {
                Result = WebCamAnalyse(imgArgs);
                break;
            }

            default:
            {
                break;
            }
            }
            //после анализа изображение нам уже не нужно в памяти...
            logger.Debug("Получили результат:");
            List <Contracts.AnalyzeImageResultType> ResultList = FlagsToList(Result.Errors);

            foreach (var item in ResultList)
            {
                logger.Debug(item);
            }
            //Args.ImgArgs.Img.Dispose();
            if (Result.Errors != AnalyzeImageResultType.NoError)
            {
                if (device == DeviceType.Scanner)
                {
                    logger.Info("**********************Scan completed***********************");
                    AnalyzeImage(this, new PostUserActivity.Contracts.AnalyzeCompletedEventArgs(device, ResultList));
                    AnalyzeCompleted(this, new PostUserActivity.Contracts.AnalyzeCompletedEventArgs(device, ResultList));
                    return;
                }
                else
                {
                    if (!imgArgs.СamStopped)
                    {
                        AnalyzeImage(this, new PostUserActivity.Contracts.AnalyzeCompletedEventArgs(device, ResultList));
                        return;
                    }
                    else
                    {
                        logger.Info("**********************Cam Stoped***********************");
                        AnalyzeCompleted(this, new PostUserActivity.Contracts.AnalyzeCompletedEventArgs(device, ResultList));
                        return;
                    }
                }
            }
            else
            {
                AnalyzeCompleted(this, new PostUserActivity.Contracts.AnalyzeCompletedEventArgs(device, ResultList, (Image)Result.Full, (Image)Result.Cropped));
                logger.Info("**********************Face found***********************");
                return;
            }
        }