Made automated triggering for ARAVIS cameras optional.

This commit is contained in:
Alexander Smorkalov 2020-01-23 08:59:01 +03:00
parent 194304bbe4
commit 1358c0ae66
2 changed files with 24 additions and 1 deletions

View File

@ -483,6 +483,16 @@ enum { CAP_PROP_XI_DOWNSAMPLING = 400, //!< Chan
//! @} XIMEA //! @} 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 /** @name AVFoundation framework for iOS
OS X Lion will have the same API OS X Lion will have the same API
@{ @{

View File

@ -149,6 +149,7 @@ protected:
bool autoGain; bool autoGain;
double targetGrey; // Target grey value (mid grey)) double targetGrey; // Target grey value (mid grey))
bool softwareTriggered; // Flag if the camera is software triggered bool softwareTriggered; // Flag if the camera is software triggered
bool allowAutoTrigger; // Flag that user allowed to trigger software triggered cameras automatically
gint64 *pixelFormats; gint64 *pixelFormats;
guint pixelFormatsCnt; guint pixelFormatsCnt;
@ -190,6 +191,7 @@ CvCaptureCAM_Aravis::CvCaptureCAM_Aravis()
exposureCompensation = 0; exposureCompensation = 0;
targetGrey = 0; targetGrey = 0;
frameID = prevFrameID = 0; frameID = prevFrameID = 0;
allowAutoTrigger = false;
num_buffers = 10; num_buffers = 10;
frame = NULL; frame = NULL;
@ -292,7 +294,7 @@ bool CvCaptureCAM_Aravis::grabFrame()
ArvBuffer *arv_buffer = NULL; ArvBuffer *arv_buffer = NULL;
int max_tries = 10; int max_tries = 10;
int tries = 0; int tries = 0;
if (softwareTriggered) { if (softwareTriggered && allowAutoTrigger) {
arv_camera_software_trigger (camera); arv_camera_software_trigger (camera);
} }
for(; tries < max_tries; tries ++) { for(; tries < max_tries; tries ++) {
@ -499,6 +501,12 @@ double CvCaptureCAM_Aravis::getProperty( int property_id ) const
return out; return out;
} }
break; break;
case CAP_PROP_ARAVIS_AUTOTRIGGER:
{
return allowAutoTrigger ? 1. : 0.;
}
break;
} }
return -1.0; return -1.0;
} }
@ -583,6 +591,11 @@ bool CvCaptureCAM_Aravis::setProperty( int property_id, double value )
} }
break; break;
case CAP_PROP_ARAVIS_AUTOTRIGGER:
{
allowAutoTrigger = (bool) value;
}
break;
default: default:
return false; return false;