Пример #1
0
 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
 {
     if (requestCode == 0 && resultCode == Result.Ok)
     {
         ImageCaptured?.Invoke(this, file);
     }
 }
Пример #2
0
 private void _watcher_Created(object sender, FileSystemEventArgs e)
 {
     Task.Run(() =>
     {
         Thread.Sleep(500);
         ImageCaptured?.Invoke();
         Slack.Instance.PostImage("security", File.ReadAllBytes(e.FullPath), e.Name);
     });
 }
Пример #3
0
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            Bitmap bitmap = (Bitmap)data.Extras.Get("data");

            ImageCaptured?.Invoke(this, new ImageCapturedEventArgs {
                Image = bitmap
            });
        }
Пример #4
0
 private void OnImageCaptured(ImageCaptured e)
 {
     lock (AllRegions) {
         foreach (var region in AllRegions)
         {
             region.Scan(e.Image);
         }
     }
 }
Пример #5
0
        /// <summary>
        /// Процедура вызывается постоянно и отвечает за обработку кадров
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="arg"></param>
        private void ProcessFrame(object sender, EventArgs arg)
        {
            DateTime DTTest = DateTime.Now; //Время сейчас

            if (KernelOfGabor != null)      //Если ядро для преобразования Габбора заданно
            /////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            {
                if ((DateTime.Now - LastFrame).TotalMilliseconds >= 100)                                         // ОГРАНИЧЕНИЕ НА ЧАСТОТУ - поставленно принудительно, чтобы частота не выползада в 30 фпс и всё не висло
                {
                    persec++;                                                                                    //Счётчик ФПСа
                    LastFrame = DateTime.Now;                                                                    //Время захвата
                    Image <Bgr, float> image = _capture.QueryFrame().Convert <Bgr, float>().PyrDown().PyrDown(); //Захватываем, уменьшая изображение в 4 раза по каждой стороне
                    imageBox4.Image = image.Clone();                                                             //Отобразим на экране


                    //Сделаем сdёртку с ядром
                    Point _center = new Point(KernelOfGabor.Rows / 2 + 1, KernelOfGabor.Cols / 2 + 1);
                    ConvolutionKernelF _kernel;
                    _kernel = new ConvolutionKernelF(KernelOfGabor, _center);
                    Image <Bgr, float> _conv = image.Convolution(_kernel);

                    //Прибавим счётчик
                    CurrentCapturePosition++;
                    if (CurrentCapturePosition == LengthOfCapture) //Если заполнили массив - печещёлкиваем счётчик
                    {
                        CurrentCapturePosition = 0;                //Перещёлкнем счётчик на ноль
                        IsStackFull            = true;             //Объявим о начале работы
                        started   = true;
                        this.Text = "In Work";
                    }
                    //Загрузим изображения в массивы
                    if (Ic[CurrentCapturePosition] == null)
                    {
                        Ic[CurrentCapturePosition]       = new ImageCaptured(_conv);
                        Irealpic[CurrentCapturePosition] = new ImageCaptured(image);
                    }
                    else
                    {
                        lock (Ic[CurrentCapturePosition].locker)
                        {
                            Ic[CurrentCapturePosition].I = _conv.Clone();
                            lock (Irealpic[CurrentCapturePosition].locker)
                            {
                                Irealpic[CurrentCapturePosition].I = image.Clone();
                            }
                            Ic[CurrentCapturePosition].DT = DateTime.Now;
                        }
                    }
                    if ((started) && (!done))
                    {
                        done = true;
                    }
                }
            }
            label2.Text = (DateTime.Now - DTTest).TotalMilliseconds.ToString(); //Счётчик времени исполнения процедуры
        }
