Merge pull request #11847 from floe:gray8

pull/11871/head
Vadim Pisarevsky 7 years ago
commit 9a8a964b69
  1. 23
      modules/videoio/src/cap_v4l.cpp

@ -440,7 +440,8 @@ static int autosetup_capture_mode_v4l2(CvCaptureCAM_V4L* capture) {
V4L2_PIX_FMT_MJPEG, V4L2_PIX_FMT_MJPEG,
V4L2_PIX_FMT_JPEG, V4L2_PIX_FMT_JPEG,
#endif #endif
V4L2_PIX_FMT_Y16 V4L2_PIX_FMT_Y16,
V4L2_PIX_FMT_GREY
}; };
for (size_t i = 0; i < sizeof(try_order) / sizeof(__u32); i++) { for (size_t i = 0; i < sizeof(try_order) / sizeof(__u32); i++) {
@ -533,6 +534,7 @@ static int v4l2_num_channels(__u32 palette) {
case V4L2_PIX_FMT_MJPEG: case V4L2_PIX_FMT_MJPEG:
case V4L2_PIX_FMT_JPEG: case V4L2_PIX_FMT_JPEG:
case V4L2_PIX_FMT_Y16: case V4L2_PIX_FMT_Y16:
case V4L2_PIX_FMT_GREY:
return 1; return 1;
case V4L2_PIX_FMT_YUYV: case V4L2_PIX_FMT_YUYV:
case V4L2_PIX_FMT_UYVY: case V4L2_PIX_FMT_UYVY:
@ -1091,6 +1093,13 @@ y16_to_rgb24 (int width, int height, unsigned char* src, unsigned char* dst)
cvtColor(gray8,Mat(height, width, CV_8UC3, dst),COLOR_GRAY2BGR); cvtColor(gray8,Mat(height, width, CV_8UC3, dst),COLOR_GRAY2BGR);
} }
static inline void
y8_to_rgb24 (int width, int height, unsigned char* src, unsigned char* dst)
{
Mat gray8(height, width, CV_8UC1, src);
cvtColor(gray8,Mat(height, width, CV_8UC3, dst),COLOR_GRAY2BGR);
}
#ifdef HAVE_JPEG #ifdef HAVE_JPEG
/* convert from mjpeg to rgb24 */ /* convert from mjpeg to rgb24 */
@ -1560,6 +1569,18 @@ static IplImage* icvRetrieveFrameCAM_V4L( CvCaptureCAM_V4L* capture, int) {
capture->frame.imageSize); capture->frame.imageSize);
} }
break; break;
case V4L2_PIX_FMT_GREY:
if(capture->convert_rgb){
y8_to_rgb24(capture->form.fmt.pix.width,
capture->form.fmt.pix.height,
(unsigned char*)capture->buffers[capture->bufferIndex].start,
(unsigned char*)capture->frame.imageData);
}else{
memcpy((char *)capture->frame.imageData,
(char *)capture->buffers[capture->bufferIndex].start,
capture->frame.imageSize);
}
break;
} }
if (capture->returnFrame) if (capture->returnFrame)

Loading…
Cancel
Save