// PaddleOCR车牌检测 #ifndef __OCR_DB_H__ #define __OCR_DB_H__ #include #include #include #include #include #include using namespace std; using namespace cv; using namespace migraphx; namespace migraphxSamples { typedef struct _DBParameter { float BinaryThreshold; float BoxThreshold; float UnclipRatio; int LimitSideLen; string ScoreMode; }DBParameter; class DB { public: DB(); ~DB(); ErrorCode Initialize(InitializationParameterOfDB InitializationParameterOfDB); ErrorCode Infer(const cv::Mat &img, std::vector &imgList); private: ErrorCode DoCommonInitialization(InitializationParameterOfDB InitializationParameterOfDB); private: cv::FileStorage configurationFile; InitializationParameterOfDB initializationParameter; FILE *logFile; migraphx::program net; cv::Size inputSize; string inputName; migraphx::shape inputShape; DBParameter dbParameter; }; class DBPostProcessor { public: void GetContourArea(const std::vector> &box, float unclip_ratio, float &distance); cv::RotatedRect UnClip(std::vector> box, const float &unclip_ratio); float **Mat2Vec(cv::Mat mat); std::vector> OrderPointsClockwise(std::vector> pts); std::vector> GetMiniBoxes(cv::RotatedRect box, float &ssid); float BoxScoreFast(std::vector> box_array, cv::Mat pred); float PolygonScoreAcc(std::vector contour, cv::Mat pred); std::vector>> BoxesFromBitmap(const cv::Mat pred, const cv::Mat bitmap, const float &box_thresh, const float &det_db_unclip_ratio, const std::string &det_db_score_mode); std::vector>> FilterTagDetRes(std::vector>> boxes, float ratio_h, float ratio_w, cv::Mat srcimg); private: static bool XsortInt(std::vector a, std::vector b); static bool XsortFp32(std::vector a, std::vector b); std::vector> Mat2Vector(cv::Mat mat); inline int _max(int a, int b) { return a >= b ? a : b; } inline int _min(int a, int b) { return a >= b ? b : a; } template inline T clamp(T x, T min, T max) { if (x > max) return max; if (x < min) return min; return x; } inline float clampf(float x, float min, float max) { if (x > max) return max; if (x < min) return min; return x; } }; } #endif