PALETTE_SBGGR8,
PALETTE_SN9C10X,
PALETTE_MJPEG,
- PALETTE_SGBRG
+ PALETTE_SGBRG,
+ PALETTE_RGB24
};
typedef struct CvCaptureCAM_V4L
{
capture->palette = PALETTE_SGBRG;
}
+ else if (try_palette_v4l2(capture, V4L2_PIX_FMT_RGB24) == 0)
+ {
+ capture->palette = PALETTE_RGB24;
+ }
else
{
fprintf(stderr, "VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV\n");
}
}
+static void
+rgb24_to_rgb24 (int width, int height, unsigned char *src, unsigned char *dst)
+{
+ const int size = width * height;
+ for(int i = 0; i < size; ++i, src += 3, dst += 3)
+ {
+ *(dst + 0) = *(src + 2);
+ *(dst + 1) = *(src + 1);
+ *(dst + 2) = *(src + 0);
+ }
+}
+
#define CLAMP(x) ((x)<0?0:((x)>255)?255:(x))
typedef struct {
(unsigned char*)capture->buffers[(capture->bufferIndex+1) % capture->req.count].start,
(unsigned char*)capture->frame.imageData);
break;
+ case PALETTE_RGB24:
+ rgb24_to_rgb24(capture->form.fmt.pix.width,
+ capture->form.fmt.pix.height,
+ (unsigned char*)capture->buffers[(capture->bufferIndex+1) % capture->req.count].start,
+ (unsigned char*)capture->frame.imageData);
+ break;
}
}
#endif /* HAVE_CAMV4L2 */