diff --git a/modules/highgui/include/opencv2/highgui/highgui_c.h b/modules/highgui/include/opencv2/highgui/highgui_c.h index 1a42e5804a..249eec2b61 100644 --- a/modules/highgui/include/opencv2/highgui/highgui_c.h +++ b/modules/highgui/include/opencv2/highgui/highgui_c.h @@ -420,8 +420,13 @@ enum CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION, // Properties of cameras available through GStreamer interface - CV_CAP_GSTREAMER_QUEUE_LENGTH = 200, // default is 1 - CV_CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast + CV_CAP_GSTREAMER_QUEUE_LENGTH = 200, // default is 1 + CV_CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast + CV_CAP_PROP_FRAMESTARTTRIGGERMODE = 301, // 0: For Freerun + // 1: For SyncIn1 + // 2: For SyncIn2 + // 3: For Fixedrate + // 4: For Software // Properties of cameras available through XIMEA SDK interface CV_CAP_PROP_XI_DOWNSAMPLING = 400, // Change image resolution by binning or skipping. diff --git a/modules/highgui/src/cap_pvapi.cpp b/modules/highgui/src/cap_pvapi.cpp index 6ed3aea840..69a4823f07 100644 --- a/modules/highgui/src/cap_pvapi.cpp +++ b/modules/highgui/src/cap_pvapi.cpp @@ -254,6 +254,11 @@ double CvCaptureCAM_PvAPI::getProperty( int property_id ) case CV_CAP_PROP_FRAME_HEIGHT: PvAttrUint32Get(Camera.Handle, "Height", &nTemp); return (double)nTemp; + case CV_CAP_PROP_MONOCROME: + if (monocrome) + return 1; + else + return 0; case CV_CAP_PROP_EXPOSURE: PvAttrUint32Get(Camera.Handle,"ExposureValue",&nTemp); return (double)nTemp; @@ -280,6 +285,21 @@ double CvCaptureCAM_PvAPI::getProperty( int property_id ) case CV_CAP_PROP_GAIN: PvAttrUint32Get(Camera.Handle, "GainValue", &nTemp); return (double)nTemp; + case CV_CAP_PROP_FRAMESTARTTRIGGERMODE: + char triggerMode[256]; + PvAttrEnumGet(Camera.Handle, "FrameStartTriggerMode", triggerMode, 256, NULL); + if (strcmp(triggerMode, "Freerun")==0) + return 0.0; + else if (strcmp(triggerMode, "SyncIn1")==0) + return 1.0; + else if (strcmp(triggerMode, "SyncIn2")==0) + return 2.0; + else if (strcmp(triggerMode, "FixedRate")==0) + return 3.0; + else if (strcmp(triggerMode, "Software")==0) + return 4.0; + else + return -1.0; } return -1.0; } @@ -368,6 +388,24 @@ bool CvCaptureCAM_PvAPI::setProperty( int property_id, double value ) return false; } break; + case CV_CAP_PROP_FRAMESTARTTRIGGERMODE: + tPvErr error; + if (value==0) + error = PvAttrEnumSet(Camera.Handle, "FrameStartTriggerMode", "Freerun"); + else if (value==1) + error = PvAttrEnumSet(Camera.Handle, "FrameStartTriggerMode", "SyncIn1"); + else if (value==2) + error = PvAttrEnumSet(Camera.Handle, "FrameStartTriggerMode", "SyncIn2"); + else if (value==3) + error = PvAttrEnumSet(Camera.Handle, "FrameStartTriggerMode", "FixedRate"); + else if (value==4) + error = PvAttrEnumSet(Camera.Handle, "FrameStartTriggerMode", "Software"); + else + error = ePvErrOutOfRange; + if(error==ePvErrSuccess) + break; + else + return false; default: return false; }