#ifndef CAMERA_H #define CAMERA_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include"onnxrunner.h" #include #include #include #include #include "globals.h" #include "img_utils.h" #include "color_range.h" extern MIL_ID MilApplication; extern MIL_ID MilSystem; std::vector> generateMaskFromImage(const MIL_ID& inputImage, int widthBlocks, int heightBlocks, int thresholds); std::vector> generateMaskFromMatImage(const cv::Mat& image, int widthBlocks, int heightBlocks, int thresholds); void PadColumns(std::vector>& data, int pad_left, int pad_right, uint8_t fill_value ); std::vector> expandArray(const std::vector>& array, int newCols) ; void VectorToImg(const std::vector>& array, const std::string& image_path); cv::Mat mil2mat(const MIL_ID mil_img); void convert_to_uint8(const MIL_ID& input_img, MIL_ID& output_img); std::vector> generateMask( const MIL_ID& inputImg, int outputWidth, int outputHeight, int sizeThreshold, int skipLeftCols, int skipRightCols ) ; using namespace std; using namespace cv; class camera { public: camera(); }; bool iniLowMac(); bool iniCamera(); bool iniColor(); bool iniOnnx(); void Start_camera(); bool setLowMacParam(); bool DestoryCamera(); bool DestoryLowMac(); extern int SaveImg_Flag; MIL_INT MFTYPE ProcessingFunction0(MIL_INT HookType, MIL_ID HookId, void* HookDataPtr); MIL_INT MFTYPE ProcessingFunction1(MIL_INT HookType, MIL_ID HookId, void* HookDataPtr); //图像处理 std::unordered_map loadConfig(const std::string& filename); extern std::map params; void read_params_from_file(const std::string& filename, std::map& params) ; void read_color(const std::string& filename, std::vector& colors); pair>, vector>> applyRowRangeDelay( const vector>& mask, const vector>& tail, int rowRange ); pair>, vector>> generateMaskWithTail( const MIL_ID& inputImg, const vector>& tail, int outputWidth, int outputHeight, int sizeThreshold, int rowRange, int skipLeftCols, int skipRightCols ); std::vector> expandMaskHorizontally( const std::vector>& mask, int expansionRadius); //下位机通讯 extern QTcpServer* server_to_lowermachine; extern QTcpSocket* lower_machine; extern bool volatile is_running; bool get_valve_data(std::vector> mask ); void max_valves_together_limit(std::vector> &mask_expaned, const int row_threshold); #endif // CAMERA_H