Merge pull request #15714 from neurodroid:patch-1
This commit is contained in:
commit
e037800e46
@ -485,6 +485,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
|
||||
@{
|
||||
|
||||
@ -148,6 +148,8 @@ protected:
|
||||
double exposureCompensation;
|
||||
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;
|
||||
@ -189,6 +191,7 @@ CvCaptureCAM_Aravis::CvCaptureCAM_Aravis()
|
||||
exposureCompensation = 0;
|
||||
targetGrey = 0;
|
||||
frameID = prevFrameID = 0;
|
||||
allowAutoTrigger = false;
|
||||
|
||||
num_buffers = 10;
|
||||
frame = NULL;
|
||||
@ -275,6 +278,7 @@ bool CvCaptureCAM_Aravis::open( int index )
|
||||
exposure = exposureAvailable ? arv_camera_get_exposure_time(camera) : 0;
|
||||
gain = gainAvailable ? arv_camera_get_gain(camera) : 0;
|
||||
fps = arv_camera_get_frame_rate(camera);
|
||||
softwareTriggered = (strcmp(arv_camera_get_trigger_source(camera), "Software") == 0);
|
||||
|
||||
return startCapture();
|
||||
}
|
||||
@ -290,6 +294,9 @@ bool CvCaptureCAM_Aravis::grabFrame()
|
||||
ArvBuffer *arv_buffer = NULL;
|
||||
int max_tries = 10;
|
||||
int tries = 0;
|
||||
if (softwareTriggered && allowAutoTrigger) {
|
||||
arv_camera_software_trigger (camera);
|
||||
}
|
||||
for(; tries < max_tries; tries ++) {
|
||||
arv_buffer = arv_stream_timeout_pop_buffer (stream, 200000);
|
||||
if (arv_buffer != NULL && arv_buffer_get_status (arv_buffer) != ARV_BUFFER_STATUS_SUCCESS) {
|
||||
@ -494,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;
|
||||
}
|
||||
@ -578,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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user