当前位置:   article > 正文

opencv使用openvino模型_opencv openvino

opencv openvino

还记得在这篇文章,我们提到了cv::dnn::readNetFromModelOptimizer可以读取深度学习模型,但是当时并未使用,这个函数可以直接读取openvino格式的模型,我们可以先去下载一个人脸检测的模型。

现在我们直接使用,和之前使用没啥区别,只是模型文件变成了xml和bin文件,使用代码如下:

  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. using namespace cv;
  12. using namespace cv::dnn;
  13. string xml = "./face-detection-0200.xml";
  14. string bin = "./face-detection-0200.bin";
  15. int main() {
  16. Mat src=cv::imread("321.jpg");
  17. Net net = readNetFromModelOptimizer(xml, bin);
  18. net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE);//使用openvino作为推理引擎
  19. net.setPreferableTarget(DNN_TARGET_CPU);
  20. Mat blob = blobFromImage(src, 1.0, Size(300, 300), Scalar(), true, false, 5);
  21. net.setInput(blob);
  22. float confidenceThreshold = 0.5;
  23. Mat detection = net.forward();
  24. vector<double> layerTimings;
  25. double freq = getTickFrequency() / 1000;
  26. double time = net.getPerfProfile(layerTimings) / freq;
  27. cout<<"openvino模型推理时间为:"<<time<<" s"<<endl;
  28. int h = src.size().height;
  29. int w = src.size().width;
  30. cv::Mat dectetionMat(detection.size[2], detection.size[3], CV_32F,detection.ptr<float>());
  31. for (int i = 0; i < dectetionMat.rows;i++) {
  32. float confidence = dectetionMat.at<float>(i, 2);
  33. // cout << confidence << endl;
  34. if (confidence> confidenceThreshold) {
  35. int idx= dectetionMat.at<float>(i, 1);
  36. // cout << "idx is " << idx << endl;
  37. int left= static_cast<int>(dectetionMat.at<float>(i, 3) * w);
  38. int top = static_cast<int>(dectetionMat.at<float>(i, 4) * h);
  39. int right = static_cast<int>(dectetionMat.at<float>(i, 5) * w);
  40. int bottom = static_cast<int>(dectetionMat.at<float>(i, 6) * h);
  41. cv::rectangle(src,Rect(left,top,right-left,bottom-top),Scalar(255,0,0),2);
  42. }
  43. }
  44. cv::imwrite("3.jpg",src);
  45. return 0;
  46. }

运行结果:

 

 

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

闽ICP备14008679号