package zconf import ( "encoding/json" "fmt" "io/ioutil" "os" ) const configPath = "/opt/vasystem/bin/zconf/Projection.json" /* 算法配置文件模板 { "so_file_path": "/opt/vasystem/libs/Detect/libdemo.so", "runtime": "/opt/vasystem/libs/Detect:/usr/local/cuda-11.1/lib64:", // 项目所用到的环境 "param": { "modelboard_path": "../2.jpg", "rotation":[ 4.4445828203215609e-01, 8.9316070946330617e-01, -6.8707951534213177e-02, -8.4673423557111882e-01, 4.4391245485198838e-01, 2.9322835254980756e-01, 2.9240035883154664e-01, -7.2150394997427411e-02, 9.5357031762576261e-01 ], "translation": [-3.1951405668851648e+03, 2.1818898071652611e+03, 6.3212411982103204e+03] } } */ type ZConfig struct { SoFilePath string `json:"so_file_path"` Runtime string `json:"runtime"` Param struct { ModelBoardPath string `json:"modelboard_path"` Rotation []float64 `json:"rotation"` Translation []float64 `json:"translation"` } `json:"param"` } var Options *ZConfig func LoadConfig() { Options = nil if !pathExists(configPath) { Options = DefaultConfig() SaveConfig(Options) } else { file, _ := os.Open(configPath) defer file.Close() fd := json.NewDecoder(file) err := fd.Decode(&Options) if err != nil { fmt.Printf("parse config error, %s\n", err.Error()) } else { fmt.Printf("config:%v\n", Options) } } } func DefaultConfig() *ZConfig { var defaultOption ZConfig defaultOption.SoFilePath = "/opt/vasystem/libs/Detect/libdemo.so" defaultOption.Runtime = "/opt/vasystem/libs/Detect:/usr/local/cuda-11.1/lib64" defaultOption.Param.ModelBoardPath = "../2.jpg" defaultOption.Param.Rotation = []float64{ 4.4445828203215609e-01, 8.9316070946330617e-01, -6.8707951534213177e-02, -8.4673423557111882e-01, 4.4391245485198838e-01, 2.9322835254980756e-01, 2.9240035883154664e-01, -7.2150394997427411e-02, 9.5357031762576261e-01, } defaultOption.Param.Translation = []float64{ -3.1951405668851648e+03, 2.1818898071652611e+03, 6.3212411982103204e+03, } return &defaultOption } func SaveConfig(options *ZConfig) { bytes, err := json.MarshalIndent(options, "", "\t") if err == nil { ioutil.WriteFile(configPath, bytes, 0744) } } func pathExists(path string) bool { _, err := os.Stat(path) if err != nil { fmt.Printf("%v", err.Error()) return os.IsExist(err) } return true }