58 lines
2.0 KiB
C
58 lines
2.0 KiB
C
![]() |
#pragma once
|
|||
|
#include "IObjectDetector.h"
|
|||
|
#include "dnninfer.h"
|
|||
|
#include "opencv2/core/base.hpp"
|
|||
|
#include <vector>
|
|||
|
|
|||
|
|
|||
|
class CSegDetector : public IObjectDetector
|
|||
|
{
|
|||
|
public:
|
|||
|
CSegDetector(const char* strModelFile, int iBatchSize = 1, int iInferMode = 1, int iDeviceIndex = 0);
|
|||
|
virtual ~CSegDetector();
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual bool Init();
|
|||
|
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>
|
|||
|
virtual bool UnInit();
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual const char* GetType() { return "CSegDetector"; };
|
|||
|
//ִ<><D6B4>infer
|
|||
|
virtual bool Execute(cv::Mat& image);
|
|||
|
virtual bool Execute(std::vector<cv::Mat>& images);
|
|||
|
virtual bool ExecuteV2(cv::Mat& image);
|
|||
|
virtual bool ExecuteV3(cv::Mat& image);
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
virtual bool GetResults(std::vector<DetectorResult>& vecDetectorResults);
|
|||
|
void EnableMask(bool bEnableMask);
|
|||
|
void EnableContourArea(bool bEnableContourArea);
|
|||
|
void SetMinAreaAndHeight(int minArea, int minHeight);
|
|||
|
protected:
|
|||
|
|
|||
|
bool ProcessInput(cv::Mat& cvInput, Datum& input, double& fx, double& fy, double& xoffset, double& yoffset);
|
|||
|
bool ProcessInputs(std::vector<cv::Mat>& cvInput, Datum& input, double& fx, double& fy, double& xoffset, double& yoffset);
|
|||
|
|
|||
|
bool ProcessInput(cv::Mat& cvInputImage, cv::Mat& cvProcessedImage, double& fx, double& fy, double& xoffset, double& yoffset);
|
|||
|
bool MaskToDetectResult(const cv::Mat& mask, float min_area, float min_height, const cv::Size& image_size, std::vector<DetectorResult>& vecDetectResult);
|
|||
|
bool ProbToDetectResult(Datum& probDatum, float min_area, float min_height, const cv::Size& image_size, std::vector<DetectorResult>& vecDetectResult);
|
|||
|
private:
|
|||
|
bool m_bInit;
|
|||
|
int m_iBatchSize;
|
|||
|
int m_iInferMode;
|
|||
|
int m_iDeviceInedx;
|
|||
|
std::string m_strModelFile;
|
|||
|
std::vector<DetectorResult> m_vecDetectResult;
|
|||
|
void* m_pInfer;
|
|||
|
int m_iChannel;
|
|||
|
int m_iHeight;
|
|||
|
int m_iWidth;
|
|||
|
int m_iLabelNum;
|
|||
|
|
|||
|
int m_iMinArea;
|
|||
|
int m_iMinHeight;
|
|||
|
|
|||
|
Datum m_inputDatum;
|
|||
|
Datum m_outputDatum;
|
|||
|
Datum m_outputProbDatum;
|
|||
|
bool m_bEnableMask;
|
|||
|
bool m_bEnableContourArea;
|
|||
|
};
|