|
|
|
@ -262,6 +262,10 @@ make & enjoy! |
|
|
|
|
#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifndef V4L2_PIX_FMT_Y12 |
|
|
|
|
#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* Defaults - If your board can do better, set it here. Set for the most common type inputs. */ |
|
|
|
|
#define DEFAULT_V4L_WIDTH 640 |
|
|
|
|
#define DEFAULT_V4L_HEIGHT 480 |
|
|
|
@ -561,6 +565,7 @@ bool CvCaptureCAM_V4L::autosetup_capture_mode_v4l2() |
|
|
|
|
V4L2_PIX_FMT_JPEG, |
|
|
|
|
#endif |
|
|
|
|
V4L2_PIX_FMT_Y16, |
|
|
|
|
V4L2_PIX_FMT_Y12, |
|
|
|
|
V4L2_PIX_FMT_Y10, |
|
|
|
|
V4L2_PIX_FMT_GREY, |
|
|
|
|
}; |
|
|
|
@ -654,6 +659,7 @@ void CvCaptureCAM_V4L::v4l2_create_frame() |
|
|
|
|
size.height = size.height * 3 / 2; // "1.5" channels
|
|
|
|
|
break; |
|
|
|
|
case V4L2_PIX_FMT_Y16: |
|
|
|
|
case V4L2_PIX_FMT_Y12: |
|
|
|
|
case V4L2_PIX_FMT_Y10: |
|
|
|
|
depth = IPL_DEPTH_16U; |
|
|
|
|
/* fallthru */ |
|
|
|
@ -1578,6 +1584,13 @@ void CvCaptureCAM_V4L::convertToRgb(const Buffer ¤tBuffer) |
|
|
|
|
cv::cvtColor(temp, destination, COLOR_GRAY2BGR); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
case V4L2_PIX_FMT_Y12: |
|
|
|
|
{ |
|
|
|
|
cv::Mat temp(imageSize, CV_8UC1, buffers[MAX_V4L_BUFFERS].start); |
|
|
|
|
cv::Mat(imageSize, CV_16UC1, currentBuffer.start).convertTo(temp, CV_8U, 1.0 / 16); |
|
|
|
|
cv::cvtColor(temp, destination, COLOR_GRAY2BGR); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
case V4L2_PIX_FMT_Y10: |
|
|
|
|
{ |
|
|
|
|
cv::Mat temp(imageSize, CV_8UC1, buffers[MAX_V4L_BUFFERS].start); |
|
|
|
|