|
|
|
|
#pragma once
|
|
|
|
|
#include "MI_Interface.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ML_Log;
|
|
|
|
|
|
|
|
|
|
class MA_TRTInferAlgoBase : public MI_VisionInterface
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
MA_TRTInferAlgoBase(const trtUtils::InitParameter& param);
|
|
|
|
|
~MA_TRTInferAlgoBase();
|
|
|
|
|
|
|
|
|
|
virtual bool initEngine(const std::string& _onnxFileName);
|
|
|
|
|
virtual bool check();
|
|
|
|
|
virtual bool doTRTInfer(const std::vector<MN_VisionImage::MS_ImageParam>& _bufImgs, std::vector<trtUtils::MR_Result>* _detectRes, int* _user);
|
|
|
|
|
virtual bool doTRTInfer(const std::vector<cv::Mat>& _matImgs, std::vector<trtUtils::MR_Result>* _detectRes, int* _user);
|
|
|
|
|
virtual std::string getError();
|
|
|
|
|
virtual void freeMemeory();
|
|
|
|
|
|
|
|
|
|
virtual bool measureAxis(std::vector<double>& measureRes, const MN_VisionImage::MS_ImageParam& _bufImg);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>TRTģ<54><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual int loadTRTModelData(const std::string& _trtFile, std::vector<uchar>& _modelData);
|
|
|
|
|
// <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>
|
|
|
|
|
virtual int copyToDevice(const std::vector<cv::Mat>& _imgsBatch);
|
|
|
|
|
// Ԥ<><D4A4><EFBFBD><EFBFBD>
|
|
|
|
|
virtual int preProcess(const std::vector<cv::Mat>& _imgsBatch);
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
virtual int infer();
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ濽<D4B4><E6BFBD><EFBFBD><EFBFBD>cpu
|
|
|
|
|
virtual int copyFromDevice(const std::vector<cv::Mat>& _imgsBatch);
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual int postProcess(const std::vector<cv::Mat>& _imgsBatch);
|
|
|
|
|
// <20><>bufferͼ<72><CDBC>ת<EFBFBD><D7AA>Ϊcv::Mat<61><74>ʽ
|
|
|
|
|
bool buffer2Mat(const MN_VisionImage::MS_ImageParam& _inImg, cv::Mat& _mat);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
std::unique_ptr<nvinfer1::IRuntime> m_runtime{ nullptr };
|
|
|
|
|
std::unique_ptr<nvinfer1::ICudaEngine> m_engine{ nullptr };
|
|
|
|
|
std::unique_ptr<nvinfer1::IExecutionContext> m_context{ nullptr };
|
|
|
|
|
cudaStream_t mStream{ nullptr };
|
|
|
|
|
trtUtils::InitParameter m_param;
|
|
|
|
|
std::shared_ptr<ML_Log> mLogPtr{ nullptr };
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|