diff --git a/modules/videoio/src/cap_aravis.cpp b/modules/videoio/src/cap_aravis.cpp index b5c71a86a3..48b9b2600e 100644 --- a/modules/videoio/src/cap_aravis.cpp +++ b/modules/videoio/src/cap_aravis.cpp @@ -79,12 +79,14 @@ // video/x-raw, fourcc:'Y800' -> 8bit, 1 channel // video/x-raw, fourcc:'Y12 ' -> 12bit, 1 channel // video/x-raw, fourcc:'Y16 ' -> 16bit, 1 channel +// video/x-raw, fourcc:'GRBG' -> 8bit, 1 channel // #define MODE_GREY CV_FOURCC_MACRO('G','R','E','Y') #define MODE_Y800 CV_FOURCC_MACRO('Y','8','0','0') #define MODE_Y12 CV_FOURCC_MACRO('Y','1','2',' ') #define MODE_Y16 CV_FOURCC_MACRO('Y','1','6',' ') +#define MODE_GRBG CV_FOURCC_MACRO('G','R','B','G') #define CLIP(a,b,c) (cv::max(cv::min((a),(c)),(b))) @@ -315,6 +317,7 @@ IplImage* CvCaptureCAM_Aravis::retrieveFrame(int) int depth = 0, channels = 0; switch(pixelFormat) { case ARV_PIXEL_FORMAT_MONO_8: + case ARV_PIXEL_FORMAT_BAYER_GR_8: depth = IPL_DEPTH_8U; channels = 1; break; @@ -475,6 +478,8 @@ double CvCaptureCAM_Aravis::getProperty( int property_id ) const return MODE_Y12; case ARV_PIXEL_FORMAT_MONO_16: return MODE_Y16; + case ARV_PIXEL_FORMAT_BAYER_GR_8: + return MODE_GRBG; } } break; @@ -547,6 +552,10 @@ bool CvCaptureCAM_Aravis::setProperty( int property_id, double value ) newFormat = ARV_PIXEL_FORMAT_MONO_16; targetGrey = 32768; break; + case MODE_GRBG: + newFormat = ARV_PIXEL_FORMAT_BAYER_GR_8; + targetGrey = 128; + break; } if(newFormat != pixelFormat) { stopCapture();