예제 #1
0
 protected override void StopAcquisition()
 {
     if (!GenieNanoDll.StopAcquisition(_cameraPtr))
     {
         throw new KickermatException($"Dalsa Camera {_name}: Failed to stop acquisition");
     }
 }
예제 #2
0
        private void FrameArrived(int bufferIndex, IntPtr frameAddress)
        {
            // Debayering
            var bayerMat = new Mat(Height, Width, MatType.CV_8U, frameAddress);
            var bgrMat   = bayerMat.CvtColor(ColorConversionCodes.BayerBG2BGR);

            bayerMat.Dispose();
            GenieNanoDll.ReleaseBuffer(_cameraPtr, bufferIndex);

            Push(new MatFrame(bgrMat));
        }
예제 #3
0
        private void ApplyOptions()
        {
            if (PeripheralState != PeripheralState.Ready)
            {
                return;
            }

            if (!GenieNanoDll.SetFeatureValue(_cameraPtr, "autoBrightnessTarget",
                                              _options.Value.Brightness))
            {
                throw new KickermatException("Could not apply options to camera");
            }
        }
예제 #4
0
        private void CreateCamera()
        {
            try
            {
                var roi = new RegionOfInterest(XMin, YMin, Width, Height);
                _cameraPtr = GenieNanoDll.CreateCamera(
                    _options.Value.CameraName,
                    roi,
                    _frameArrived,
                    _cameraConnected,
                    _cameraDisconnected);
            }
            catch (DllNotFoundException)
            {
                _logger.LogError(
                    "Failed to initialize GenieNanoCamera: The Camera SDK is not installed");
                PeripheralState = PeripheralState.Error;
                return;
            }

            if (_cameraPtr.Equals(IntPtr.Zero))
            {
                _logger.LogError(
                    "Failed to initialize GenieNanoCamera: Camera was not found on the network");
                PeripheralState = PeripheralState.NotConnected;
                return;
            }

            PeripheralState = PeripheralState.Ready;
            try
            {
                ApplyOptions();
            }
            catch (KickermatException ex)
            {
                _logger.LogError(ex.Message);
            }
        }