Пример #6
0
        private async void Timer_Tick(object sender, EventArgs e)
        {
            using (var screen = GetScreen(Screen.PrimaryScreen))
                foreach (var captureArea in _captureAreas.Where(cs => cs.IsEnabled))
                {
                    if (DateTime.Now - _lastTimes[captureArea] < captureArea.Interval)
                    {
                        continue;
                    }
                    _lastTimes[captureArea] = DateTime.Now;

                    using (var bmp = new Bitmap(captureArea.Size.Width, captureArea.Size.Height))
                    {
                        using (var gr = Graphics.FromImage(bmp))
                            gr.DrawImageUnscaled(screen, -captureArea.Point.X, -captureArea.Point.Y, captureArea.Size.Width, captureArea.Size.Height);

                        //bmp.Save(@"C:\_\10\06\2.jpg", ImageFormat.Jpeg);

                        var s = new IronTesseract().Read(bmp).Text;
                        if (!string.IsNullOrEmpty(s))
                        {
                            s.Equals(null);
                        }

                        using (var memory = new MemoryStream())
                        {
                            bmp.Save(memory, ImageFormat.Bmp);
                            memory.Position = 0;

                            var bmpDecoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(memory.AsRandomAccessStream());

                            var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();

                            var ocrResult = await _ocrEngine.RecognizeAsync(softwareBmp);

                            TextCaptured?.Invoke(captureArea, ocrResult.Lines.Select(ln => ln.Text).ToArray());

                            if (ImageCaptured != null)
                            {
                                memory.Position = 0;
                                var bitmapimage = new BitmapImage();
                                bitmapimage.BeginInit();
                                bitmapimage.StreamSource = memory;
                                bitmapimage.CacheOption  = BitmapCacheOption.OnLoad;
                                bitmapimage.EndInit();
                                ImageCaptured.Invoke(captureArea, bitmapimage);
                            }
                        }
                    }
                }
        }
Пример #7
0
        private void CaptureDone(Bitmap captured)
        {
            if (!capturing)
            {
                return;
            }

            lock (captureThreadLocker)
            {
                captured = RotateImage(captured);

                ImageCaptured?.Invoke(this, new CaptureEvent(captured));
            }
        }
        public void OnCaptureResult(CameraResult result)
        {
            UnlockFocus();

            if (result == CameraResult.Completed)
            {
                // Resize and compress the image
                var bmp = BitmapUtils.LoadAndResizeBitmap(this.File.Path, 600, 600);                 // TODO make dynamic

                var stream = new FileStream(this.File.Path, FileMode.Create);
                bmp.Compress(Bitmap.CompressFormat.Jpeg, 80, stream);
                stream.Close();

                ImageCaptured?.Invoke(this, new ImageCaptureEventArgs(this.File.Path));
            }
        }
        internal async void CaptureImage(int threshold, int smooth)
        {
            //capture new image
            SoftwareBitmap newImage = await Camera.cameraPreview.CaptureImage();

            if (newImage != null)
            {
                if (MainPage.oldImg == null)
                {
                    MainPage.oldImg = newImage;
                }

                var result = await Task.Factory.StartNew(() => MotionDetector.ComputeDifference(MainPage.oldImg, newImage, threshold, smooth));

                await MainPage.runOnUIThread(() =>
                                             MotionDataCollection.AddMotion(result.Difference));

                MainPage.oldImg = newImage;

                ImageCaptured?.Invoke(this, result);
            }
        }
Пример #10
0
 public ImageCapturePlugin()
 {
     Event           = new ImageCaptured();
     LastFrameUpdate = DateTime.Now;
 }
Пример #11
0
 public void SendImageCaptured(byte[] imageBytes) =>
 ImageCaptured?.Invoke(this, new ImageCapturedEventArgs(imageBytes));
Пример #12
0
 public void CaptureByteArray(byte[] data)
 {
     ImageCaptured?.Invoke(this, new ImageCaptureEventArgs(data));
 }
Пример #13
0
        void CompletionHandler(byte[] bytes)
        {
            var eventData = new ImageCapturedEventArgs(bytes);

            ImageCaptured?.Invoke(this, eventData);
        }
Пример #14
0
 /// <summary>
 /// Handle Image-Capture
 /// </summary>
 /// <param name="e"></param>
 public void OnImageCaptured(FaceWatcherEventArgs e)
 {
     ImageCaptured?.Invoke(this, e);
 }