From 1358c0ae66d4d63d1c27d1c9e06a49184d69fc33 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Thu, 23 Jan 2020 08:59:01 +0300 Subject: [PATCH] Made automated triggering for ARAVIS cameras optional. --- modules/videoio/include/opencv2/videoio.hpp | 10 ++++++++++ modules/videoio/src/cap_aravis.cpp | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/videoio/include/opencv2/videoio.hpp b/modules/videoio/include/opencv2/videoio.hpp index 5dd10fd268..d16a4cdd47 100644 --- a/modules/videoio/include/opencv2/videoio.hpp +++ b/modules/videoio/include/opencv2/videoio.hpp @@ -483,6 +483,16 @@ enum { CAP_PROP_XI_DOWNSAMPLING = 400, //!< Chan //! @} XIMEA +/** @name XIMEA Camera API +* @{ +*/ + +//! Properties of cameras available through ARAVIS backend +enum { CAP_PROP_ARAVIS_AUTOTRIGGER = 600 //!< Automatically trigger frame capture if camera is configured with software trigger +}; + +//! @} ARAVIS + /** @name AVFoundation framework for iOS OS X Lion will have the same API @{ diff --git a/modules/videoio/src/cap_aravis.cpp b/modules/videoio/src/cap_aravis.cpp index e1f00b4a03..c43389d53d 100644 --- a/modules/videoio/src/cap_aravis.cpp +++ b/modules/videoio/src/cap_aravis.cpp @@ -149,6 +149,7 @@ protected: bool autoGain; double targetGrey; // Target grey value (mid grey)) bool softwareTriggered; // Flag if the camera is software triggered + bool allowAutoTrigger; // Flag that user allowed to trigger software triggered cameras automatically gint64 *pixelFormats; guint pixelFormatsCnt; @@ -190,6 +191,7 @@ CvCaptureCAM_Aravis::CvCaptureCAM_Aravis() exposureCompensation = 0; targetGrey = 0; frameID = prevFrameID = 0; + allowAutoTrigger = false; num_buffers = 10; frame = NULL; @@ -292,7 +294,7 @@ bool CvCaptureCAM_Aravis::grabFrame() ArvBuffer *arv_buffer = NULL; int max_tries = 10; int tries = 0; - if (softwareTriggered) { + if (softwareTriggered && allowAutoTrigger) { arv_camera_software_trigger (camera); } for(; tries < max_tries; tries ++) { @@ -499,6 +501,12 @@ double CvCaptureCAM_Aravis::getProperty( int property_id ) const return out; } break; + + case CAP_PROP_ARAVIS_AUTOTRIGGER: + { + return allowAutoTrigger ? 1. : 0.; + } + break; } return -1.0; } @@ -583,6 +591,11 @@ bool CvCaptureCAM_Aravis::setProperty( int property_id, double value ) } break; + case CAP_PROP_ARAVIS_AUTOTRIGGER: + { + allowAutoTrigger = (bool) value; + } + break; default: return false;