HarmonyOS 鸿蒙Next OH_NativeBuffer* nativeBuffer转为cv::Mat
HarmonyOS 鸿蒙Next OH_NativeBuffer* nativeBuffer转为cv::Mat
参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-info-c-V5
通过OH_ImageReceiverNative 获取到OH_ImageNative再得到 OH_NativeBuffer* nativeBuffer
参数是:1280*720,视频流格式是 CAMERA_FORMAT_YUV_420_SP = 1003
现想将nativeBuffer转为cv::Mat,代码如下
// 转换成Mat
// 创建一个 cv::Mat 对象来存储 BGR 图像
cv::Mat bgr_image(imgSizeRead.height, imgSizeRead.width, CV_8UC3);
// 将 nativeBuffer 转换为 cv::Mat 对象
cv::Mat yuv_image(imgSizeRead.height + imgSizeRead.height / 2, imgSizeRead.width, CV_8UC1, nativeBuffer);
一直没能正确转换。。 问题出在哪里?
3 回复
楼主您好,该问题需要demo代码进行分析,建议通过在线提单提交问题。
你好,请问你是编译了opencv库么
在HarmonyOS中将OH_NativeBuffer* nativeBuffer
转换为cv::Mat
,通常你需要访问nativeBuffer
的像素数据并将其映射到OpenCV的矩阵结构中。这通常涉及到几个步骤:
- 确认
nativeBuffer
的格式(如YUV, RGB等)和尺寸。 - 使用
OH_NativeBuffer_Lock
锁定缓冲区以获取其像素数据指针和步长。 - 根据
nativeBuffer
的格式和尺寸,创建一个相应大小和类型的cv::Mat
。 - 使用
memcpy
或类似函数将像素数据从nativeBuffer
复制到cv::Mat
的数据区域。 - 解锁
nativeBuffer
。
如果问题依旧没法解决请加我微信,我的微信是itying888。