Commit 4997a6bf authored by Tomasz Gorochowik's avatar Tomasz Gorochowik

V4L2: Add V4L2_PIX_FMT_Y10 (10 bit grey) support

parent 1e9e2aa9
...@@ -496,7 +496,8 @@ bool CvCaptureCAM_V4L::autosetup_capture_mode_v4l2() ...@@ -496,7 +496,8 @@ bool CvCaptureCAM_V4L::autosetup_capture_mode_v4l2()
V4L2_PIX_FMT_JPEG, V4L2_PIX_FMT_JPEG,
#endif #endif
V4L2_PIX_FMT_Y16, V4L2_PIX_FMT_Y16,
V4L2_PIX_FMT_GREY V4L2_PIX_FMT_Y10,
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++) {
...@@ -543,6 +544,7 @@ bool CvCaptureCAM_V4L::convertableToRgb() const ...@@ -543,6 +544,7 @@ bool CvCaptureCAM_V4L::convertableToRgb() const
case V4L2_PIX_FMT_SGBRG8: case V4L2_PIX_FMT_SGBRG8:
case V4L2_PIX_FMT_RGB24: case V4L2_PIX_FMT_RGB24:
case V4L2_PIX_FMT_Y16: case V4L2_PIX_FMT_Y16:
case V4L2_PIX_FMT_Y10:
case V4L2_PIX_FMT_GREY: case V4L2_PIX_FMT_GREY:
case V4L2_PIX_FMT_BGR24: case V4L2_PIX_FMT_BGR24:
return true; return true;
...@@ -577,6 +579,7 @@ void CvCaptureCAM_V4L::v4l2_create_frame() ...@@ -577,6 +579,7 @@ void CvCaptureCAM_V4L::v4l2_create_frame()
size.height = size.height * 3 / 2; // "1.5" channels size.height = size.height * 3 / 2; // "1.5" channels
break; break;
case V4L2_PIX_FMT_Y16: case V4L2_PIX_FMT_Y16:
case V4L2_PIX_FMT_Y10:
depth = IPL_DEPTH_16U; depth = IPL_DEPTH_16U;
/* fallthru */ /* fallthru */
case V4L2_PIX_FMT_GREY: case V4L2_PIX_FMT_GREY:
...@@ -1451,6 +1454,13 @@ void CvCaptureCAM_V4L::convertToRgb(const Buffer &currentBuffer) ...@@ -1451,6 +1454,13 @@ void CvCaptureCAM_V4L::convertToRgb(const Buffer &currentBuffer)
cv::cvtColor(temp, destination, COLOR_GRAY2BGR); cv::cvtColor(temp, destination, COLOR_GRAY2BGR);
return; return;
} }
case V4L2_PIX_FMT_Y10:
{
cv::Mat temp(imageSize, CV_8UC1, buffers[MAX_V4L_BUFFERS].start);
cv::Mat(imageSize, CV_16UC1, currentBuffer.start).convertTo(temp, CV_8U, 1.0 / 4);
cv::cvtColor(temp, destination, COLOR_GRAY2BGR);
return;
}
case V4L2_PIX_FMT_GREY: case V4L2_PIX_FMT_GREY:
cv::cvtColor(cv::Mat(imageSize, CV_8UC1, currentBuffer.start), destination, COLOR_GRAY2BGR); cv::cvtColor(cv::Mat(imageSize, CV_8UC1, currentBuffer.start), destination, COLOR_GRAY2BGR);
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment