public ColourDetectionControl()
 {
     InitializeComponent();
     _colorDetector = new ColourDetector();
     _detectorInput = new ColourDetectorInput();
     _colorSettingsRepo = new ColourSettingsRepository();
 }
        /// <summary>
        /// sudo mono picamcv.con.exe -m=pantiltmultimode
        /// </summary>
        public MultimodePanTiltController(
            IPanTiltMechanism panTiltMech
            , CaptureConfig captureConfig
            , IScreen screen
            , IServerToCameraBus serverToCameraBus
            , params IOutputProcessor[] outputPipelines) : base(panTiltMech, captureConfig)
        {
            _screen            = screen;
            _serverToCameraBus = serverToCameraBus;
            _outputPipelines   = outputPipelines;

            _colourSettingsRepository = new ColourSettingsRepository();

            _faceTrackingController     = new FaceTrackingPanTiltController(panTiltMech, captureConfig);
            _camshiftTrackingController = new CamshiftPanTiltController(panTiltMech, captureConfig);
            _colourTrackingController   = new ColourTrackingPanTiltController(panTiltMech, captureConfig);

            _thresholdSelector = new ThresholdSelector();
            _thresholdSelector.ColourCheckTick += thresholdSelector_ColourCheckTick;

            _colourDetectorInput = new ColourDetectorInput();
            _colourDetectorInput.SetCapturedImage = true;
            var repoSettings = _colourSettingsRepository.Read();

            if (repoSettings != null)
            {
                _colourDetectorInput.Settings = repoSettings;
            }

            _faceTrackManager   = new FaceTrackStateManager(screen);
            _colourTrackManager = new ColourTrackStateManager(screen);
            _staticManager      = new StaticStateManager(screen);
            _autonomousManager  = new AutonomousTrackStateManager(this, screen);

            SoundService = new SoundService();


            screen.Clear();
            ChangeMode(ProcessingMode.Autonomous);

            _autonomousManager.IsFaceFound       = i => _faceTrackingController.Process(i).IsDetected;
            _autonomousManager.IsColourFullFrame = IsColourFullFrame;

            _faceTrackingController.ClassifierParams.MinSize = new Size(20, 20);
            _faceTrackingController.ClassifierParams.MaxSize = new Size(50, 50);

            screen.WriteLine(_faceTrackingController.ClassifierParams.ToString());

            InitController();

            ServoSettleTimeChanged += (s, e) =>
            {
                _faceTrackingController.ServoSettleTime   = ServoSettleTime;
                _colourTrackingController.ServoSettleTime = ServoSettleTime;
            };

            _colourDetector = new ColourDetector();
        }
        public ColourDetectionControl()
        {
            InitializeComponent();
            _colorDetector = new ColourDetector();
            _detectorInput = new ColourDetectorInput();
            _colorSettingsRepo = new ColourSettingsRepository();
            _thresholdSelector = new ThresholdSelector();

            _imageBoxSelector = new ImageBoxSelector();
        }
        public ColourDetectionControl()
        {
            InitializeComponent();
            _colorDetector     = new ColourDetector();
            _detectorInput     = new ColourDetectorInput();
            _colorSettingsRepo = new ColourSettingsRepository();
            _thresholdSelector = new ThresholdSelector();

            _imageBoxSelector = new ImageBoxSelector();
        }
Beispiel #5
0
        public CalibratingPanTiltController(IPanTiltMechanism panTiltMech, CalibrationReadingsRepository readingsRepo, IScreen screen)
            : base(panTiltMech)
        {
            _colourDetector = new ColourDetector();
            _readingsRepo   = readingsRepo;
            _screen         = screen;

            if (EnvironmentService.IsUnix)
            {
                _servoSettleTime = TimeSpan.FromMilliseconds(750);
            }
            else
            {
                _servoSettleTime = TimeSpan.FromMilliseconds(0);
            }
        }
Beispiel #6
0
        public ServoSorter(
            ICaptureGrab capture
            ,ConsoleOptions options) : base(capture)
        {
            _servoPosition = 70;

            Settings = options.ColourSettings;

            _debounceWatch = new Stopwatch();

            var deviceFactory = new Pca9685DeviceFactory();
            var device = deviceFactory.GetDevice(options.UseFakeDevice);
            SetLogLevel(device);
            
            _pwmControl = new ServoSortPwmControl(device);
            _pwmControl.Init();

            _detector = new ColourDetector();
        }
Beispiel #7
0
        public ServoSorter(
            ICaptureGrab capture
            , ConsoleOptions options) : base(capture)
        {
            _servoPosition = 70;

            Settings = options.ColourSettings;

            _debounceWatch = new Stopwatch();

            var deviceFactory = new Pca9685DeviceFactory();
            var device        = deviceFactory.GetDevice(options.UseFakeDevice);

            SetLogLevel(device);

            _pwmControl = new ServoSortPwmControl(device);
            _pwmControl.Init();

            _detector = new ColourDetector();
        }
        public override void ImageGrabbedHandler(object sender, EventArgs e)
        {
            using (var matCaptured = new Mat())
            {
                CameraCapture.Retrieve(matCaptured);
                var detector = new ColourDetector();
                var input    = new ColourDetectorInput
                {
                    Captured           = matCaptured
                    , Settings         = Settings
                    , SetCapturedImage = false
                };

                var result = detector.Process(input);

                if (result.IsDetected)
                {
                    Log.Info(result);
                }
            }
        }
Beispiel #9
0
        public override void ImageGrabbedHandler(object sender, EventArgs e)
        {
            using (var matCaptured = new Mat())
            {
                CameraCapture.Retrieve(matCaptured);
                var detector = new ColourDetector();
                var input = new ColourDetectorInput
                {
                    Captured = matCaptured
                   ,Settings= Settings
                   ,SetCapturedImage = false
                };

                var result = detector.Process(input);

                if (result.IsDetected)
                {
                    Log.Info(result);
                }
            }
        }
 public ColourDetectionControl()
 {
     InitializeComponent();
     _colorDetector = new ColourDetector();
     _detectorInput = new ColourDetectorInput();
 }
Beispiel #11
0
 public ColourTrackingPanTiltController(IPanTiltMechanism panTiltMech, CaptureConfig captureConfig)
     : base(panTiltMech, captureConfig)
 {
     _colourDetector = new ColourDetector();
 }