4 #include <linux/videodev2.h>
19 else if (str ==
"read")
21 else if (str ==
"userptr")
29 if ((str ==
"yuyv") || (str ==
"yuv"))
31 else if (str ==
"uyvy")
33 else if (str ==
"mjpeg")
35 else if (str ==
"h264")
37 else if (str ==
"yuvmono10")
39 else if (str ==
"rgb24")
41 else if (str ==
"grey")
43 else if (str ==
"yu12")
45 else if (str ==
"bgr24")
83 else if (str ==
"yuv422p")
96 return V4L2_PIX_FMT_YUYV;
98 return V4L2_PIX_FMT_UYVY;
100 return V4L2_PIX_FMT_MJPEG;
102 return V4L2_PIX_FMT_H264;
105 return V4L2_PIX_FMT_YUYV;
107 return V4L2_PIX_FMT_RGB24;
109 return V4L2_PIX_FMT_BGR24;
112 return V4L2_PIX_FMT_GREY;
114 return V4L2_PIX_FMT_YUV420;
121 const unsigned char &u,
122 const unsigned char &v,
127 const int y2 =
static_cast<int>(y);
128 const int u2 =
static_cast<int>(u - 128);
129 const int v2 =
static_cast<int>(v - 128);
138 int r2 = y2 + ((v2 * 37221) >> 15);
139 int g2 = y2 - (((u2 * 12975) + (v2 * 18949)) >> 15);
140 int b2 = y2 + ((u2 * 66883) >> 15);
154 for (i = 0, j = 0; i < (NumPixels << 1); i += 2, j += 1)
157 MONO[j] = (
unsigned char)(((RAW[i + 0] >> 2) & 0x3F) | ((RAW[i + 1] << 6) & 0xC0));
162 bool YUYV2RGB(
const char *YUV,
char *&RGB,
const int &NumPixels)
165 unsigned char y0, y1, u, v;
166 unsigned char r, g, b;
168 for (i = 0, j = 0; i < (NumPixels << 1); i += 4, j += 6)
170 y0 = (
unsigned char)YUV[i + 0];
171 u = (
unsigned char)YUV[i + 1];
172 y1 = (
unsigned char)YUV[i + 2];
173 v = (
unsigned char)YUV[i + 3];
186 bool COPY2RGB(
const char *input,
char *&output,
const int &NumPixels)
188 memcpy(output, input, NumPixels * 3);
192 bool YUV4202RGB(
char *YUV,
char *&RGB,
const int &width,
const int &height)
194 cv::Size size(height, width);
195 cv::Mat cv_img(height * 1.5, width, CV_8UC1, YUV);
196 cv::Mat cv_out(height, width, CV_8UC3, RGB);
197 cvtColor(cv_img, cv_out, cv::COLOR_YUV420p2BGR);
201 std::string
FCC2S(
const unsigned int &val)
206 s += (val >> 8) & 0x7f;
207 s += (val >> 16) & 0x7f;
208 s += (val >> 24) & 0x7f;
209 if (val & (1 << 31)) {
215 bool UYVY2RGB(
const char *YUV,
char *&RGB,
const int &NumPixels)
218 unsigned char y0, y1, u, v;
219 unsigned char r, g, b;
220 for (i = 0, j = 0; i < (NumPixels << 1); i += 4, j += 6) {
221 u = (
unsigned char)YUV[i + 0];
222 y0 = (
unsigned char)YUV[i + 1];
223 v = (
unsigned char)YUV[i + 2];
224 y1 = (
unsigned char)YUV[i + 3];
240 int add_underscore = 0;
243 if (isalnum(*name)) {
247 s += std::string(1, tolower(*name));
249 else if (
s.length()) add_underscore = 1;