mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Added support for V4L2_PIX_FMT_Y16
This commit is contained in:
parent
32df09c275
commit
a4a6ee34bf
@ -466,12 +466,16 @@ static int autosetup_capture_mode_v4l2(CvCaptureCAM_V4L* capture) {
|
|||||||
V4L2_PIX_FMT_SN9C10X,
|
V4L2_PIX_FMT_SN9C10X,
|
||||||
V4L2_PIX_FMT_SBGGR8,
|
V4L2_PIX_FMT_SBGGR8,
|
||||||
V4L2_PIX_FMT_SGBRG8,
|
V4L2_PIX_FMT_SGBRG8,
|
||||||
V4L2_PIX_FMT_RGB24
|
V4L2_PIX_FMT_RGB24,
|
||||||
|
V4L2_PIX_FMT_Y16
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < sizeof(try_order) / sizeof(__u32); i++) {
|
for (size_t i = 0; i < sizeof(try_order) / sizeof(__u32); i++) {
|
||||||
capture->palette = try_order[i];
|
capture->palette = try_order[i];
|
||||||
if (try_palette_v4l2(capture)) {
|
if (try_palette_v4l2(capture)) {
|
||||||
|
if (capture->palette == V4L2_PIX_FMT_Y16) {
|
||||||
|
capture->convert_rgb = false;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -558,6 +562,7 @@ static int v4l2_num_channels(__u32 palette) {
|
|||||||
case V4L2_PIX_FMT_YVU420:
|
case V4L2_PIX_FMT_YVU420:
|
||||||
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:
|
||||||
return 1;
|
return 1;
|
||||||
case V4L2_PIX_FMT_YUYV:
|
case V4L2_PIX_FMT_YUYV:
|
||||||
case V4L2_PIX_FMT_UYVY:
|
case V4L2_PIX_FMT_UYVY:
|
||||||
@ -589,8 +594,14 @@ static void v4l2_create_frame(CvCaptureCAM_V4L *capture) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set up Image data */
|
/* Set up Image data */
|
||||||
cvInitImageHeader(&capture->frame, size, IPL_DEPTH_8U, channels);
|
switch(capture->palette) {
|
||||||
|
case V4L2_PIX_FMT_Y16:
|
||||||
|
cvInitImageHeader(&capture->frame, size, IPL_DEPTH_16U, channels);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cvInitImageHeader(&capture->frame, size, IPL_DEPTH_8U, channels);
|
||||||
|
|
||||||
|
}
|
||||||
/* Allocate space for pixelformat we convert to.
|
/* Allocate space for pixelformat we convert to.
|
||||||
* If we do not convert frame is just points to the buffer
|
* If we do not convert frame is just points to the buffer
|
||||||
*/
|
*/
|
||||||
@ -1546,6 +1557,11 @@ static IplImage* icvRetrieveFrameCAM_V4L( CvCaptureCAM_V4L* capture, int) {
|
|||||||
(unsigned char*)capture->buffers[(capture->bufferIndex+1) % capture->req.count].start,
|
(unsigned char*)capture->buffers[(capture->bufferIndex+1) % capture->req.count].start,
|
||||||
(unsigned char*)capture->frame.imageData);
|
(unsigned char*)capture->frame.imageData);
|
||||||
break;
|
break;
|
||||||
|
case V4L2_PIX_FMT_Y16:
|
||||||
|
memcpy((char *)capture->frame.imageData,
|
||||||
|
(char *)capture->buffers[capture->bufferIndex].start,
|
||||||
|
capture->frame.imageSize);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(&capture->frame);
|
return(&capture->frame);
|
||||||
|
Loading…
Reference in New Issue
Block a user