当前位置:   article > 正文

c++版openvino使用_openvino for android

openvino for android

之前写过一篇文章:python版openvino使用

还是使用同一个模型,代码如下:

  1. #include<iostream>
  2. #include<opencv2/core.hpp>
  3. #include<opencv2/highgui.hpp>
  4. #include<opencv2/imgproc.hpp>
  5. #include<opencv2/opencv.hpp>
  6. #include<inference_engine.hpp>
  7. #include<ie_extension.h>
  8. #include<ie_blob.h>
  9. using namespace std;
  10. using namespace InferenceEngine;
  11. int main() {
  12. string modepayh ="C:\\ctdet_coco_dlav0_512\\ctdet_coco_dlav0_512.xml";
  13. string imagepath ="C:\\123.jpg";
  14. //read image
  15. auto im=cv::imread(imagepath);
  16. cv::Mat image;
  17. cv::resize(im, image, cv::Size(512, 512));
  18. cout << "image loaded" << endl;
  19. //read net
  20. Core ie;
  21. CNNNetwork network = ie.ReadNetwork(modepayh);
  22. //input info
  23. InputInfo::Ptr input_info = network.getInputsInfo().begin()->second;
  24. std::string input_name = network.getInputsInfo().begin()->first;
  25. input_info->getPreProcess().setResizeAlgorithm(RESIZE_BILINEAR);
  26. input_info->setLayout(Layout::NCHW);
  27. input_info->setPrecision(Precision::U8);
  28. cout << input_name << endl;
  29. //output info
  30. DataPtr output_info = network.getOutputsInfo().begin()->second;
  31. std::string output_name = network.getOutputsInfo().begin()->first;
  32. output_info->setPrecision(Precision::FP32);
  33. //load net
  34. ExecutableNetwork executable_network = ie.LoadNetwork(network, "CPU");
  35. //create infer request
  36. InferRequest infer_request = executable_network.CreateInferRequest();
  37. //load input data
  38. InferenceEngine::TensorDesc tDesc(InferenceEngine::Precision::U8,
  39. { 1, 3, 512, 512 },
  40. InferenceEngine::Layout::NCHW);
  41. Blob::Ptr imgBlob = InferenceEngine::make_shared_blob<uint8_t>(tDesc, image.data);
  42. infer_request.SetBlob(input_name, imgBlob);
  43. //infer
  44. clock_t time_start = clock();
  45. infer_request.Infer();
  46. //get output
  47. clock_t time_end = clock();
  48. cout << "infer time is:" << 1000 * (time_end - time_start) / (double)CLOCKS_PER_SEC << "ms" << endl;
  49. OutputsDataMap outputsInfo(network.getOutputsInfo());
  50. const float* output = infer_request.GetBlob(output_name)->buffer().as<PrecisionTrait<Precision::FP32>::value_type*>();
  51. for (int i=0;i<5;i++) {
  52. cout << output[i] << endl;
  53. }
  54. return 0;
  55. }

运行结果:

 

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

闽ICP备14008679号