protected override void StopAcquisition() { if (!GenieNanoDll.StopAcquisition(_cameraPtr)) { throw new KickermatException($"Dalsa Camera {_name}: Failed to stop acquisition"); } }
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)); }
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"); } }
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); } }