Я хочу преобразовать необработанный файл, хранящийся в кадре буфера (используя v4l2), в структуру cv::Mat
на встроенной плате модели imx6 dart-mx6.
Я создал файл ".raw" с помощью команды fwrite
, но не смог преобразовать его в структуру cv::Mat
.
Я создал файл ".raw" скоманда fwrite, но я не смог преобразовать ее в cv::Mat
структуру.Адрес буфера (unsignd char *): «buffers [buf.index] .start» и хранится в виде разрядности в 14 битах (16384), размер изображения 640 (ширина) x 512 (высота).
- адрес хранилища буфера ---
`buffers[i].start = (unsigned char *)mmap (NULL, buffers[i].length, PROT_READ | PROT_WRITE, MAP_SHARED, fd_v4l, buffers[i].offset);
- код хранилища буфера (fwrite) - работает нормально
struct v4l2_buffer buf;
FILE * fd_y_file = NULL;
char file[50];
fd_y_file = fopen(file, "wb");
fwrite(buffers[buf.index].start, fmt.fmt.pix.sizeimage, 1, fd_y_file);
- код хранилища буфераМетод 2 (тип cv :: Mat) -
struct v4l2_buffer buf;
FILE * fd_y_file = NULL;
char file[50];
cv::Mat frame = cv::Mat(512, 640, 16UC1, buffers[buf.index].start);
frame.release();
В результате кадр кажется сохраненным, но изображение не выводится нормально.Я хочу сохранить необработанный файл в буфере с использованием v4l2 и сохранить 14-битное изображение 640x512 в формате cv::Mat
.
Если вы знаете решение или у вас есть хорошая идея, я был бы очень признателен, если бы вы могли ответить на нее.