linux 如何将DMA-BUF文件描述符导入OpenCV cv::Mat?

lymnna71  于 2023-04-05  发布在  Linux
关注(0)|答案(1)|浏览(113)

我正在使用一个API(libcamera),它会返回包含原始图像数据的DMA-BUF文件描述符。有没有办法将DMA-BUF文件描述符导入OpenCV cv::Mat?我从FrameBuffer instance's plane method获取文件描述符。

qoefvg9y

qoefvg9y1#

您需要将缓冲区数据Map到一个指针中,然后从它创建一个OpenCV Mat。

uint8_t *ptr = static_cast<uint8_t *>(mmap(NULL, buffer->planes()[0].length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0));
cv::Mat image(height, width, CV_8UC1, ptr, stride);

其中buffer是libcamera::FrameBuffer类的一部分。

int fd = buffer->planes()[0].fd.get();

相关问题