#ifndef CAMERA_H #define CAMERA_H #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" 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 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::vector psLabToOpenCVLab(const std::vector& lab_ps); std::vector opencvLabToPsLab(const std::vector& lab_cv); std::unordered_map loadConfig(const std::string& filename); void lab_process(const MIL_ID& inputImage, MIL_ID& outputImageLab, const std::map& params); void hsv_process(const MIL_ID& inputImage, MIL_ID& outputImageHSV, const std::map& params); void lab_process_raw(const MIL_ID& inputImage, MIL_ID& outputImageLab, const std::map& params,const std::vector& color_vector); void high_sat_detect(const MIL_ID& inputImage, MIL_ID& outputImage, const std::map& params); extern std::map params; void read_params_from_file(const std::string& filename, std::map& params) ; 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 ); #endif // CAMERA_H