25 #include <fvutils/color/colorspaces.h>
30 namespace firevision {
36 colorspace_by_name(
const char *mode)
39 if (strcmp(mode,
"RGB") == 0) {
41 }
else if (strcmp(mode,
"YUV411_PACKED") == 0) {
43 }
else if (strcmp(mode,
"YUV411_PLANAR") == 0) {
45 }
else if (strcmp(mode,
"YUY2") == 0) {
47 }
else if (strcmp(mode,
"YVY2") == 0) {
49 }
else if (strcmp(mode,
"BGR") == 0) {
51 }
else if (strcmp(mode,
"YUV422_PACKED") == 0) {
53 }
else if (strcmp(mode,
"YUV444_PACKED") == 0) {
55 }
else if (strcmp(mode,
"YVU444_PACKED") == 0) {
57 }
else if (strcmp(mode,
"YUV422_PLANAR") == 0) {
59 }
else if (strcmp(mode,
"YUV422_PLANAR_QUARTER") == 0) {
60 return YUV422_PLANAR_QUARTER;
61 }
else if (strcmp(mode,
"GRAY8") == 0) {
63 }
else if (strcmp(mode,
"RGB_WITH_ALPHA") == 0) {
64 return RGB_WITH_ALPHA;
65 }
else if (strcmp(mode,
"BGR_WITH_ALPHA") == 0) {
66 return BGR_WITH_ALPHA;
67 }
else if (strcmp(mode,
"BAYER_MOSAIC_RGGB") == 0) {
68 return BAYER_MOSAIC_RGGB;
69 }
else if (strcmp(mode,
"BAYER_MOSAIC_GBRG") == 0) {
70 return BAYER_MOSAIC_GBRG;
71 }
else if (strcmp(mode,
"BAYER_MOSAIC_GRBG") == 0) {
72 return BAYER_MOSAIC_GRBG;
73 }
else if (strcmp(mode,
"BAYER_MOSAIC_BGGR") == 0) {
74 return BAYER_MOSAIC_BGGR;
75 }
else if (strcmp(mode,
"RAW16") == 0) {
77 }
else if (strcmp(mode,
"CARTESIAN_3D_FLOAT") == 0) {
78 return CARTESIAN_3D_FLOAT;
79 }
else if (strcmp(mode,
"CARTESIAN_3D_DOUBLE") == 0) {
80 return CARTESIAN_3D_DOUBLE;
81 }
else if (strcmp(mode,
"CARTESIAN_3D_FLOAT_RGB") == 0) {
82 return CARTESIAN_3D_FLOAT_RGB;
90 colorspace_to_string(colorspace_t colorspace)
96 return "YUV411_PACKED";
98 return "YUV411_PLANAR";
106 return "YUV422_PACKED";
108 return "YUV444_PACKED";
110 return "YVU444_PACKED";
112 return "YUV422_PLANAR";
113 case YUV422_PLANAR_QUARTER:
114 return "YUV422_PLANAR_QUARTER";
120 return "RGB_WITH_ALPHA";
122 return "BGR_WITH_ALPHA";
123 case BAYER_MOSAIC_RGGB:
124 return "BAYER_MOSAIC_RGGB";
125 case BAYER_MOSAIC_GBRG:
126 return "BAYER_MOSAIC_GBRG";
127 case BAYER_MOSAIC_GRBG:
128 return "BAYER_MOSAIC_GRBG";
129 case BAYER_MOSAIC_BGGR:
130 return "BAYER_MOSAIC_BGGR";
133 case CARTESIAN_3D_FLOAT:
134 return "CARTESIAN_3D_FLOAT";
135 case CARTESIAN_3D_DOUBLE:
136 return "CARTESIAN_3D_DOUBLE";
137 case CARTESIAN_3D_FLOAT_RGB:
138 return "CARTESIAN_3D_FLOAT_RGB";
146 malloc_buffer(colorspace_t colorspace,
unsigned int width,
unsigned int height)
148 return (
unsigned char *)malloc(colorspace_buffer_size(colorspace, width, height));
152 colorspace_buffer_size(colorspace_t cspace,
unsigned int width,
unsigned int height)
159 return (width * height * 3);
163 return (width * height * 4);
167 return (width * height * 3 / 2);
173 return (width * height * 2);
177 return (width * height * 2);
182 case BAYER_MOSAIC_RGGB:
183 case BAYER_MOSAIC_GBRG:
184 case BAYER_MOSAIC_GRBG:
185 case BAYER_MOSAIC_BGGR:
186 return (width * height);
188 case YUV422_PLANAR_QUARTER:
189 return (width * height) / 2;
191 case CARTESIAN_3D_FLOAT:
192 return (3 * width * height *
sizeof(
float));
194 case CARTESIAN_3D_DOUBLE:
195 return (3 * width * height *
sizeof(
double));
197 case CARTESIAN_3D_FLOAT_RGB:
198 return (4 * width * height *
sizeof(
float));