From 36d70438049cc8ca746195791db002f807269995 Mon Sep 17 00:00:00 2001 From: Neucrack Date: Thu, 5 Jun 2025 18:54:56 +0800 Subject: [PATCH] some build and sys API optimization --- .../3rd_party/onnxruntime/CMakeLists.txt | 4 +-- components/basic/include/maix_sys.hpp | 2 +- components/basic/src/maix_sys.cpp | 11 +++++--- components/nn/component.py | 28 +++++++++++++++++++ components/vision/include/maix_image.hpp | 2 +- components/vision/include/maix_image_def.hpp | 11 +++++++- components/vision/src/maix_image.cpp | 7 ++++- tools/doc_tool/gen_api.py | 2 +- 8 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 components/nn/component.py diff --git a/components/3rd_party/onnxruntime/CMakeLists.txt b/components/3rd_party/onnxruntime/CMakeLists.txt index efe9109c..caf2ac2a 100644 --- a/components/3rd_party/onnxruntime/CMakeLists.txt +++ b/components/3rd_party/onnxruntime/CMakeLists.txt @@ -30,8 +30,8 @@ endif() ###### Add link search path for requirements/libs ###### # list(APPEND ADD_LINK_SEARCH_PATH "${CONFIG_TOOLCHAIN_PATH}/lib") # list(APPEND ADD_REQUIREMENTS m) # add system libs, pthread or m(math) lib for example -list(APPEND ADD_DYNAMIC_LIB "${src_path}/lib/libonnxruntime.so.1" -) +list(APPEND ADD_DYNAMIC_LIB "${src_path}/lib/libonnxruntime.so.1") +list(APPEND ADD_DIST_LIB_IGNORE "${src_path}/lib/libonnxruntime.so.1") ############################################### diff --git a/components/basic/include/maix_sys.hpp b/components/basic/include/maix_sys.hpp index 39a55e4f..9b0262d8 100644 --- a/components/basic/include/maix_sys.hpp +++ b/components/basic/include/maix_sys.hpp @@ -123,7 +123,7 @@ namespace maix::sys * @return human readable string, e.g. "1.21 KB" * @maixpy maix.sys.bytes_to_human */ - std::string bytes_to_human(unsigned long long bytes, int precision = 2, int base = 1024, const std::string &unit = "B", const std::string &sep = " "); + std::string bytes_to_human(unsigned long long bytes, int precision = 2, int base = 1024, const std::vector &units = std::vector(), const std::string &sep = " "); /** * Get CPU frequency diff --git a/components/basic/src/maix_sys.cpp b/components/basic/src/maix_sys.cpp index d9daadb3..a8c10387 100644 --- a/components/basic/src/maix_sys.cpp +++ b/components/basic/src/maix_sys.cpp @@ -534,20 +534,23 @@ namespace maix::sys return res; } - std::string bytes_to_human(unsigned long long bytes, int precision, int base, const std::string &unit, const std::string &sep) + std::string bytes_to_human(unsigned long long bytes, int precision, int base, const std::vector &units, const std::string &sep) { - const char *units[] = {"", "K", "M", "G", "T", "P", "E", "Z", "Y"}; + static const std::vector default_units = { + "B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB" + }; + const std::vector& actual_units = units.empty() ? default_units : units; size_t unit_index = 0; double bytes_double = static_cast(bytes); - while (bytes_double >= base && unit_index < sizeof(units) / sizeof(*units)) + while (bytes_double >= base && unit_index < actual_units.size()) { bytes_double /= base; ++unit_index; } std::ostringstream out; - out << std::fixed << std::setprecision(precision) << bytes_double << sep << units[unit_index] << unit; + out << std::fixed << std::setprecision(precision) << bytes_double << sep << actual_units[unit_index]; return out.str(); } diff --git a/components/nn/component.py b/components/nn/component.py new file mode 100644 index 00000000..0f1c1089 --- /dev/null +++ b/components/nn/component.py @@ -0,0 +1,28 @@ +def add_file_downloads(confs : dict) -> list: + ''' + @param confs kconfig vars, dict type + @return list type, items is dict type + ''' + return [] + + + +def add_requirements(platform : str, find_dirs : list): + reqs = ["basic", "ini", "vision", "clipper2"] + if platform == "maixcam": + reqs.extend([ + "maixcam_lib", + "alsa_lib" + ]) + elif platform == "maixcam2": + reqs.extend([ + "eigen", + "librosa_simple", + "OpenCC", + "onnxruntime" + ]) + else: + raise Exception("maixcam_lib component.py not add this platform support yet") + return reqs + + diff --git a/components/vision/include/maix_image.hpp b/components/vision/include/maix_image.hpp index 205af1e6..e7339f7f 100644 --- a/components/vision/include/maix_image.hpp +++ b/components/vision/include/maix_image.hpp @@ -1574,7 +1574,7 @@ namespace maix::image * @return Image object, if load failed, will return None(nullptr in C++), so you should care about it. * @maixpy maix.image.load */ - image::Image *load(const char *path, image::Format format = image::Format::FMT_RGB888); + image::Image *load(const std::string &path, image::Format format = image::Format::FMT_RGB888); /** * Create image from bytes diff --git a/components/vision/include/maix_image_def.hpp b/components/vision/include/maix_image_def.hpp index 26feb9a0..9a5a75be 100644 --- a/components/vision/include/maix_image_def.hpp +++ b/components/vision/include/maix_image_def.hpp @@ -109,7 +109,9 @@ namespace maix::image }; /** - * Image format string + * Image format string. + * !!Deprecated!! Please use format_name() function instead. + * This attribute will be removed in future. * @maixpy maix.image.fmt_names */ const std::vector fmt_names = { @@ -150,6 +152,13 @@ namespace maix::image "INVALID" }; + /** + * Get format name by format. + * @return format name string + * @maixpy maix.image.format_name + */ + std::string format_name(maix::image::Format fmt); + /** * Image size type * @maixpy maix.image.Size diff --git a/components/vision/src/maix_image.cpp b/components/vision/src/maix_image.cpp index 80895ec4..8f15d1f0 100644 --- a/components/vision/src/maix_image.cpp +++ b/components/vision/src/maix_image.cpp @@ -128,7 +128,12 @@ namespace maix::image free(uv_temp); } - image::Image *load(const char *path, image::Format format) + std::string format_name(maix::image::Format fmt) + { + return fmt_names[fmt]; + } + + image::Image *load(const std::string &path, image::Format format) { cv::Mat mat; if (format == image::FMT_BGR888 || format == image::FMT_RGB888) diff --git a/tools/doc_tool/gen_api.py b/tools/doc_tool/gen_api.py index 2a7aba86..40782a72 100644 --- a/tools/doc_tool/gen_api.py +++ b/tools/doc_tool/gen_api.py @@ -939,7 +939,7 @@ MaixCDK API documentation, modules: readme += "| --- | --- |\n" for m, v in module_members.items(): # add link to module api doc - readme += "|[{}::{}](./{}/{}.md) | {} |\n".format(args.module_name, m, m, args.module_name, v["doc"]["brief"].replace("\n", "
") + readme += "|[{}::{}](./{}/{}.md) | {} |\n".format(args.module_name, m, args.module_name, m, v["doc"]["brief"].replace("\n", "
") ) with open(readme_path, "w", encoding="utf-8") as f: f.write(readme)