cv::cuda::split 使用

x33g5p2x  于2021-12-17 转载在 其他  
字(1.6k)|赞(0)|评价(0)|浏览(510)

cv::cuda::split

error:‘split’ is not a member of ‘cv::cuda’…
error:‘resize’ is not a member of ‘cv::cuda’…

recipe for target ‘all’ faild
Incvking “make -j6 -l6” faild

这里可以通过添加对应的cv头文件解决error,比如

#include <opencv2/cudaimgproc.hpp> 
#include "opencv2/cudawarping.hpp" 
#include "opencv2/cudaarithm.hpp"
 

和tensorrt结合使用:

  1. // preprocessing stage ------------------------------------------------------------------------------------------------
  2. void preprocessImage(const std::string& image_path, float* gpu_input, const nvinfer1::Dims& dims)
  3. {
  4. // read input image
  5. cv::Mat frame = cv::imread(image_path);
  6. if (frame.empty())
  7. {
  8. std::cerr << "Input image " << image_path << " load failed\n";
  9. return;
  10. }
  11. cv::cuda::GpuMat gpu_frame;
  12. // upload image to GPU
  13. gpu_frame.upload(frame);
  14. auto input_width = dims.d[2];
  15. auto input_height = dims.d[1];
  16. auto channels = dims.d[0];
  17. auto input_size = cv::Size(input_width, input_height);
  18. // resize
  19. cv::cuda::GpuMat resized;
  20. cv::cuda::resize(gpu_frame, resized, input_size, 0, 0, cv::INTER_NEAREST);
  21. // normalize
  22. cv::cuda::GpuMat flt_image;
  23. resized.convertTo(flt_image, CV_32FC3, 1.f / 255.f);
  24. cv::cuda::subtract(flt_image, cv::Scalar(0.485f, 0.456f, 0.406f), flt_image, cv::noArray(), -1);
  25. cv::cuda::divide(flt_image, cv::Scalar(0.229f, 0.224f, 0.225f), flt_image, 1, -1);
  26. // to tensor
  27. std::vector<cv::cuda::GpuMat> chw;
  28. for (size_t i = 0; i < channels; ++i)
  29. {
  30. chw.emplace_back(cv::cuda::GpuMat(input_size, CV_32FC1, gpu_input + i * input_width * input_height));
  31. }
  32. cv::cuda::split(flt_image, chw);
  33. }

https://github.com/novaHardware/segmentation/blob/d86c237e1191f159d39e115df13d691ab65752c2/PyTorch-ONNX-TensorRT-CPP/trt_sample.cpp

相关文章