во встроенной плате I.mx6 я получаю необработанные данные из буфера и храню cv :: Mat - PullRequest
0 голосов
/ 07 апреля 2019

Я хочу преобразовать необработанный файл, хранящийся в кадре буфера (используя 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.

Если вы знаете решение или у вас есть хорошая идея, я был бы очень признателен, если бы вы могли ответить на нее.

...