我想将存储在缓冲区帧中的原始文件(使用v4l2)转换为imx6 dart-mx6模型嵌入式板上的cv::Mat
结构。
我已经使用fwrite
命令创建了一个“ .raw”文件,但是无法将其转换为cv::Mat
结构。
我已经使用fwrite命令创建了一个“ .raw”文件,但是无法将其转换为cv::Mat
结构。 (无符号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将原始文件保存在缓冲区中,并以cv::Mat
类型保存14bit 640x512图像。
如果您知道解决方案或有个好主意,请回答。