当前位置:   article > 正文

华为昇腾MindX GPU开发笔记_升腾gpu 制程

升腾gpu 制程

mxVision很多是类似cuda的搞法 主要还是围绕gstreamer

下面是常用转换:

1.opencv转MemoryData

待定

2.DvppDataInfo下载转opencv

  1. int DvppDataSavejpg(DvppDataInfo& output, std::string jpgname)
  2. {
  3. //测试转换成功
  4. MemoryData hostData(output.dataSize, MemoryData::MEMORY_HOST);
  5. MemoryData deviceSrc(static_cast<void*>(output.data), output.dataSize, MemoryData::MEMORY_DVPP);
  6. int ret = MemoryHelper::MxbsMallocAndCopy(hostData, deviceSrc);
  7. if (ret != APP_ERR_OK)
  8. {
  9. MemoryHelper::MxbsFree(hostData);
  10. output.destory(output.data);
  11. return ret;
  12. }
  13. cv::Mat src(output.heightStride + output.heightStride / 2, output.widthStride, CV_8UC1, (unsigned char*)hostData.ptrData);
  14. cv::cvtColor(src, src, cv::COLOR_YUV2BGR_NV12);
  15. cv::imwrite(jpgname, src);
  16. }

3.MemoryData在GPU下载的转换

  1. //Device to Host 数据复制
  2. APP_ERROR copyDataToHost(MxBase::MemoryData& hostMem, MxBase::MemoryData& dvppMem)
  3. {
  4. // copy data from device to host
  5. dvppMem.type = MxBase::MemoryData::MEMORY_DVPP;
  6. hostMem.type = MxBase::MemoryData::MEMORY_HOST;
  7. hostMem.ptrData = nullptr;
  8. hostMem.size = dvppMem.size;
  9. hostMem.deviceId = dvppMem.deviceId;
  10. APP_ERROR ret = MxBase::MemoryHelper::MxbsMallocAndCopy(hostMem, dvppMem);
  11. if (ret != APP_ERR_OK)
  12. {
  13. LogError << "After dvpp encode, move data from dvpp to host failed.";
  14. return ret;
  15. }
  16. return APP_ERR_OK;
  17. }

4.MxpiVisionData数据转内存数据MemoryData

  1. //MxpiVisionData转内存数据MemoryData
  2. MxBase::MemoryData ConvertMemoryData(const MxTools::MxpiVisionData& mxpiVisionData)
  3. {
  4. MxBase::MemoryData memoryData = {};
  5. memoryData.deviceId = mxpiVisionData.deviceid();
  6. memoryData.type = (MxBase::MemoryData::MemoryType) 1;
  7. memoryData.size = (uint32_t)mxpiVisionData.datasize();
  8. memoryData.ptrData = (void*)mxpiVisionData.dataptr();
  9. return memoryData;
  10. }

5.MemoryData转MxpiVisionList

  1. //将内存MemoryData转MxpiVisionList数据
  2. std::shared_ptr<MxTools::MxpiVisionList> MemcopyList(MxBase::MemoryData newData)
  3. {
  4. // new shared_ptr MxpiVisionList;
  5. //std::shared_ptr<MxTools::MxpiVisionList> dstMxpiVisionListSptr(new MxTools::MxpiVisionList,MxTools::g_deleteFuncMxpiVisionList);
  6. std::shared_ptr<MxTools::MxpiVisionList> dstMxpiVisionListSptr(new MxTools::MxpiVisionList);
  7. MxTools::MxpiVision* dstMxpivision = dstMxpiVisionListSptr->add_visionvec();
  8. MxTools::MxpiVisionInfo* mxpiVisionInfo = dstMxpivision->mutable_visioninfo();
  9. mxpiVisionInfo->set_format(1);
  10. mxpiVisionInfo->set_height(416);
  11. mxpiVisionInfo->set_width(416);
  12. mxpiVisionInfo->set_heightaligned(416);
  13. mxpiVisionInfo->set_widthaligned(416);
  14. // set MxpiVisionData by MemoryData
  15. MxTools::MxpiVisionData* mxpiVisionData = dstMxpivision->mutable_visiondata();
  16. mxpiVisionData->set_dataptr((uint64_t)newData.ptrData);
  17. mxpiVisionData->set_datasize(newData.size);
  18. mxpiVisionData->set_deviceid(newData.deviceId);
  19. mxpiVisionData->set_memtype((MxTools::MxpiMemoryType) newData.type);
  20. return dstMxpiVisionListSptr;
  21. }

6.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/224251?site
推荐阅读
相关标签
  

闽ICP备14008679号