You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.6 KiB
C

#pragma once
#include "MI_Interface.h"
class ML_Log;
class MA_TRTInferAlgoBase : public MI_VisionInterface
{
public:
1 year ago
MA_TRTInferAlgoBase(const trtUtils::InitParameter& param);
~MA_TRTInferAlgoBase();
virtual bool initEngine(const std::string& _onnxFileName);
virtual bool check();
1 year ago
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 };
1 year ago
trtUtils::InitParameter m_param;
std::shared_ptr<ML_Log> mLogPtr{ nullptr };
};