昇腾将ImageData 转cv::Mat格式
注意解码时,硬件对图像的宽度和高度存在对齐的要求,在视频解码和图片解码,要求不一致,可以参考官方的功能及约束说明
https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha001/apiref/appdevgapi/aclpythondevg_01_0337.html
昇腾 310b1 对应 Atlas 200I A2 加速模块
Atlas 200I A2 加速模块集成了昇腾310系列AI处理器,可以实现图像、视频等多种数. 据分析与推理计算,可广泛用于智能监控、机器人、无人机、视频服务器等
宽2对齐
高2对齐
宽Stride为宽16对齐后的值。
如果用户设置的输出图片宽度小于16,则宽Stride最小为32。
高Stride为高2对齐后的值。
内存大小(单位Byte)≥ 宽Stride 高Stride 3/2
cv::Mat ImageDataToMat(const ImageData &imgData)
{
// 确保图像格式是 YUV420SP
if (imgData.format != PIXEL_FORMAT_YUV_SEMIPLANAR_420)
{
throw std::invalid_argument("Unsupported image format");
}
std::cout << imgData.width << std::endl;
std::cout << imgData.height << std::endl;
// 创建 YUV420SP 的 cv::Mat
cv::Mat yuv420spMat(imgData.height + imgData.height / 2, imgData.width, CV_8UC1, imgData.data.get());
// 将 YUV420SP 转换为 BGR
cv::Mat bgrMat;
cv::cvtColor(yuv420spMat, bgrMat, cv::COLOR_YUV2BGR_NV12);
return bgrMat;
}
本文链接地址:https://const.net.cn/820.html