#pragma once #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace Ort; using namespace cv; using namespace std; using namespace Ort; const float pi = 3.1415926536f; const int circle_center[] = { 270, 290 }; //center position[310,320] #define SEG_IMAGE_SIZE 512 #define LINE_HEIGH 120 #define LINE_WIDTH 1696 #define CIRCLE_RADIUS 250 #define METER_RANGE 30 class AmpereMeterALGO { public: void Init (bool isCuda); float detect(Mat& cv_image); Mat creat_line_image(const Mat& circle,int Radius, int RingStride); float get_meter_reader(const Mat& image); private: int inpWidth; int inpHeight; int outWidth; int outHeight; vector input_image_ = { 1, 3, 512, 512 }; const float mean[3] = { 0.5f, 0.5f, 0.5f }; const float stds[3] = { 0.5f, 0.5f, 0.5f }; Env env = Env(ORT_LOGGING_LEVEL_ERROR, "u2net"); Ort::Session* ort_session = nullptr; SessionOptions sessionOptions = SessionOptions(); vector input_names; vector output_names; vector> input_node_dims; // >=1 outputs vector> output_node_dims; // >=1 outputs };