From 67653285e17eeb916593668c76e9e96ff584ceb7 Mon Sep 17 00:00:00 2001 From: Neucrack Date: Fri, 19 Apr 2024 22:58:03 +0800 Subject: [PATCH] update doc --- maixpy/api/api.json | 2129 ++++++++++++----- maixpy/api/index.html | 15 + maixpy/api/maix/app.html | 7 +- maixpy/api/maix/camera.html | 189 ++ maixpy/api/maix/comm.html | 3 + maixpy/api/maix/display.html | 96 + maixpy/api/maix/err.html | 3 + maixpy/api/maix/example.html | 3 + maixpy/api/maix/fs.html | 28 +- maixpy/api/maix/i18n.html | 3 + maixpy/api/maix/image.html | 411 +++- maixpy/api/maix/nn.html | 7 +- maixpy/api/maix/nn/F.html | 3 + maixpy/api/maix/peripheral.html | 3 + maixpy/api/maix/peripheral/adc.html | 25 +- maixpy/api/maix/peripheral/gpio.html | 345 +-- maixpy/api/maix/peripheral/i2c.html | 194 +- maixpy/api/maix/peripheral/key.html | 3 + maixpy/api/maix/peripheral/pwm.html | 93 +- maixpy/api/maix/peripheral/spi.html | 284 +-- maixpy/api/maix/peripheral/timer.html | 3 + maixpy/api/maix/peripheral/uart.html | 11 +- maixpy/api/maix/peripheral/wdt.html | 13 +- maixpy/api/maix/protocol.html | 3 + maixpy/api/maix/rtsp.html | 599 +++++ maixpy/api/maix/sys.html | 41 + maixpy/api/maix/tensor.html | 3 + maixpy/api/maix/thread.html | 3 + maixpy/api/maix/time.html | 3 + maixpy/api/maix/touchscreen.html | 7 +- maixpy/api/maix/util.html | 335 +++ maixpy/api/maix/video.html | 652 +++++ maixpy/api/sidebar.yaml | 9 + maixpy/doc/zh/audio/recognize.html | 5 +- maixpy/doc/zh/basic/app.html | 26 +- maixpy/doc/zh/basic/app_usage.html | 5 +- maixpy/doc/zh/basic/linux_basic.html | 5 +- maixpy/doc/zh/basic/maixpy_upgrade.html | 5 +- maixpy/doc/zh/basic/maixvision.html | 5 +- maixpy/doc/zh/basic/os.html | 7 +- maixpy/doc/zh/basic/python.html | 5 +- maixpy/doc/zh/basic/python_pkgs.html | 5 +- maixpy/doc/zh/faq.html | 39 +- maixpy/doc/zh/index.html | 85 +- maixpy/doc/zh/modules/acc.html | 5 +- maixpy/doc/zh/modules/thermal_cam.html | 5 +- maixpy/doc/zh/modules/tof.html | 5 +- maixpy/doc/zh/peripheral/gpio.html | 5 +- maixpy/doc/zh/peripheral/i2c.html | 5 +- maixpy/doc/zh/peripheral/pwm.html | 5 +- maixpy/doc/zh/peripheral/spi.html | 5 +- maixpy/doc/zh/peripheral/uart.html | 5 +- maixpy/doc/zh/peripheral/wdt.html | 5 +- maixpy/doc/zh/pro/compile_os.html | 5 +- maixpy/doc/zh/sidebar.yaml | 6 +- maixpy/doc/zh/source_code/add_c_module.html | 26 +- maixpy/doc/zh/source_code/build.html | 5 +- maixpy/doc/zh/source_code/contribute.html | 5 +- maixpy/doc/zh/source_code/faq.html | 5 +- maixpy/doc/zh/source_code/maixcdk.html | 5 +- maixpy/doc/zh/video/jpeg_streaming.html | 5 +- maixpy/doc/zh/vision/ai.html | 5 +- maixpy/doc/zh/vision/apriltag.html | 171 +- maixpy/doc/zh/vision/body_key_points.html | 37 +- maixpy/doc/zh/vision/camera.html | 5 +- maixpy/doc/zh/vision/classify.html | 5 +- maixpy/doc/zh/vision/custmize_model.html | 322 +++ maixpy/doc/zh/vision/display.html | 11 +- maixpy/doc/zh/vision/face_recognition.html | 354 +++ maixpy/doc/zh/vision/find_blobs.html | 188 +- maixpy/doc/zh/vision/image_ops.html | 7 +- maixpy/doc/zh/vision/maixhub_train.html | 30 +- maixpy/doc/zh/vision/object_track.html | 5 +- maixpy/doc/zh/vision/qrcode.html | 137 +- .../doc/zh/vision/self_learn_classifier.html | 61 +- maixpy/doc/zh/vision/self_learn_detector.html | 22 +- maixpy/doc/zh/vision/yolov5.html | 7 +- maixpy/en/index.html | 9 +- maixpy/index.html | 9 +- maixpy/sitemap.xml | 234 +- maixpy/static/image/find_blobs_app.jpg | Bin 0 -> 98869 bytes maixpy/static/image/maixcam.png | Bin 345608 -> 344324 bytes maixpy/static/image/maixcam_back.png | Bin 0 -> 264001 bytes maixpy/static/image/maixcam_font.png | Bin 0 -> 68501 bytes maixpy/static/search_index/index_0.json | 2 +- maixpy/static/search_index/index_1.json | 2 +- maixpy/static/search_index/index_3.json | 2 +- maixpy/static/search_index/index_4.json | 2 +- 88 files changed, 5751 insertions(+), 1701 deletions(-) create mode 100644 maixpy/api/maix/rtsp.html create mode 100644 maixpy/api/maix/util.html create mode 100644 maixpy/api/maix/video.html create mode 100644 maixpy/doc/zh/vision/custmize_model.html create mode 100644 maixpy/doc/zh/vision/face_recognition.html create mode 100644 maixpy/static/image/find_blobs_app.jpg create mode 100644 maixpy/static/image/maixcam_back.png create mode 100644 maixpy/static/image/maixcam_font.png diff --git a/maixpy/api/api.json b/maixpy/api/api.json index 0223271..5ccda72 100644 --- a/maixpy/api/api.json +++ b/maixpy/api/api.json @@ -929,34 +929,52 @@ "def": "Size(int width = 0, int height = 0)" }, "width": { - "type": "var", + "type": "func", "name": "width", "doc": { "brief": "width of size", + "param": { + "width": "set new width, if not set, only return current width" + }, "maixpy": "maix.image.Size.width", - "py_doc": "width of size" + "py_doc": "width of size\n\nArgs:\n - width: set new width, if not set, only return current width\n" }, - "value": null, + "args": [ + [ + "int", + "width", + "-1" + ] + ], + "ret_type": "int", "static": false, - "readonly": false, - "def": "int width" + "def": "int width(int width = -1)" }, "height": { - "type": "var", + "type": "func", "name": "height", "doc": { "brief": "height of size", + "param": { + "height": "set new height, if not set, only return current height" + }, "maixpy": "maix.image.Size.height", - "py_doc": "height of size" + "py_doc": "height of size\n\nArgs:\n - height: set new height, if not set, only return current height\n" }, - "value": null, + "args": [ + [ + "int", + "height", + "-1" + ] + ], + "ret_type": "int", "static": false, - "readonly": false, - "def": "int height" + "def": "int height(int height = -1)" }, "__getitem__": { "type": "func", - "name": "__getitem__", + "name": "operator[]", "doc": { "brief": "Subscript operator", "param": { @@ -964,6 +982,7 @@ }, "return": "int& width or height", "maixpy": "maix.image.Size.__getitem__", + "maixcdk": "maix.image.Size.[]", "py_doc": "Subscript operator\n\nArgs:\n - index: 0 for width, 1 for height\n\n\nReturns: int& width or height\n" }, "args": [ @@ -975,7 +994,7 @@ ], "ret_type": "int&", "static": false, - "def": "int &__getitem__(int index)" + "def": "int &operator[](int index)" }, "__str__": { "type": "func", @@ -1252,6 +1271,29 @@ "static": false, "def": "Line(int x1, int y1, int x2, int y2, int magnitude = 0, int theta = 0, int rho = 0)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "get x1 of line\n[1] get y1 of line\n[2] get x2 of line\n[3] get y2 of line\n[4] get length of line\n[5] get magnitude of the straight line after Hough transformation\n[6] get angle of the straight line after Hough transformation (0-179 degrees)\n[7] get p-value of the straight line after Hough transformation" + }, + "return": "int&", + "maixpy": "maix.image.Line.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: get x1 of line\n[1] get y1 of line\n[2] get x2 of line\n[3] get y2 of line\n[4] get length of line\n[5] get magnitude of the straight line after Hough transformation\n[6] get angle of the straight line after Hough transformation (0-179 degrees)\n[7] get p-value of the straight line after Hough transformation\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "x1": { "type": "func", "name": "x1", @@ -1428,6 +1470,29 @@ "static": false, "def": "Rect(std::vector> &corners, int x, int y, int w, int h, int magnitude = 0)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "get x of rect\n[1] get y of rect\n[2] get w of rect\n[3] get h of rect\n[4] get magnitude of the straight line after Hough transformation" + }, + "return": "int&", + "maixpy": "maix.image.Rect.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: get x of rect\n[1] get y of rect\n[2] get w of rect\n[3] get h of rect\n[4] get magnitude of the straight line after Hough transformation\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "corners": { "type": "func", "name": "corners", @@ -1578,6 +1643,29 @@ "static": false, "def": "Circle(int x, int y, int r, int magnitude)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "get x of circle\n[1] get y of circle\n[2] get r of circle\n[3] get magnitude of the circle after Hough transformation" + }, + "return": "int&", + "maixpy": "maix.image.Circle.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: get x of circle\n[1] get y of circle\n[2] get r of circle\n[3] get magnitude of the circle after Hough transformation\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "x": { "type": "func", "name": "x", @@ -1740,6 +1828,29 @@ "static": false, "def": "Blob(std::vector &rect, std::vector> &corners, std::vector> &mini_corners,float cx, float cy, int pixels, float rotation, int code, int count, int perimeter, float roundness, std::vector &x_hist_bins, std::vector &y_hist_bins)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "Returns the blob\u2019s bounding box x coordinate\n[1] Returns the blob\u2019s bounding box y coordinate\n[2] Returns the blob\u2019s bounding box w coordinate\n[3] Returns the blob\u2019s bounding box h coordinate\n[4] Returns the number of pixels that are part of this blob\n[5] Returns the centroid x position of the blob\n[6] Returns the centroid y position of the blob" + }, + "return": "int& width or height", + "maixpy": "maix.image.Blob.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: Returns the blob\u2019s bounding box x coordinate\n[1] Returns the blob\u2019s bounding box y coordinate\n[2] Returns the blob\u2019s bounding box w coordinate\n[3] Returns the blob\u2019s bounding box h coordinate\n[4] Returns the number of pixels that are part of this blob\n[5] Returns the centroid x position of the blob\n[6] Returns the centroid y position of the blob\n\n\nReturns: int& width or height\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "corners": { "type": "func", "name": "corners", @@ -2264,6 +2375,29 @@ "static": false, "def": "QRCode(std::vector &rect, std::vector> &corners, std::string &payload, int version, int ecc_level, int mask, int data_type, int eci)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "Returns the qrcode\u2019s bounding box x coordinate\n[1] Returns the qrcode\u2019s bounding box y coordinate\n[2] Returns the qrcode\u2019s bounding box w coordinate\n[3] Returns the qrcode\u2019s bounding box h coordinate\n[4] Not support this index, try to use payload() method\n[5] Returns the version of qrcode\n[6] Returns the error correction level of qrcode\n[7] Returns the mask of qrcode\n[8] Returns the datatype of qrcode\n[9] Returns the eci of qrcode" + }, + "return": "int&", + "maixpy": "maix.image.QRCode.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: Returns the qrcode\u2019s bounding box x coordinate\n[1] Returns the qrcode\u2019s bounding box y coordinate\n[2] Returns the qrcode\u2019s bounding box w coordinate\n[3] Returns the qrcode\u2019s bounding box h coordinate\n[4] Not support this index, try to use payload() method\n[5] Returns the version of qrcode\n[6] Returns the error correction level of qrcode\n[7] Returns the mask of qrcode\n[8] Returns the datatype of qrcode\n[9] Returns the eci of qrcode\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "corners": { "type": "func", "name": "corners", @@ -2612,6 +2746,29 @@ "static": false, "def": "AprilTag(std::vector &rect, std::vector> &corners, int id, int famliy, float centroid_x, float centroid_y, float rotation, float decision_margin, int hamming, float goodness, float x_translation, float y_translation, float z_translation, float x_rotation, float y_rotation, float z_rotation)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "Returns the apriltag\u2019s bounding box x coordinate\n[1] Returns the apriltag\u2019s bounding box y coordinate\n[2] Returns the apriltag\u2019s bounding box w coordinate\n[3] Returns the apriltag\u2019s bounding box h coordinate\n[4] Returns the apriltag\u2019s id\n[5] Returns the apriltag\u2019s family\n[6] Not support\n[7] Not support\n[8] Not support\n[9] Not support\n[10] Returns the apriltag\u2019s hamming\n[11] Not support\n[12] Not support\n[13] Not support\n[14] Not support\n[15] Not support\n[16] Not support\n[17] Not support" + }, + "return": "int&", + "maixpy": "maix.image.AprilTag.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: Returns the apriltag\u2019s bounding box x coordinate\n[1] Returns the apriltag\u2019s bounding box y coordinate\n[2] Returns the apriltag\u2019s bounding box w coordinate\n[3] Returns the apriltag\u2019s bounding box h coordinate\n[4] Returns the apriltag\u2019s id\n[5] Returns the apriltag\u2019s family\n[6] Not support\n[7] Not support\n[8] Not support\n[9] Not support\n[10] Returns the apriltag\u2019s hamming\n[11] Not support\n[12] Not support\n[13] Not support\n[14] Not support\n[15] Not support\n[16] Not support\n[17] Not support\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "corners": { "type": "func", "name": "corners", @@ -2996,6 +3153,29 @@ "static": false, "def": "DataMatrix(std::vector &rect, std::vector> &corners, std::string &payload, float rotation, int rows, int columns, int capacity, int padding)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "get x of DataMatrix\n[1] get y of DataMatrix\n[2] get w of DataMatrix\n[3] get h of DataMatrix\n[4] Not support this index, try to use payload() method\n[5] Not support this index, try to use rotation() method\n[6] get rows of DataMatrix\n[7] get columns of DataMatrix\n[8] get capacity of DataMatrix\n[9] get padding of DataMatrix" + }, + "return": "int&", + "maixpy": "maix.image.DataMatrix.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: get x of DataMatrix\n[1] get y of DataMatrix\n[2] get w of DataMatrix\n[3] get h of DataMatrix\n[4] Not support this index, try to use payload() method\n[5] Not support this index, try to use rotation() method\n[6] get rows of DataMatrix\n[7] get columns of DataMatrix\n[8] get capacity of DataMatrix\n[9] get padding of DataMatrix\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "corners": { "type": "func", "name": "corners", @@ -3140,10 +3320,10 @@ "type": "func", "name": "capacity", "doc": { - "brief": "et capacity of DataMatrix", + "brief": "get capacity of DataMatrix", "return": "returns how many characters could fit in this data matrix, type is int", "maixpy": "maix.image.DataMatrix.capacity", - "py_doc": "et capacity of DataMatrix\n\nReturns: returns how many characters could fit in this data matrix, type is int\n" + "py_doc": "get capacity of DataMatrix\n\nReturns: returns how many characters could fit in this data matrix, type is int\n" }, "args": [], "ret_type": "int", @@ -3228,6 +3408,29 @@ "static": false, "def": "BarCode(std::vector &rect, std::vector> &corners, std::string &payload, int type, float rotation, int quality)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index\n[0]": "get x of BarCode\n[1] get y of BarCode\n[2] get w of BarCode\n[3] get h of BarCode\n[4] Not support this index, try to use payload() method\n[5] get type of BarCode\n[6] Not support this index, try to use rotation() method\n[7] get quality of BarCode" + }, + "return": "int&", + "maixpy": "maix.image.BarCode.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index\n[0]: get x of BarCode\n[1] get y of BarCode\n[2] get w of BarCode\n[3] get h of BarCode\n[4] Not support this index, try to use payload() method\n[5] get type of BarCode\n[6] Not support this index, try to use rotation() method\n[7] get quality of BarCode\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "corners": { "type": "func", "name": "corners", @@ -3420,6 +3623,29 @@ "static": false, "def": "Statistics(image::Format format, std::vector &l_statistics, std::vector &a_statistics, std::vector &b_statistics)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index": "array index" + }, + "return": "int&", + "maixpy": "maix.image.Statistics.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index: array index\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "format": { "type": "func", "name": "format", @@ -3828,6 +4054,29 @@ "static": false, "def": "Displacement(float x_translation, float y_translation, float rotation, float scale, float response)" }, + "__getitem__": { + "type": "func", + "name": "__getitem__", + "doc": { + "brief": "Subscript operator", + "param": { + "index": "array index" + }, + "return": "int&", + "maixpy": "maix.image.Displacement.__getitem__", + "py_doc": "Subscript operator\n\nArgs:\n - index: array index\n\n\nReturns: int&\n" + }, + "args": [ + [ + "int", + "index", + null + ] + ], + "ret_type": "int&", + "static": false, + "def": "int &__getitem__(int index)" + }, "x_translation": { "type": "func", "name": "x_translation", @@ -4680,13 +4929,11 @@ "param": { "width": "image width, should > 0", "height": "image height, should > 0", - "format": "image format @see image::Format", - "data": "image data, if data is nullptr, will malloc memory for image data\nIf the image is in jpeg format, data must be filled in.", - "data_size": "image data size, only for compressed format like jpeg png, data_size must be filled in.", - "copy": "if true and data is not nullptr, will copy data to new buffer, else will use data directly. default is true to avoid memory leak." + "format": "image format @see image::Format" }, "maixpy": "maix.image.Image.__init__", - "py_doc": "Image constructor\n\nArgs:\n - width: image width, should > 0\n - height: image height, should > 0\n - format: image format @see image::Format\n - data: image data, if data is nullptr, will malloc memory for image data\nIf the image is in jpeg format, data must be filled in.\n - data_size: image data size, only for compressed format like jpeg png, data_size must be filled in.\n - copy: if true and data is not nullptr, will copy data to new buffer, else will use data directly. default is true to avoid memory leak.\n" + "maixcdk": "maix.image.Image.Image", + "py_doc": "Image constructor\n\nArgs:\n - width: image width, should > 0\n - height: image height, should > 0\n - format: image format @see image::Format\n" }, "args": [ [ @@ -4703,26 +4950,11 @@ "image::Format", "format", "image::Format::FMT_RGB888" - ], - [ - "void *", - "data", - "nullptr" - ], - [ - "int", - "data_size", - "-1" - ], - [ - "bool", - "copy", - "true" ] ], "ret_type": null, "static": false, - "def": "Image(int width, int height, image::Format format = image::Format::FMT_RGB888, void *data = nullptr, int data_size = -1, bool copy = true)" + "def": "Image(int width, int height, image::Format format = image::Format::FMT_RGB888)" }, "format": { "type": "func", @@ -5234,23 +5466,23 @@ "static": false, "def": "image::Image *draw_ellipse(int x, int y, int a, int b, float angle, float start_angle, float end_angle, const image::Color &color, int thickness = 1)" }, - "draw_text": { + "draw_string": { "type": "func", - "name": "draw_text", + "name": "draw_string", "doc": { "brief": "Draw text on image", "param": { "x": "text left top point's coordinate x", "y": "text left top point's coordinate y", - "text": "text content", + "string": "text content", "color": "text color @see image::Color, default is white", "scale": "font scale, by default(value is 1)", "thickness": "text thickness(line width), if negative, the glyph is filled, by default(value is -1)", "wrap": "if true, will auto wrap text to next line if text width > image width, by default(value is true)" }, "return": "this image object self", - "maixpy": "maix.image.Image.draw_text", - "py_doc": "Draw text on image\n\nArgs:\n - x: text left top point's coordinate x\n - y: text left top point's coordinate y\n - text: text content\n - color: text color @see image::Color, default is white\n - scale: font scale, by default(value is 1)\n - thickness: text thickness(line width), if negative, the glyph is filled, by default(value is -1)\n - wrap: if true, will auto wrap text to next line if text width > image width, by default(value is true)\n\n\nReturns: this image object self\n" + "maixpy": "maix.image.Image.draw_string", + "py_doc": "Draw text on image\n\nArgs:\n - x: text left top point's coordinate x\n - y: text left top point's coordinate y\n - string: text content\n - color: text color @see image::Color, default is white\n - scale: font scale, by default(value is 1)\n - thickness: text thickness(line width), if negative, the glyph is filled, by default(value is -1)\n - wrap: if true, will auto wrap text to next line if text width > image width, by default(value is true)\n\n\nReturns: this image object self\n" }, "args": [ [ @@ -5265,7 +5497,7 @@ ], [ "const std::string &", - "text", + "textstring", null ], [ @@ -5301,45 +5533,91 @@ ], "ret_type": "image::Image*", "static": false, - "def": "image::Image *draw_text(int x, int y, const std::string &text, const image::Color &color = image::COLOR_WHITE, float scale = 1, int thickness = -1,\n bool wrap = true, int wrap_space = 4, const std::string &font = \"\")" + "def": "image::Image *draw_string(int x, int y, const std::string &textstring, const image::Color &color = image::COLOR_WHITE, float scale = 1, int thickness = -1,\n bool wrap = true, int wrap_space = 4, const std::string &font = \"\")" }, - "draw_arrow": { + "draw_cross": { "type": "func", - "name": "draw_arrow", + "name": "draw_cross", "doc": { - "brief": "Draw arrow on image", + "brief": "Draw cross on image", "param": { - "x0": "start coordinate of the arrow x0", - "y0": "start coordinate of the arrow y0", - "x1": "end coordinate of the arrow x1", - "y1": "end coordinate of the arrow y1", + "x": "cross center point's coordinate x", + "y": "cross center point's coordinate y", "color": "cross color @see image::Color", + "size": "how long the lines of the cross extend, by default(value is 5). So the line length is `2 * size + thickness`", "thickness": "cross thickness(line width), by default(value is 1)" }, - "return": "this image object self", - "maixpy": "maix.image.Image.draw_arrow", - "py_doc": "Draw arrow on image\n\nArgs:\n - x0: start coordinate of the arrow x0\n - y0: start coordinate of the arrow y0\n - x1: end coordinate of the arrow x1\n - y1: end coordinate of the arrow y1\n - color: cross color @see image::Color\n - thickness: cross thickness(line width), by default(value is 1)\n\n\nReturns: this image object self\n" + "maixpy": "maix.image.Image.draw_cross", + "py_doc": "Draw cross on image\n\nArgs:\n - x: cross center point's coordinate x\n - y: cross center point's coordinate y\n - color: cross color @see image::Color\n - size: how long the lines of the cross extend, by default(value is 5). So the line length is `2 * size + thickness`\n - thickness: cross thickness(line width), by default(value is 1)\n" }, "args": [ [ "int", - "x0", + "x", null ], [ "int", - "y0", + "y", null ], [ - "int", - "x1", + "const image::Color &", + "color", null ], [ "int", - "y1", - null + "size", + "5" + ], + [ + "int", + "thickness", + "1" + ] + ], + "ret_type": "image::Image*", + "static": false, + "def": "image::Image *draw_cross(int x, int y, const image::Color &color, int size = 5, int thickness = 1)" + }, + "draw_arrow": { + "type": "func", + "name": "draw_arrow", + "doc": { + "brief": "Draw arrow on image", + "param": { + "x0": "start coordinate of the arrow x0", + "y0": "start coordinate of the arrow y0", + "x1": "end coordinate of the arrow x1", + "y1": "end coordinate of the arrow y1", + "color": "cross color @see image::Color", + "thickness": "cross thickness(line width), by default(value is 1)" + }, + "return": "this image object self", + "maixpy": "maix.image.Image.draw_arrow", + "py_doc": "Draw arrow on image\n\nArgs:\n - x0: start coordinate of the arrow x0\n - y0: start coordinate of the arrow y0\n - x1: end coordinate of the arrow x1\n - y1: end coordinate of the arrow y1\n - color: cross color @see image::Color\n - thickness: cross thickness(line width), by default(value is 1)\n\n\nReturns: this image object self\n" + }, + "args": [ + [ + "int", + "x0", + null + ], + [ + "int", + "y0", + null + ], + [ + "int", + "x1", + null + ], + [ + "int", + "y1", + null ], [ "const image::Color &", @@ -8521,6 +8799,53 @@ "static": false, "def": "image::Image *load(const char *path, image::Format format = image::Format::FMT_RGB888)" }, + "from_bytes": { + "type": "func", + "name": "from_bytes", + "doc": { + "brief": "Create image from bytes", + "param": { + "width": "image width", + "height": "image height", + "format": "image format", + "data": "image data, if data is None, will malloc memory for image data\nIf the image is in jpeg format, data must be filled in.", + "copy": "if true and data is not None, will copy data to new buffer, else will use data directly. default is true to avoid memory leak.\nUse it carefully!!!" + }, + "return": "Image object", + "maixpy": "maix.image.from_bytes", + "py_doc": "Create image from bytes\n\nArgs:\n - width: image width\n - height: image height\n - format: image format\n - data: image data, if data is None, will malloc memory for image data\nIf the image is in jpeg format, data must be filled in.\n - copy: if true and data is not None, will copy data to new buffer, else will use data directly. default is true to avoid memory leak.\nUse it carefully!!!\n\n\nReturns: Image object\n" + }, + "args": [ + [ + "int", + "width", + null + ], + [ + "int", + "height", + null + ], + [ + "image::Format", + "format", + null + ], + [ + "Bytes *", + "data", + null + ], + [ + "bool", + "copy", + "true" + ] + ], + "ret_type": "image::Image*", + "static": false, + "def": "image::Image *from_bytes(int width, int height, image::Format format, Bytes *data, bool copy = true)" + }, "load_font": { "type": "func", "name": "load_font", @@ -8593,24 +8918,24 @@ "static": false, "def": "std::vector *fonts()" }, - "text_size": { + "string_size": { "type": "func", - "name": "text_size", + "name": "string_size", "doc": { "brief": "Get text rendered width and height", "param": { - "text": "text content", + "string": "text content", "scale": "font scale, by default(value is 1)", "thickness": "text thickness(line width), by default(value is 1)" }, "return": "text rendered width and height, [width, height]", - "maixpy": "maix.image.text_size", - "py_doc": "Get text rendered width and height\n\nArgs:\n - text: text content\n - scale: font scale, by default(value is 1)\n - thickness: text thickness(line width), by default(value is 1)\n\n\nReturns: text rendered width and height, [width, height]\n" + "maixpy": "maix.image.string_size", + "py_doc": "Get text rendered width and height\n\nArgs:\n - string: text content\n - scale: font scale, by default(value is 1)\n - thickness: text thickness(line width), by default(value is 1)\n\n\nReturns: text rendered width and height, [width, height]\n" }, "args": [ [ "std::string", - "text", + "string", null ], [ @@ -8631,7 +8956,7 @@ ], "ret_type": "image::Size", "static": false, - "def": "image::Size text_size(std::string text, float scale = 1, int thickness = 1, const std::string &font = \"\")" + "def": "image::Size string_size(std::string string, float scale = 1, int thickness = 1, const std::string &font = \"\")" }, "cv2image": { "type": "func", @@ -9288,6 +9613,144 @@ "ret_type": "err::Err", "static": false, "def": "err::Err show_colorbar(bool enable)" + }, + "set_resolution": { + "type": "func", + "name": "set_resolution", + "doc": { + "brief": "Set camera resolution", + "param": { + "width": "new width", + "height": "new height" + }, + "maixpy": "maix.camera.Camera.set_resolution", + "py_doc": "Set camera resolution\n\nArgs:\n - width: new width\n - height: new height\n" + }, + "args": [ + [ + "int", + "width", + null + ], + [ + "int", + "height", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_resolution(int width, int height)" + }, + "set_hmirror": { + "type": "func", + "name": "set_hmirror", + "doc": { + "brief": "Set camera mirror", + "param": { + "en": "enable/disable mirror" + }, + "maixpy": "maix.camera.Camera.set_hmirror", + "py_doc": "Set camera mirror\n\nArgs:\n - en: enable/disable mirror\n" + }, + "args": [ + [ + "bool", + "en", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_hmirror(bool en)" + }, + "set_vflip": { + "type": "func", + "name": "set_vflip", + "doc": { + "brief": "Set camera flip", + "param": { + "en": "enable/disable flip" + }, + "maixpy": "maix.camera.Camera.set_vflip", + "py_doc": "Set camera flip\n\nArgs:\n - en: enable/disable flip\n" + }, + "args": [ + [ + "bool", + "en", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_vflip(bool en)" + }, + "set_luma": { + "type": "func", + "name": "set_luma", + "doc": { + "brief": "Set camera constrast", + "param": { + "int": "constrast value" + }, + "maixpy": "maix.camera.Camera.set_luma", + "py_doc": "Set camera constrast\n\nArgs:\n - int: constrast value\n" + }, + "args": [ + [ + "int", + "value", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_luma(int value)" + }, + "set_constrast": { + "type": "func", + "name": "set_constrast", + "doc": { + "brief": "Set camera constrast", + "param": { + "int": "constrast value" + }, + "maixpy": "maix.camera.Camera.set_constrast", + "py_doc": "Set camera constrast\n\nArgs:\n - int: constrast value\n" + }, + "args": [ + [ + "int", + "value", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_constrast(int value)" + }, + "set_saturation": { + "type": "func", + "name": "set_saturation", + "doc": { + "brief": "Set camera saturation", + "param": { + "int": "saturation value" + }, + "maixpy": "maix.camera.Camera.set_saturation", + "py_doc": "Set camera saturation\n\nArgs:\n - int: saturation value\n" + }, + "args": [ + [ + "int", + "value", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_saturation(int value)" } }, "def": "class Camera" @@ -9580,6 +10043,72 @@ "ret_type": "std::string", "static": false, "def": "std::string device()" + }, + "set_backlight": { + "type": "func", + "name": "set_backlight", + "doc": { + "brief": "Set display backlight", + "param": { + "value": "backlight value, float type, range is [0, 100]" + }, + "maixpy": "maix.display.Display.set_backlight", + "py_doc": "Set display backlight\n\nArgs:\n - value: backlight value, float type, range is [0, 100]\n" + }, + "args": [ + [ + "float", + "value", + null + ] + ], + "ret_type": "void", + "static": false, + "def": "void set_backlight(float value)" + }, + "set_hmirror": { + "type": "func", + "name": "set_hmirror", + "doc": { + "brief": "Set display mirror", + "param": { + "en": "enable/disable mirror" + }, + "maixpy": "maix.display.Display.set_hmirror", + "py_doc": "Set display mirror\n\nArgs:\n - en: enable/disable mirror\n" + }, + "args": [ + [ + "bool", + "en", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_hmirror(bool en)" + }, + "set_vflip": { + "type": "func", + "name": "set_vflip", + "doc": { + "brief": "Set display flip", + "param": { + "en": "enable/disable flip" + }, + "maixpy": "maix.display.Display.set_vflip", + "py_doc": "Set display flip\n\nArgs:\n - en: enable/disable flip\n" + }, + "args": [ + [ + "bool", + "en", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err set_vflip(bool en)" } }, "def": "class Display" @@ -9975,6 +10504,40 @@ "static": false, "def": "bool islink(const std::string &path)" }, + "symlink": { + "type": "func", + "name": "symlink", + "doc": { + "brief": "Create soft link", + "param": { + "src": "real file path", + "link": "link file path", + "force": "force link, if already have link file, will delet it first then create." + }, + "maixpy": "maix.fs.symlink", + "py_doc": "Create soft link\n\nArgs:\n - src: real file path\n - link: link file path\n - force: force link, if already have link file, will delet it first then create.\n" + }, + "args": [ + [ + "const std::string &", + "src", + null + ], + [ + "const std::string &", + "link", + null + ], + [ + "bool", + "force", + "false" + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err symlink(const std::string &src, const std::string &link, bool force = false)" + }, "exists": { "type": "func", "name": "exists", @@ -10276,9 +10839,9 @@ "recursive": "if true, list recursively, otherwise, only list current directory, default is false", "full_path": "if true, return full path, otherwise, only return basename, default is false" }, - "return": "files list if success, nullptr if failed", + "return": "files list if success, nullptr if failed, you should manually delete it in C++.", "maixpy": "maix.fs.listdir", - "py_doc": "List files in directory\n\nArgs:\n - path: path to list\n - recursive: if true, list recursively, otherwise, only list current directory, default is false\n - full_path: if true, return full path, otherwise, only return basename, default is false\n\n\nReturns: files list if success, nullptr if failed\n" + "py_doc": "List files in directory\n\nArgs:\n - path: path to list\n - recursive: if true, list recursively, otherwise, only list current directory, default is false\n - full_path: if true, return full path, otherwise, only return basename, default is false\n\n\nReturns: files list if success, nullptr if failed, you should manually delete it in C++.\n" }, "args": [ [ @@ -10784,6 +11347,32 @@ "ret_type": "std::vector>", "static": false, "def": "std::vector> disk_partitions(bool only_disk = true)" + }, + "poweroff": { + "type": "func", + "name": "poweroff", + "doc": { + "brief": "Power off device", + "maixpy": "maix.sys.poweroff", + "py_doc": "Power off device" + }, + "args": [], + "ret_type": "void", + "static": false, + "def": "void poweroff()" + }, + "reboot": { + "type": "func", + "name": "reboot", + "doc": { + "brief": "Power off device and power on", + "maixpy": "maix.sys.reboot", + "py_doc": "Power off device and power on" + }, + "args": [], + "ret_type": "void", + "static": false, + "def": "void reboot()" } }, "auto_add": true @@ -13233,10 +13822,45 @@ }, "auto_add": true }, - "nn": { + "util": { "type": "module", "doc": { - "brief": "maix.nn module" + "brief": "maix.util module" + }, + "members": { + "disable_kernel_debug": { + "type": "func", + "name": "disable_kernel_debug", + "doc": { + "brief": "disable the kernel debug", + "maixpy": "maix.util.disable_kernel_debug", + "py_doc": "disable the kernel debug" + }, + "args": [], + "ret_type": "void", + "static": false, + "def": "void disable_kernel_debug()" + }, + "enable_kernel_debug": { + "type": "func", + "name": "enable_kernel_debug", + "doc": { + "brief": "disable the kernel debug", + "maixpy": "maix.util.enable_kernel_debug", + "py_doc": "disable the kernel debug" + }, + "args": [], + "ret_type": "void", + "static": false, + "def": "void enable_kernel_debug()" + } + }, + "auto_add": true + }, + "nn": { + "type": "module", + "doc": { + "brief": "maix.nn module" }, "members": { "YOLOv5": { @@ -14336,13 +14960,13 @@ "type": "func", "name": "WDT", "doc": { - "brief": "WDT constructor", + "brief": "WDT constructor, after construct, the wdt will auto start.", "param": { "id": "direction [in], id of wdt, int type", - "feed_ms": "direction [in], feed ms of wdt, int type" + "feed_ms": "direction [in], feed interval, int type, unit is ms, you must feed wdt in this interval, or system will restart." }, "maixpy": "maix.peripheral.wdt.WDT.__init__", - "py_doc": "WDT constructor\n\nArgs:\n - id: direction [in], id of wdt, int type\n - feed_ms: direction [in], feed ms of wdt, int type\n" + "py_doc": "WDT constructor, after construct, the wdt will auto start.\n\nArgs:\n - id: direction [in], id of wdt, int type\n - feed_ms: direction [in], feed interval, int type, unit is ms, you must feed wdt in this interval, or system will restart.\n" }, "args": [ [ @@ -14391,10 +15015,9 @@ "type": "func", "name": "restart", "doc": { - "brief": "restart wdt", - "attention": "restart WDT after stop it", + "brief": "restart wdt, stop and start watchdog timer.", "maixpy": "maix.peripheral.wdt.WDT.restart", - "py_doc": "restart wdt" + "py_doc": "restart wdt, stop and start watchdog timer." }, "args": [], "ret_type": "int", @@ -14428,20 +15051,20 @@ "doc": { "brief": "PWM constructor", "param": { - "pin": "direction [in], pwm pin. int type.", + "pin": "direction [in], pwm id, int type, like 0, 1, 2 etc.", "freq": "direction [in], pwm frequency, unit: Hz. int type. default is 1000", - "duty": "direction [in], pwm duty. int type. range is [0, 100], default is -1, means set duty to 50\nnote: you can not set duty and duty_val at the same time", - "duty_val": "direction [in], pwm duty value, unit: us. int type. default is -1, means set duty_val to (1000000000 / freq) * 0.5\nnote: you can not set duty and duty_val at the same time", - "align": "direction [in], pwm align. int type. default is -1", - "sync": "direction [in], pwm sync. int type. default is false" + "duty": "direction [in], pwm duty. double type. range is [0, 100], default is 0.", + "enable": "direction [in], enable pwm output right now. bool type. default is true, if false, you need to call enable() to enable pwm output.", + "duty_val": "direction [in], pwm duty value, int type. default -1 means not set and auto calculate by freq and duty.\nThis arg directly set pwm duty value, if set, will ignore duty arg.\nduty_val = duty / 100 * T_ns, T_ns = 1 / freq * 1000000000." }, + "throw": "If args error or init pwm failed, will throw err::Exception", "maixpy": "maix.peripheral.pwm.PWM.__init__", - "py_doc": "PWM constructor\n\nArgs:\n - pin: direction [in], pwm pin. int type.\n - freq: direction [in], pwm frequency, unit: Hz. int type. default is 1000\n - duty: direction [in], pwm duty. int type. range is [0, 100], default is -1, means set duty to 50\nnote: you can not set duty and duty_val at the same time\n - duty_val: direction [in], pwm duty value, unit: us. int type. default is -1, means set duty_val to (1000000000 / freq) * 0.5\nnote: you can not set duty and duty_val at the same time\n - align: direction [in], pwm align. int type. default is -1\n - sync: direction [in], pwm sync. int type. default is false\n" + "py_doc": "PWM constructor\n\nArgs:\n - pin: direction [in], pwm id, int type, like 0, 1, 2 etc.\n - freq: direction [in], pwm frequency, unit: Hz. int type. default is 1000\n - duty: direction [in], pwm duty. double type. range is [0, 100], default is 0.\n - enable: direction [in], enable pwm output right now. bool type. default is true, if false, you need to call enable() to enable pwm output.\n - duty_val: direction [in], pwm duty value, int type. default -1 means not set and auto calculate by freq and duty.\nThis arg directly set pwm duty value, if set, will ignore duty arg.\nduty_val = duty / 100 * T_ns, T_ns = 1 / freq * 1000000000.\n" }, "args": [ [ "int", - "pin", + "id", null ], [ @@ -14450,52 +15073,47 @@ "1000" ], [ - "int", + "double", "duty", - "-1" + "0" ], [ - "int", - "duty_val", - "-1" + "bool", + "enable", + "true" ], [ "int", - "align", + "duty_val", "-1" - ], - [ - "bool", - "sync", - "false" ] ], "ret_type": null, "static": false, - "def": "PWM(int pin, int freq = 1000, int duty = -1, int duty_val = -1, int align = -1, bool sync = false)" + "def": "PWM(int id, int freq = 1000, double duty = 0, bool enable = true, int duty_val = -1)" }, "duty": { "type": "func", "name": "duty", "doc": { - "brief": "set pwm duty", + "brief": "get or set pwm duty", "param": { - "duty": "direction [in], pwm duty. int type. default is -1\nduty = [0, 100], set duty\nduty == -1 or not set, return current duty" + "duty": "direction [in], pwm duty, double type, value in [0, 100], default -1 means only read." }, - "return": "int type\nwhen get duty, return current duty\nwhen set duty, if success, return 0; else return -1", + "return": "current duty, float type, if set and set failed will return -err::Err", "maixpy": "maix.peripheral.pwm.PWM.duty", - "py_doc": "set pwm duty\n\nArgs:\n - duty: direction [in], pwm duty. int type. default is -1\nduty = [0, 100], set duty\nduty == -1 or not set, return current duty\n\n\nReturns: int type\nwhen get duty, return current duty\nwhen set duty, if success, return 0; else return -1\n" + "py_doc": "get or set pwm duty\n\nArgs:\n - duty: direction [in], pwm duty, double type, value in [0, 100], default -1 means only read.\n\n\nReturns: current duty, float type, if set and set failed will return -err::Err\n" }, "args": [ [ - "int", + "double", "duty", "-1" ] ], - "ret_type": "int", + "ret_type": "double", "static": false, - "def": "int duty(int duty = -1)" + "def": "double duty(double duty = -1)" }, "duty_val": { "type": "func", @@ -14503,11 +15121,11 @@ "doc": { "brief": "set pwm duty value", "param": { - "duty_val": "direction [in], pwm duty value. int type. default is -1\nduty_val = [0, 65535], set duty_val\nduty_val == -1 or not set, return current duty_val" + "duty_val": "direction [in], pwm duty value. int type. default is -1\nduty_val > 0 means set duty_val\nduty_val == -1 or not set, return current duty_val" }, - "return": "int type\nwhen get duty_val, return current duty_val\nwhen set duty_val, if success, return 0; else return -1", + "return": "int type\nwhen get duty_val, return current duty_val, else return -err::Err code.", "maixpy": "maix.peripheral.pwm.PWM.duty_val", - "py_doc": "set pwm duty value\n\nArgs:\n - duty_val: direction [in], pwm duty value. int type. default is -1\nduty_val = [0, 65535], set duty_val\nduty_val == -1 or not set, return current duty_val\n\n\nReturns: int type\nwhen get duty_val, return current duty_val\nwhen set duty_val, if success, return 0; else return -1\n" + "py_doc": "set pwm duty value\n\nArgs:\n - duty_val: direction [in], pwm duty value. int type. default is -1\nduty_val > 0 means set duty_val\nduty_val == -1 or not set, return current duty_val\n\n\nReturns: int type\nwhen get duty_val, return current duty_val, else return -err::Err code.\n" }, "args": [ [ @@ -14524,13 +15142,13 @@ "type": "func", "name": "freq", "doc": { - "brief": "set pwm frequency", + "brief": "get or set pwm frequency", "param": { "freq": "direction [in], pwm frequency. int type. default is -1\nfreq >= 0, set freq\nfreq == -1 or not set, return current freq" }, - "return": "int type\nwhen get freq, return current freq\nwhen set freq, if success, return 0; else return -1", + "return": "int type, current freq, if set and set failed will return -err::Err", "maixpy": "maix.peripheral.pwm.PWM.freq", - "py_doc": "set pwm frequency\n\nArgs:\n - freq: direction [in], pwm frequency. int type. default is -1\nfreq >= 0, set freq\nfreq == -1 or not set, return current freq\n\n\nReturns: int type\nwhen get freq, return current freq\nwhen set freq, if success, return 0; else return -1\n" + "py_doc": "get or set pwm frequency\n\nArgs:\n - freq: direction [in], pwm frequency. int type. default is -1\nfreq >= 0, set freq\nfreq == -1 or not set, return current freq\n\n\nReturns: int type, current freq, if set and set failed will return -err::Err\n" }, "args": [ [ @@ -14548,23 +15166,42 @@ "name": "enable", "doc": { "brief": "set pwm enable", - "param": { - "enable": "direction [in], pwm enable. int type. default is -1\nenable == 0, disable pwm\nenable == 1, enable pwm\nenable == -1 or not set, return current enable value" - }, - "return": "int type\nwhen get enable, return current enable value\nwhen set enable, if success, return 0; else return -1", + "return": "err::Err type, err.Err.ERR_NONE means success", "maixpy": "maix.peripheral.pwm.PWM.enable", - "py_doc": "set pwm enable\n\nArgs:\n - enable: direction [in], pwm enable. int type. default is -1\nenable == 0, disable pwm\nenable == 1, enable pwm\nenable == -1 or not set, return current enable value\n\n\nReturns: int type\nwhen get enable, return current enable value\nwhen set enable, if success, return 0; else return -1\n" + "py_doc": "set pwm enable\n\nReturns: err::Err type, err.Err.ERR_NONE means success\n" }, - "args": [ - [ - "int", - "enable", - "-1" - ] - ], - "ret_type": "int", + "args": [], + "ret_type": "err::Err", + "static": false, + "def": "err::Err enable()" + }, + "disable": { + "type": "func", + "name": "disable", + "doc": { + "brief": "set pwm disable", + "return": "err::Err type, err.Err.ERR_NONE means success", + "maixpy": "maix.peripheral.pwm.PWM.disable", + "py_doc": "set pwm disable\n\nReturns: err::Err type, err.Err.ERR_NONE means success\n" + }, + "args": [], + "ret_type": "err::Err", + "static": false, + "def": "err::Err disable()" + }, + "is_enabled": { + "type": "func", + "name": "is_enabled", + "doc": { + "brief": "get pwm enable status", + "return": "bool type, true means enable, false means disable", + "maixpy": "maix.peripheral.pwm.PWM.is_enabled", + "py_doc": "get pwm enable status\n\nReturns: bool type, true means enable, false means disable\n" + }, + "args": [], + "ret_type": "bool", "static": false, - "def": "int enable(int enable = -1)" + "def": "bool is_enabled()" } }, "def": "class PWM" @@ -14578,109 +15215,69 @@ "brief": "maix.peripheral.gpio module" }, "members": { - "IN": { - "type": "var", - "name": "", - "doc": { - "brief": "GPIO input mode", - "maixpy": "maix.peripheral.gpio.IN", - "py_doc": "GPIO input mode" - }, - "value": "0x01", - "static": false, - "readonly": true, - "def": "const int IN = 0x01" - }, - "OUT": { - "type": "var", - "name": "", - "doc": { - "brief": "GPIO output mode", - "maixpy": "maix.peripheral.gpio.OUT", - "py_doc": "GPIO output mode" - }, - "value": "0x2", - "static": false, - "readonly": true, - "def": "const int OUT = 0x2" - }, - "OUT_OD": { - "type": "var", - "name": "", - "doc": { - "brief": "GPIO output open drain mode", - "maixpy": "maix.peripheral.gpio.OUT_OD", - "py_doc": "GPIO output open drain mode" - }, - "value": "0x3", - "static": false, - "readonly": true, - "def": "const int OUT_OD = 0x3" - }, - "PULL_NONE": { - "type": "var", - "name": "", - "doc": { - "brief": "GPIO pull none mode", - "maixpy": "maix.peripheral.gpio.PULL_NONE", - "py_doc": "GPIO pull none mode" - }, - "value": "0x4", - "static": false, - "readonly": true, - "def": "const int PULL_NONE = 0x4" - }, - "PULL_UP": { - "type": "var", - "name": "", - "doc": { - "brief": "GPIO pull up mode", - "maixpy": "maix.peripheral.gpio.PULL_UP", - "py_doc": "GPIO pull up mode" - }, - "value": "0x5", - "static": false, - "readonly": true, - "def": "const int PULL_UP = 0x5" - }, - "PULL_DOWN": { - "type": "var", - "name": "", - "doc": { - "brief": "GPIO pull down mode", - "maixpy": "maix.peripheral.gpio.PULL_DOWN", - "py_doc": "GPIO pull down mode" - }, - "value": "0x6", - "static": false, - "readonly": true, - "def": "const int PULL_DOWN = 0x6" - }, - "OFF": { - "type": "var", - "name": "", + "Mode": { + "type": "enum", + "name": "Mode", "doc": { - "brief": "GPIO off", - "maixpy": "maix.peripheral.gpio.OFF", - "py_doc": "GPIO off" + "brief": "GPIO mode", + "maixpy": "maix.peripheral.gpio.Mode", + "py_doc": "GPIO mode" }, - "value": "0x0", - "static": false, - "readonly": true, - "def": "const int OFF = 0x0" + "values": [ + [ + "IN", + "0x01", + "input mode" + ], + [ + "OUT", + "0x02", + "output mode" + ], + [ + "OUT_OD", + "0x03", + "output open drain mode" + ], + [ + "MODE_MAX", + "", + "" + ] + ], + "def": "enum Mode\n {\n IN = 0x01, // input mode\n OUT = 0x02, // output mode\n OUT_OD = 0x03, // output open drain mode\n MODE_MAX\n }" }, - "ON": { - "type": "var", - "name": "", + "Pull": { + "type": "enum", + "name": "Pull", "doc": { - "brief": "GPIO on", - "maixpy": "maix.peripheral.gpio.ON", - "py_doc": "GPIO on" + "brief": "GPIO pull mode", + "maixpy": "maix.peripheral.gpio.Pull", + "py_doc": "GPIO pull mode" }, - "value": "0x1", - "static": false, - "readonly": true, - "def": "const int ON = 0x1" + "values": [ + [ + "PULL_NONE", + "0x00", + "pull none mode" + ], + [ + "PULL_UP", + "0x01", + "pull up mode" + ], + [ + "PULL_DOWN", + "0x02", + "pull down mode" + ], + [ + "PULL_MAX", + "", + "" + ] + ], + "def": "enum Pull\n {\n PULL_NONE = 0x00, // pull none mode\n PULL_UP = 0x01, // pull up mode\n PULL_DOWN = 0x02, // pull down mode\n PULL_MAX\n }" }, "GPIO": { "type": "class", @@ -14697,45 +15294,46 @@ "doc": { "brief": "GPIO constructor", "param": { - "pin": "direction [in], gpio pin. int type.", - "mode": "direction [in], gpio mode. int type. default is -1, means gpio.IN\noption:\nmode = gpio.IN, means input mode\nmode = gpio.OUT, means output mode\nmode = gpio.OUT_OD, means output open drain mode", - "pull": "direction [in], gpio pull. int type. default is determined by actual board.\noption:\npull = gpio.PULL_NONE, means pull none mode\npull = gpio.PULL_UP, means pull up mode\npull = gpio.PULL_DOWN, means pull down mode" + "pin": "direction [in], gpio pin name, string type the same as board's pin name, e.g. \"B14\" or \"GPIOB14\", or number string like \"10\" if board no gpiochipe name.", + "mode": "direction [in], gpio mode. gpio.Mode type, default is gpio.Mode.IN (input) mode.", + "pull": "direction [in], gpio pull. gpio.Pull type, default is gpio.Pull.PULL_NONE (pull none) mode.\nFor input mode, this will set gpio default status(value), if set to gpio.Pull.PULL_NONE, gpio value will be floating.\nFor output mode, this will set gpio default status(value), if set to gpio.Pull.PULL_UP, gpio value will be 1, else 0." }, + "throw": "err::Exception if open gpio device failed.", "maixpy": "maix.peripheral.gpio.GPIO.__init__", - "py_doc": "GPIO constructor\n\nArgs:\n - pin: direction [in], gpio pin. int type.\n - mode: direction [in], gpio mode. int type. default is -1, means gpio.IN\noption:\nmode = gpio.IN, means input mode\nmode = gpio.OUT, means output mode\nmode = gpio.OUT_OD, means output open drain mode\n - pull: direction [in], gpio pull. int type. default is determined by actual board.\noption:\npull = gpio.PULL_NONE, means pull none mode\npull = gpio.PULL_UP, means pull up mode\npull = gpio.PULL_DOWN, means pull down mode\n" + "py_doc": "GPIO constructor\n\nArgs:\n - pin: direction [in], gpio pin name, string type the same as board's pin name, e.g. \"B14\" or \"GPIOB14\", or number string like \"10\" if board no gpiochipe name.\n - mode: direction [in], gpio mode. gpio.Mode type, default is gpio.Mode.IN (input) mode.\n - pull: direction [in], gpio pull. gpio.Pull type, default is gpio.Pull.PULL_NONE (pull none) mode.\nFor input mode, this will set gpio default status(value), if set to gpio.Pull.PULL_NONE, gpio value will be floating.\nFor output mode, this will set gpio default status(value), if set to gpio.Pull.PULL_UP, gpio value will be 1, else 0.\n" }, "args": [ [ - "int", + "std::string", "pin", null ], [ - "int", + "gpio::Mode", "mode", - "-1" + "gpio::Mode::IN" ], [ - "int", + "gpio::Pull", "pull", - "-1" + "gpio::Pull::PULL_NONE" ] ], "ret_type": null, "static": false, - "def": "GPIO(int pin, int mode = -1, int pull = -1)" + "def": "GPIO(std::string pin, gpio::Mode mode = gpio::Mode::IN, gpio::Pull pull = gpio::Pull::PULL_NONE)" }, "value": { "type": "func", "name": "value", "doc": { - "brief": "write/read gpio value", + "brief": "set and get gpio value", "param": { - "value": "direction [in], gpio value. int type.\nvalue == 0, means write gpio to low level\nvalue == 1, means write gpio to high level" + "value": "direction [in], gpio value. int type.\n0, means write gpio to low level\n1, means write gpio to high level\n-1, means read gpio value, not set" }, - "return": "int type\nif success, return 0; else return -1", + "return": "int type, return gpio value, can be 0 or 1", "maixpy": "maix.peripheral.gpio.GPIO.value", - "py_doc": "write/read gpio value\n\nArgs:\n - value: direction [in], gpio value. int type.\nvalue == 0, means write gpio to low level\nvalue == 1, means write gpio to high level\n\n\nReturns: int type\nif success, return 0; else return -1\n" + "py_doc": "set and get gpio value\n\nArgs:\n - value: direction [in], gpio value. int type.\n0, means write gpio to low level\n1, means write gpio to high level\n-1, means read gpio value, not set\n\n\nReturns: int type, return gpio value, can be 0 or 1\n" }, "args": [ [ @@ -14748,76 +15346,13 @@ "static": false, "def": "int value(int value = -1)" }, - "write": { - "type": "func", - "name": "write", - "doc": { - "brief": "get gpio write", - "param": { - "value": "direction [in], gpio value. int type.\nvalue == 0, means write gpio to low level\nvalue == 1, means write gpio to high level\nvalue == -1 or not set, means read gpio value" - }, - "return": "int type\nwhen read gpio value, return gpio value\nwhen write gpio value, if success, return 0; else return -1", - "maixpy": "maix.peripheral.gpio.GPIO.write", - "py_doc": "get gpio write\n\nArgs:\n - value: direction [in], gpio value. int type.\nvalue == 0, means write gpio to low level\nvalue == 1, means write gpio to high level\nvalue == -1 or not set, means read gpio value\n\n\nReturns: int type\nwhen read gpio value, return gpio value\nwhen write gpio value, if success, return 0; else return -1\n" - }, - "args": [ - [ - "int", - "value", - null - ] - ], - "ret_type": "int", - "static": false, - "def": "int write(int value)" - }, - "read": { - "type": "func", - "name": "read", - "doc": { - "brief": "get gpio read", - "return": "int type\nreturn 0, means gpio is low level\nreturn 1, means gpio is high level\nreturn other, means error", - "maixpy": "maix.peripheral.gpio.GPIO.read", - "py_doc": "get gpio read\n\nReturns: int type\nreturn 0, means gpio is low level\nreturn 1, means gpio is high level\nreturn other, means error\n" - }, - "args": [], - "ret_type": "int", - "static": false, - "def": "int read()" - }, - "on": { - "type": "func", - "name": "on", - "doc": { - "brief": "set gpio on", - "maixpy": "maix.peripheral.gpio.GPIO.on", - "py_doc": "set gpio on" - }, - "args": [], - "ret_type": "void", - "static": false, - "def": "void on()" - }, - "off": { - "type": "func", - "name": "off", - "doc": { - "brief": "set gpio off", - "maixpy": "maix.peripheral.gpio.GPIO.off", - "py_doc": "set gpio off" - }, - "args": [], - "ret_type": "void", - "static": false, - "def": "void off()" - }, "high": { "type": "func", "name": "high", "doc": { - "brief": "set gpio high", + "brief": "set gpio high (value to 1)", "maixpy": "maix.peripheral.gpio.GPIO.high", - "py_doc": "set gpio high" + "py_doc": "set gpio high (value to 1)" }, "args": [], "ret_type": "void", @@ -14828,9 +15363,9 @@ "type": "func", "name": "low", "doc": { - "brief": "set gpio low", + "brief": "set gpio low (value to 0)", "maixpy": "maix.peripheral.gpio.GPIO.low", - "py_doc": "set gpio low" + "py_doc": "set gpio low (value to 0)" }, "args": [], "ret_type": "void", @@ -14862,87 +15397,27 @@ "brief": "maix.peripheral.spi module" }, "members": { - "MASTER_MODE": { - "type": "var", - "name": "", - "doc": { - "brief": "spi master mode", - "maixpy": "maix.peripheral.spi.MASTER_MODE", - "py_doc": "spi master mode" - }, - "value": "0x1", - "static": false, - "readonly": true, - "def": "const int MASTER_MODE = 0x1" - }, - "SLAVE_MODE": { - "type": "var", - "name": "", - "doc": { - "brief": "spi slave mode", - "maixpy": "maix.peripheral.spi.SLAVE_MODE", - "py_doc": "spi slave mode" - }, - "value": "0x2", - "static": false, - "readonly": true, - "def": "const int SLAVE_MODE = 0x2" - }, - "CLOCK_MODE_0": { - "type": "var", - "name": "", - "doc": { - "brief": "clock mode 0", - "attention": "CPOL = 0, CPHA = 0\nmeans the idle level of the clock is low, data is captured on the first edge of the SPI clock cycle", - "maixpy": "maix.peripheral.spi.CLOCK_MODE_0", - "py_doc": "clock mode 0" - }, - "value": "0x0", - "static": false, - "readonly": true, - "def": "const int CLOCK_MODE_0 = 0x0" - }, - "CLOCK_MODE_1": { - "type": "var", - "name": "", - "doc": { - "brief": "clock mode 1", - "attention": "CPOL = 0, CPHA = 1\nmeans the idle level of the clock is low, data is captured on the second edge of the SPI clock cycle", - "maixpy": "maix.peripheral.spi.CLOCK_MODE_1", - "py_doc": "clock mode 1" - }, - "value": "0x1", - "static": false, - "readonly": true, - "def": "const int CLOCK_MODE_1 = 0x1" - }, - "CLOCK_MODE_2": { - "type": "var", - "name": "", - "doc": { - "brief": "clock mode 2", - "attention": "CPOL = 1, CPHA = 0\nmeans the idle level of the clock is high, data is captured on the first edge of the SPI clock cycle", - "maixpy": "maix.peripheral.spi.CLOCK_MODE_2", - "py_doc": "clock mode 2" - }, - "value": "0x2", - "static": false, - "readonly": true, - "def": "const int CLOCK_MODE_2 = 0x2" - }, - "CLOCK_MODE_3": { - "type": "var", - "name": "", + "Mode": { + "type": "enum", + "name": "Mode", "doc": { - "brief": "clock mode 3", - "attention": "CPOL = 1, CPHA = 1\nmeans the idle level of the clock is high, data is captured on the second edge of the SPI clock cycle", - "maixpy": "maix.peripheral.spi.CLOCK_MODE_3", - "py_doc": "clock mode 3" + "brief": "SPI mode enum", + "maixpy": "maix.peripheral.spi.Mode", + "py_doc": "SPI mode enum" }, - "value": "0x3", - "static": false, - "readonly": true, - "def": "const int CLOCK_MODE_3 = 0x3" + "values": [ + [ + "MASTER", + "0x0", + "spi master mode" + ], + [ + "SLAVE", + "0x1", + "spi slave mode" + ] + ], + "def": "enum Mode\n {\n MASTER = 0x0, // spi master mode\n SLAVE = 0x1, // spi slave mode\n }" }, "SPI": { "type": "class", @@ -14959,18 +15434,17 @@ "doc": { "brief": "SPI constructor", "param": { - "id": "direction [in], id of spi, int type", - "sclk": "direction [in], sclk pin of spi, int type", - "mosi": "direction [in], mosi pin of spi, int type", - "miso": "direction [in], miso pin of spi, int type", - "cs": "direction [in], cs pin of spi, int type", + "id": "direction [in], spi bus id, int type", "freq": "direction [in], freq of spi, int type", - "use_soft_cs": "direction [in], use_soft_cs of spi, int type\nthis param is valid in master mode, when use_soft_cs = 1, the\ncs pin must be operated manually when sending data. default is -1, means use hardware cs", - "mode": "direction [in], mode of spi, int type\noption:\nmode = spi.MASTER, means use master mode\nmode = spi.SLAVE, means use slave mode\ndefualt is -1, means use spi.MASTER mode", - "clock_mode": "direction [in], clock_mode of spi, int type,default is -1\noption:\nclock_mode = spi.CLOCK_MODE_0, @see CLOCK_MODE_0\nclock_mode = spi.CLOCK_MODE_1, @see CLOCK_MODE_1\nclock_mode = spi.CLOCK_MODE_2, @see CLOCK_MODE_2\nclock_mode = spi.CLOCK_MODE_3, @see CLOCK_MODE_3\ndefault is -1, means use CLOCK_MODE_0" + "soft_cs": "direction [in], not use hardware cs, bool type, if set true, you can operate cs pin use gpio manually.", + "mode": "direction [in], mode of spi, spi.Mode type, spi.Mode.MASTER or spi.Mode.SLAVE.", + "polarity": "direction [in], polarity of spi, 0 means idle level of clock is low, 1 means high, int type, default is 0.", + "phase": "direction [in], phase of spi, 0 means data is captured on the first edge of the SPI clock cycle, 1 means second, int type, default is 0.", + "bits": "direction [in], bits of spi, int type, default is 8.", + "cs": "direction [in], cs pin number, int type, default is 0, if SPI support multi hardware cs, you can set it to other value." }, "maixpy": "maix.peripheral.spi.SPI.__init__", - "py_doc": "SPI constructor\n\nArgs:\n - id: direction [in], id of spi, int type\n - sclk: direction [in], sclk pin of spi, int type\n - mosi: direction [in], mosi pin of spi, int type\n - miso: direction [in], miso pin of spi, int type\n - cs: direction [in], cs pin of spi, int type\n - freq: direction [in], freq of spi, int type\n - use_soft_cs: direction [in], use_soft_cs of spi, int type\nthis param is valid in master mode, when use_soft_cs = 1, the\ncs pin must be operated manually when sending data. default is -1, means use hardware cs\n - mode: direction [in], mode of spi, int type\noption:\nmode = spi.MASTER, means use master mode\nmode = spi.SLAVE, means use slave mode\ndefualt is -1, means use spi.MASTER mode\n - clock_mode: direction [in], clock_mode of spi, int type,default is -1\noption:\nclock_mode = spi.CLOCK_MODE_0, @see CLOCK_MODE_0\nclock_mode = spi.CLOCK_MODE_1, @see CLOCK_MODE_1\nclock_mode = spi.CLOCK_MODE_2, @see CLOCK_MODE_2\nclock_mode = spi.CLOCK_MODE_3, @see CLOCK_MODE_3\ndefault is -1, means use CLOCK_MODE_0\n" + "py_doc": "SPI constructor\n\nArgs:\n - id: direction [in], spi bus id, int type\n - freq: direction [in], freq of spi, int type\n - soft_cs: direction [in], not use hardware cs, bool type, if set true, you can operate cs pin use gpio manually.\n - mode: direction [in], mode of spi, spi.Mode type, spi.Mode.MASTER or spi.Mode.SLAVE.\n - polarity: direction [in], polarity of spi, 0 means idle level of clock is low, 1 means high, int type, default is 0.\n - phase: direction [in], phase of spi, 0 means data is captured on the first edge of the SPI clock cycle, 1 means second, int type, default is 0.\n - bits: direction [in], bits of spi, int type, default is 8.\n - cs: direction [in], cs pin number, int type, default is 0, if SPI support multi hardware cs, you can set it to other value.\n" }, "args": [ [ @@ -14979,75 +15453,44 @@ null ], [ - "int", - "sclk", + "spi::Mode", + "mode", null ], [ "int", - "mosi", + "freq", null ], [ - "int", - "miso", - null + "bool", + "soft_cs", + "false" ], [ "int", - "cs", - null + "polarity", + "0" ], [ "int", - "freq", - null + "phase", + "0" ], [ "int", - "use_soft_cs", - "-1" + "bits", + "8" ], [ "int", - "mode", - "-1" - ], - [ - "int", - "clock_mode", - "-1" + "cs", + "0" ] ], "ret_type": null, "static": false, - "def": "SPI(int id, int sclk, int mosi, int miso, int cs, int freq, int use_soft_cs = -1, int mode = -1, int clock_mode = -1)" - }, - "cs_high": { - "type": "func", - "name": "cs_high", - "doc": { - "brief": "set cs pin to high level", - "maixpy": "maix.peripheral.spi.SPI.cs_high", - "py_doc": "set cs pin to high level" - }, - "args": [], - "ret_type": "int", - "static": false, - "def": "int cs_high()" - }, - "cs_low": { - "type": "func", - "name": "cs_low", - "doc": { - "brief": "set cs pin to low level", - "maixpy": "maix.peripheral.spi.SPI.cs_low", - "py_doc": "set cs pin to low level" - }, - "args": [], - "ret_type": "int", - "static": false, - "def": "int cs_low()" + "def": "SPI(int id, spi::Mode mode, int freq, bool soft_cs = false, int polarity = 0, int phase = 0, int bits = 8, int cs = 0)" }, "read": { "type": "func", @@ -15055,74 +15498,51 @@ "doc": { "brief": "read data from spi", "param": { - "read_len": "direction [in], read length, int type" + "length": "direction [in], read length, int type" }, - "return": "read data, vector type", + "return": "bytes data, Bytes type in C++, bytes type in MaixPy. You need to delete it manually after use in C++.", "maixpy": "maix.peripheral.spi.SPI.read", - "py_doc": "read data from spi\n\nArgs:\n - read_len: direction [in], read length, int type\n\n\nReturns: read data, vector type\n" + "py_doc": "read data from spi\n\nArgs:\n - length: direction [in], read length, int type\n\n\nReturns: bytes data, Bytes type in C++, bytes type in MaixPy. You need to delete it manually after use in C++.\n" }, "args": [ [ "int", - "read_len", + "length", null ] ], - "ret_type": "std::vector", - "static": false, - "def": "std::vector read(int read_len)" - }, - "write": { - "type": "func", - "name": "write", - "doc": { - "brief": "write data to spi", - "param": { - "write_data": "direction [in], write data, vector type\nthe member range of the list is [0,255]" - }, - "return": "error code, if write success, return err::ERR_NONE", - "maixpy": "maix.peripheral.spi.SPI.write", - "py_doc": "write data to spi\n\nArgs:\n - write_data: direction [in], write data, vector type\nthe member range of the list is [0,255]\n\n\nReturns: error code, if write success, return err::ERR_NONE\n" - }, - "args": [ - [ - "std::vector", - "write_data", - "std::vector{}" - ] - ], - "ret_type": "int", + "ret_type": "Bytes*", "static": false, - "def": "int write(std::vector write_data = std::vector{})" + "def": "Bytes *read(int length)" }, - "read_write": { + "write_read": { "type": "func", - "name": "read_write", + "name": "write_read", "doc": { - "brief": "set spi status to high level or low level", + "brief": "write data to spi and read data from spi at the same time.", "param": { - "write_data": "direction [in], write data, vector type\nthe member range of the list is [0,255]", - "read_len": "direction [in], read length, int type\ndefault is -1, means read_len = write_data.size()" + "data": "direction [in], data to write, Bytes type in C++, bytes type in MaixPy", + "read_len": "direction [in], read length, int type, should > 0." }, - "return": "read data, vector type", - "maixpy": "maix.peripheral.spi.SPI.read_write", - "py_doc": "set spi status to high level or low level\n\nArgs:\n - write_data: direction [in], write data, vector type\nthe member range of the list is [0,255]\n - read_len: direction [in], read length, int type\ndefault is -1, means read_len = write_data.size()\n\n\nReturns: read data, vector type\n" + "return": "read data, Bytes type in C++, bytes type in MaixPy. You need to delete it manually after use in C++.", + "maixpy": "maix.peripheral.spi.SPI.write_read", + "py_doc": "write data to spi and read data from spi at the same time.\n\nArgs:\n - data: direction [in], data to write, Bytes type in C++, bytes type in MaixPy\n - read_len: direction [in], read length, int type, should > 0.\n\n\nReturns: read data, Bytes type in C++, bytes type in MaixPy. You need to delete it manually after use in C++.\n" }, "args": [ [ - "std::vector", - "write_data", - "std::vector{}" + "Bytes *", + "data", + null ], [ "int", "read_len", - "-1" + null ] ], - "ret_type": "std::vector", + "ret_type": "Bytes*", "static": false, - "def": "std::vector read_write( std::vector write_data = std::vector{}, \n int read_len = -1)" + "def": "Bytes *write_read(Bytes *data, int read_len)" }, "is_busy": { "type": "func", @@ -15280,19 +15700,19 @@ ], "def": "enum FLOW_CTRL\n {\n FLOW_CTRL_NONE = 0, // no flow control\n FLOW_CTRL_HW = 1, // hardware flow control\n FLOW_CTRL_MAX\n }" }, - "list_ports": { + "list_devices": { "type": "func", - "name": "list_ports", + "name": "list_devices", "doc": { "brief": "Get supported uart ports.", "return": "uart ports list, string type.", - "maixpy": "maix.peripheral.uart.list_ports", + "maixpy": "maix.peripheral.uart.list_devices", "py_doc": "Get supported uart ports.\n\nReturns: uart ports list, string type.\n" }, "args": [], "ret_type": "std::vector", "static": false, - "def": "std::vector list_ports()" + "def": "std::vector list_devices()" }, "UART": { "type": "class", @@ -15309,7 +15729,7 @@ "doc": { "brief": "UART constructor. You need to call open() to open the device.", "param": { - "port": "uart port. string type, can get it by uart.list_ports().\nIf empty, will not open device in constructor, default empty.\nif not empty, will auto open device in constructor, open fail will throw err.Exception.", + "port": "uart port. string type, can get it by uart.list_devices().\nIf empty, will not open device in constructor, default empty.\nif not empty, will auto open device in constructor, open fail will throw err.Exception.", "baudrate": "baudrate of uart. int type, default 115200.", "databits": "databits, values @see uart.DATA_BITS", "parity": "parity, values @see uart.PARITY", @@ -15317,7 +15737,7 @@ "flow_control": "flow_control, values @see uart.FLOW_CTRL" }, "maixpy": "maix.peripheral.uart.UART.__init__", - "py_doc": "UART constructor. You need to call open() to open the device.\n\nArgs:\n - port: uart port. string type, can get it by uart.list_ports().\nIf empty, will not open device in constructor, default empty.\nif not empty, will auto open device in constructor, open fail will throw err.Exception.\n - baudrate: baudrate of uart. int type, default 115200.\n - databits: databits, values @see uart.DATA_BITS\n - parity: parity, values @see uart.PARITY\n - stopbits: stopbits, values @see uart.STOP_BITS\n - flow_control: flow_control, values @see uart.FLOW_CTRL\n" + "py_doc": "UART constructor. You need to call open() to open the device.\n\nArgs:\n - port: uart port. string type, can get it by uart.list_devices().\nIf empty, will not open device in constructor, default empty.\nif not empty, will auto open device in constructor, open fail will throw err.Exception.\n - baudrate: baudrate of uart. int type, default 115200.\n - databits: databits, values @see uart.DATA_BITS\n - parity: parity, values @see uart.PARITY\n - stopbits: stopbits, values @see uart.STOP_BITS\n - flow_control: flow_control, values @see uart.FLOW_CTRL\n" }, "args": [ [ @@ -15361,11 +15781,11 @@ "doc": { "brief": "Set port", "param": { - "port": "uart port. string type, can get it by uart.list_ports()." + "port": "uart port. string type, can get it by uart.list_devices()." }, "return": "set port error code, err.Err type.", "maixpy": "maix.peripheral.uart.UART.set_port", - "py_doc": "Set port\n\nArgs:\n - port: uart port. string type, can get it by uart.list_ports().\n\n\nReturns: set port error code, err.Err type.\n" + "py_doc": "Set port\n\nArgs:\n - port: uart port. string type, can get it by uart.list_devices().\n\n\nReturns: set port error code, err.Err type.\n" }, "args": [ [ @@ -15802,83 +16222,63 @@ "brief": "maix.peripheral.i2c module" }, "members": { - "SEVEN_BIT": { - "type": "var", - "name": "", - "doc": { - "brief": "7-bit address mode", - "maixpy": "maix.peripheral.i2c.SEVEN_BIT", - "py_doc": "7-bit address mode" - }, - "value": "0x1", - "static": false, - "readonly": true, - "def": "const int SEVEN_BIT = 0x1" - }, - "TEN_BIT": { - "type": "var", - "name": "", - "doc": { - "brief": "10-bit address mode", - "maixpy": "maix.peripheral.i2c.TEN_BIT", - "py_doc": "10-bit address mode" - }, - "value": "0x2", - "static": false, - "readonly": true, - "def": "const int TEN_BIT = 0x2" - }, - "MASTER": { - "type": "var", - "name": "", - "doc": { - "brief": "master mode", - "maixpy": "maix.peripheral.i2c.MASTER", - "py_doc": "master mode" - }, - "value": "0x4", - "static": false, - "readonly": true, - "def": "const int MASTER = 0x4" - }, - "SLAVE": { - "type": "var", - "name": "", + "AddrSize": { + "type": "enum", + "name": "AddrSize", "doc": { - "brief": "slave mode", - "maixpy": "maix.peripheral.i2c.SLAVE", - "py_doc": "slave mode" + "brief": "Address size enum", + "maixpy": "maix.peripheral.i2c.AddrSize", + "py_doc": "Address size enum" }, - "value": "0x8", - "static": false, - "readonly": true, - "def": "const int SLAVE = 0x8" + "values": [ + [ + "SEVEN_BIT", + "7", + "7-bit address mode" + ], + [ + "TEN_BIT", + "10", + "10-bit address mode" + ] + ], + "def": "enum AddrSize\n {\n SEVEN_BIT = 7, // 7-bit address mode\n TEN_BIT = 10 // 10-bit address mode\n }" }, - "STANDARD_SPEED": { - "type": "var", - "name": "", + "Mode": { + "type": "enum", + "name": "Mode", "doc": { - "brief": "standard speed mode", - "maixpy": "maix.peripheral.i2c.STANDARD_SPEED", - "py_doc": "standard speed mode" + "brief": "I2C mode enum", + "maixpy": "maix.peripheral.i2c.Mode", + "py_doc": "I2C mode enum" }, - "value": "0x10", - "static": false, - "readonly": true, - "def": "const int STANDARD_SPEED = 0x10" + "values": [ + [ + "MASTER", + "0x00", + "master mode" + ], + [ + "SLAVE", + "0x01", + "slave mode" + ] + ], + "def": "enum Mode\n {\n MASTER = 0x00, // master mode\n SLAVE = 0x01 // slave mode\n }" }, - "FAST_SPEED": { - "type": "var", - "name": "", + "list_devices": { + "type": "func", + "name": "list_devices", "doc": { - "brief": "fast speed mode", - "maixpy": "maix.peripheral.i2c.FAST_SPEED", - "py_doc": "fast speed mode" + "brief": "Get supported i2c bus devices.", + "return": "i2c bus devices list, int type, is the i2c bus id.", + "maixpy": "maix.peripheral.i2c.list_devices", + "py_doc": "Get supported i2c bus devices.\n\nReturns: i2c bus devices list, int type, is the i2c bus id.\n" }, - "value": "0x20", + "args": [], + "ret_type": "std::vector", "static": false, - "readonly": true, - "def": "const int FAST_SPEED = 0x20" + "def": "std::vector list_devices()" }, "I2C": { "type": "class", @@ -15895,16 +16295,14 @@ "doc": { "brief": "I2C Device constructor\\nthis constructor will be export to MaixPy as _maix.example.Example.__init__", "param": { - "id": "direction [in], i2c index, int type", - "scl": "direction [in], sck pin of i2c, int type", - "sda": "direction [in], sda pin of i2c, int type", - "freq": "direction [in], i2c clock, int type\noption:\nin the i2c.STANDARD_SPEED mode, range is [0, 100000]\nin the i2c.FAST_SPEED mode, range is [0, 400000]\ndefault clock is -1, means use max clock", - "mode": "direction [in], mode of i2c, int type.\noption:\nmode = i2c.MASTER, means master mode\nmode = i2c.SLAVE, means slave mode", - "bit": "direction [in], address length of i2c, int type.\noption:\nbit = i2c.SEVEN_BIT, means 7-bit address mode\nbit = i2c.TEN_BIT, means 10-bit address mode", - "speed_mode": "direction [in], speed mode of i2c, int type.\noption:\nspeed_mode = i2c.STANDARD_SPEED, means standard speed mode, up to 100kbit/s\nspeed_mode = i2c.FAST_SPEED, means fast speed mode, up to 400kbit/s" + "id": "direction [in], i2c bus id, int type, e.g. 0, 1, 2", + "freq": "direction [in], i2c clock, int type, default is 100000(100kbit/s), will auto set fast mode if freq > 100000.", + "mode": "direction [in], mode of i2c, i2c.Mode.SLAVE or i2c.Mode.MASTER.", + "addr_size": "direction [in], address length of i2c, i2c.AddrSize.SEVEN_BIT or i2c.AddrSize.TEN_BIT." }, + "throw": "err::Exception if open i2c device failed.", "maixpy": "maix.peripheral.i2c.I2C.__init__", - "py_doc": "I2C Device constructor\nthis constructor will be export to MaixPy as _maix.example.Example.__init__\n\nArgs:\n - id: direction [in], i2c index, int type\n - scl: direction [in], sck pin of i2c, int type\n - sda: direction [in], sda pin of i2c, int type\n - freq: direction [in], i2c clock, int type\noption:\nin the i2c.STANDARD_SPEED mode, range is [0, 100000]\nin the i2c.FAST_SPEED mode, range is [0, 400000]\ndefault clock is -1, means use max clock\n - mode: direction [in], mode of i2c, int type.\noption:\nmode = i2c.MASTER, means master mode\nmode = i2c.SLAVE, means slave mode\n - bit: direction [in], address length of i2c, int type.\noption:\nbit = i2c.SEVEN_BIT, means 7-bit address mode\nbit = i2c.TEN_BIT, means 10-bit address mode\n - speed_mode: direction [in], speed mode of i2c, int type.\noption:\nspeed_mode = i2c.STANDARD_SPEED, means standard speed mode, up to 100kbit/s\nspeed_mode = i2c.FAST_SPEED, means fast speed mode, up to 400kbit/s\n" + "py_doc": "I2C Device constructor\nthis constructor will be export to MaixPy as _maix.example.Example.__init__\n\nArgs:\n - id: direction [in], i2c bus id, int type, e.g. 0, 1, 2\n - freq: direction [in], i2c clock, int type, default is 100000(100kbit/s), will auto set fast mode if freq > 100000.\n - mode: direction [in], mode of i2c, i2c.Mode.SLAVE or i2c.Mode.MASTER.\n - addr_size: direction [in], address length of i2c, i2c.AddrSize.SEVEN_BIT or i2c.AddrSize.TEN_BIT.\n" }, "args": [ [ @@ -15913,39 +16311,38 @@ null ], [ - "int", - "scl", - null - ], - [ - "int", - "sda", + "i2c::Mode", + "mode", null ], [ "int", "freq", - "-1" - ], - [ - "int", - "mode", - "-1" - ], - [ - "int", - "bit", - "-1" + "100000" ], [ - "int", - "speed_mode", - "-1" + "i2c::AddrSize", + "addr_size", + "i2c::AddrSize::SEVEN_BIT" ] ], "ret_type": null, "static": false, - "def": "I2C(int id, int scl, int sda, int freq = -1, int mode = -1, int bit = -1, int speed_mode = -1)" + "def": "I2C(int id, i2c::Mode mode, int freq = 100000, i2c::AddrSize addr_size = i2c::AddrSize::SEVEN_BIT)" + }, + "scan": { + "type": "func", + "name": "scan", + "doc": { + "brief": "scan all i2c salve address on the bus", + "return": "the list of i2c slave address, int list type.", + "maixpy": "maix.peripheral.i2c.I2C.scan", + "py_doc": "scan all i2c salve address on the bus\n\nReturns: the list of i2c slave address, int list type.\n" + }, + "args": [], + "ret_type": "std::vector", + "static": false, + "def": "std::vector scan()" }, "writeto": { "type": "func", @@ -15954,11 +16351,11 @@ "brief": "write data to i2c slave", "param": { "addr": "direction [in], i2c slave address, int type", - "data": "direction [in], data to write, vector type.\nNote: The member range of the list is [0,255]" + "data": "direction [in], data to write, bytes type.\nNote: The range of value should be in [0,255]." }, - "return": "if success, return 0, else return -1", + "return": "if success, return the length of written data, error occurred will return -err::Err.", "maixpy": "maix.peripheral.i2c.I2C.writeto", - "py_doc": "write data to i2c slave\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - data: direction [in], data to write, vector type.\nNote: The member range of the list is [0,255]\n\n\nReturns: if success, return 0, else return -1\n" + "py_doc": "write data to i2c slave\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - data: direction [in], data to write, bytes type.\nNote: The range of value should be in [0,255].\n\n\nReturns: if success, return the length of written data, error occurred will return -err::Err.\n" }, "args": [ [ @@ -15967,14 +16364,14 @@ null ], [ - "std::vector", + "const Bytes &", "data", null ] ], "ret_type": "int", "static": false, - "def": "int writeto(int addr, std::vector data)" + "def": "int writeto(int addr, const Bytes &data)" }, "readfrom": { "type": "func", @@ -15985,9 +16382,9 @@ "addr": "direction [in], i2c slave address, int type", "len": "direction [in], data length to read, int type" }, - "return": "the list of data read from i2c slave, vector type", + "return": "the list of data read from i2c slave, bytes type, you should delete it after use in C++.\nIf read failed, return nullptr in C++, None in MaixPy.", "maixpy": "maix.peripheral.i2c.I2C.readfrom", - "py_doc": "read data from i2c slave\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - len: direction [in], data length to read, int type\n\n\nReturns: the list of data read from i2c slave, vector type\n" + "py_doc": "read data from i2c slave\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - len: direction [in], data length to read, int type\n\n\nReturns: the list of data read from i2c slave, bytes type, you should delete it after use in C++.\nIf read failed, return nullptr in C++, None in MaixPy.\n" }, "args": [ [ @@ -16001,37 +16398,25 @@ null ] ], - "ret_type": "std::vector", - "static": false, - "def": "std::vector readfrom(int addr, int len)" - }, - "scan": { - "type": "func", - "name": "scan", - "doc": { - "brief": "scan all i2c address", - "return": "the list of i2c address, vector type", - "maixpy": "maix.peripheral.i2c.I2C.scan", - "py_doc": "scan all i2c address\n\nReturns: the list of i2c address, vector type\n" - }, - "args": [], - "ret_type": "std::vector", + "ret_type": "Bytes*", "static": false, - "def": "std::vector scan()" + "def": "Bytes* readfrom(int addr, int len)" }, "writeto_mem": { "type": "func", "name": "writeto_mem", "doc": { - "brief": "write data to i2c slave", + "brief": "write data to i2c slave's memory address", "param": { "addr": "direction [in], i2c slave address, int type", - "start_addr": "direction [in], start address of i2c slave, int type", - "data": "direction [in], data to write, vector type.\nNote: The member range of the list is [0,255]" + "mem_addr": "direction [in], memory address want to write, int type.", + "data": "direction [in], data to write, bytes type.", + "mem_addr_size": "direction [in], memory address size, default is 8.", + "mem_addr_le": "direction [in], memory address little endian, default is false, that is send high byte first." }, - "return": "if success, return 0, else return -1", + "return": "data length written if success, error occurred will return -err::Err.", "maixpy": "maix.peripheral.i2c.I2C.writeto_mem", - "py_doc": "write data to i2c slave\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - start_addr: direction [in], start address of i2c slave, int type\n - data: direction [in], data to write, vector type.\nNote: The member range of the list is [0,255]\n\n\nReturns: if success, return 0, else return -1\n" + "py_doc": "write data to i2c slave's memory address\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - mem_addr: direction [in], memory address want to write, int type.\n - data: direction [in], data to write, bytes type.\n - mem_addr_size: direction [in], memory address size, default is 8.\n - mem_addr_le: direction [in], memory address little endian, default is false, that is send high byte first.\n\n\nReturns: data length written if success, error occurred will return -err::Err.\n" }, "args": [ [ @@ -16041,18 +16426,28 @@ ], [ "int", - "start_addr", + "mem_addr", null ], [ - "std::vector", + "const Bytes &", "data", null + ], + [ + "int", + "mem_addr_size", + "8" + ], + [ + "bool", + "mem_addr_le", + "false" ] ], "ret_type": "int", "static": false, - "def": "int writeto_mem(int addr, int start_addr, std::vector data)" + "def": "int writeto_mem(int addr, int mem_addr, const Bytes &data, int mem_addr_size = 8, bool mem_addr_le = false)" }, "readfrom_mem": { "type": "func", @@ -16061,12 +16456,14 @@ "brief": "read data from i2c slave", "param": { "addr": "direction [in], i2c slave address, int type", - "start_addr": "direction [in], start address of i2c slave, int type", - "len": "direction [in], data length to read, int type" + "mem_addr": "direction [in], memory address want to read, int type.", + "len": "direction [in], data length to read, int type", + "mem_addr_size": "direction [in], memory address size, default is 8.", + "mem_addr_le": "direction [in], memory address little endian, default is false, that is send high byte first." }, - "return": "the list of data read from i2c slave, vector type", + "return": "the list of data read from i2c slave, bytes type, you should delete it after use in C++.\nIf read failed, return nullptr in C++, None in MaixPy.", "maixpy": "maix.peripheral.i2c.I2C.readfrom_mem", - "py_doc": "read data from i2c slave\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - start_addr: direction [in], start address of i2c slave, int type\n - len: direction [in], data length to read, int type\n\n\nReturns: the list of data read from i2c slave, vector type\n" + "py_doc": "read data from i2c slave\n\nArgs:\n - addr: direction [in], i2c slave address, int type\n - mem_addr: direction [in], memory address want to read, int type.\n - len: direction [in], data length to read, int type\n - mem_addr_size: direction [in], memory address size, default is 8.\n - mem_addr_le: direction [in], memory address little endian, default is false, that is send high byte first.\n\n\nReturns: the list of data read from i2c slave, bytes type, you should delete it after use in C++.\nIf read failed, return nullptr in C++, None in MaixPy.\n" }, "args": [ [ @@ -16076,18 +16473,28 @@ ], [ "int", - "start_addr", + "mem_addr", null ], [ "int", "len", null + ], + [ + "int", + "mem_addr_size", + "8" + ], + [ + "bool", + "mem_addr_le", + "false" ] ], - "ret_type": "std::vector", + "ret_type": "Bytes*", "static": false, - "def": "std::vector readfrom_mem(int addr, int start_addr, int len)" + "def": "Bytes* readfrom_mem(int addr, int mem_addr, int len, int mem_addr_size = 8, bool mem_addr_le = false)" } }, "def": "class I2C" @@ -16109,10 +16516,10 @@ "maixpy": "maix.peripheral.adc.RES_BIT_8", "py_doc": "8-bit resolution, supported by the actual hardware" }, - "value": "0x1", + "value": "8", "static": false, "readonly": true, - "def": "const int RES_BIT_8 = 0x1" + "def": "const int RES_BIT_8 = 8" }, "RES_BIT_10": { "type": "var", @@ -16122,10 +16529,10 @@ "maixpy": "maix.peripheral.adc.RES_BIT_10", "py_doc": "10-bit resolution, supported by the actual hardware" }, - "value": "0x2", + "value": "10", "static": false, "readonly": true, - "def": "const int RES_BIT_10 = 0x2" + "def": "const int RES_BIT_10 = 10" }, "RES_BIT_12": { "type": "var", @@ -16135,10 +16542,10 @@ "maixpy": "maix.peripheral.adc.RES_BIT_12", "py_doc": "12-bit resolution, supported by the actual hardware" }, - "value": "0x3", + "value": "12", "static": false, "readonly": true, - "def": "const int RES_BIT_12 = 0x3" + "def": "const int RES_BIT_12 = 12" }, "RES_BIT_16": { "type": "var", @@ -16148,10 +16555,10 @@ "maixpy": "maix.peripheral.adc.RES_BIT_16", "py_doc": "16-bit resolution, supported by the actual hardware" }, - "value": "0x4", + "value": "16", "static": false, "readonly": true, - "def": "const int RES_BIT_16 = 0x4" + "def": "const int RES_BIT_16 = 16" }, "ADC": { "type": "class", @@ -16184,7 +16591,7 @@ [ "int", "resolution", - "-1" + null ], [ "float", @@ -16194,7 +16601,7 @@ ], "ret_type": null, "static": false, - "def": "ADC(int pin, int resolution = -1, float vref = -1)" + "def": "ADC(int pin, int resolution, float vref = -1)" }, "read": { "type": "func", @@ -16233,6 +16640,466 @@ }, "auto_add": true }, + "rtsp": { + "type": "module", + "doc": { + "brief": "maix.rtsp module" + }, + "members": { + "RtspStreamType": { + "type": "enum", + "name": "RtspStreamType", + "doc": { + "brief": "The stream type of rtsp", + "maixpy": "maix.rtsp.RtspStreamType", + "py_doc": "The stream type of rtsp" + }, + "values": [ + [ + "RTSP_STREAM_NONE", + "0", + "format invalid" + ], + [ + "RTSP_STREAM_H265", + "", + "" + ] + ], + "def": "enum RtspStreamType\n {\n RTSP_STREAM_NONE = 0, // format invalid\n RTSP_STREAM_H265,\n }" + }, + "Rtsp": { + "type": "class", + "name": "Rtsp", + "doc": { + "brief": "Rtsp class", + "maixpy": "maix.rtsp.Rtsp", + "py_doc": "Rtsp class" + }, + "members": { + "__init__": { + "type": "func", + "name": "Rtsp", + "doc": { + "brief": "Construct a new Video object", + "param": { + "ip": "rtsp ip", + "port": "rtsp port", + "fps": "rtsp fps", + "stream_type": "rtsp stream type" + }, + "maixpy": "maix.rtsp.Rtsp.__init__", + "maixcdk": "maix.rtsp.Rtsp.Rtsp", + "py_doc": "Construct a new Video object\n\nArgs:\n - ip: rtsp ip\n - port: rtsp port\n - fps: rtsp fps\n - stream_type: rtsp stream type\n" + }, + "args": [ + [ + "std::string", + "ip", + "std::string()" + ], + [ + "int", + "port", + "8554" + ], + [ + "int", + "fps", + "30" + ], + [ + "rtsp::RtspStreamType", + "stream_type", + "rtsp::RtspStreamType::RTSP_STREAM_H265" + ] + ], + "ret_type": null, + "static": false, + "def": "Rtsp(std::string ip = std::string(), int port = 8554, int fps = 30, rtsp::RtspStreamType stream_type = rtsp::RtspStreamType::RTSP_STREAM_H265)" + }, + "start": { + "type": "func", + "name": "start", + "doc": { + "brief": "start rtsp", + "return": "error code, err::ERR_NONE means success, others means failed", + "maixpy": "maix.rtsp.Rtsp.start", + "py_doc": "start rtsp\n\nReturns: error code, err::ERR_NONE means success, others means failed\n" + }, + "args": [], + "ret_type": "err::Err", + "static": false, + "def": "err::Err start()", + "overload": [ + { + "type": "func", + "name": "stop", + "doc": { + "brief": "stop rtsp", + "return": "error code, err::ERR_NONE means success, others means failed", + "maixpy": "maix.rtsp.Rtsp.start", + "py_doc": "stop rtsp\n\nReturns: error code, err::ERR_NONE means success, others means failed\n" + }, + "args": [], + "ret_type": "err::Err", + "static": false, + "def": "err::Err stop()" + } + ] + }, + "bind_camera": { + "type": "func", + "name": "bind_camera", + "doc": { + "brief": "Bind camera", + "param": { + "camera": "camera object" + }, + "return": "error code, err::ERR_NONE means success, others means failed", + "maixpy": "maix.rtsp.Rtsp.bind_camera", + "py_doc": "Bind camera\n\nArgs:\n - camera: camera object\n\n\nReturns: error code, err::ERR_NONE means success, others means failed\n" + }, + "args": [ + [ + "camera::Camera *", + "camera", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err bind_camera(camera::Camera *camera)" + }, + "write": { + "type": "func", + "name": "write", + "doc": { + "brief": "Write data to rtsp", + "param": { + "type": "rtsp stream type", + "data": "rtsp stream data", + "fps": "rtsp stream data size" + }, + "return": "error code, err::ERR_NONE means success, others means failed", + "maixpy": "maix.rtsp.Rtsp.write", + "py_doc": "Write data to rtsp\n\nArgs:\n - type: rtsp stream type\n - data: rtsp stream data\n - fps: rtsp stream data size\n\n\nReturns: error code, err::ERR_NONE means success, others means failed\n" + }, + "args": [ + [ + "video::VideoStream &", + "stream", + null + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err write(video::VideoStream &stream)" + }, + "get_url": { + "type": "func", + "name": "get_url", + "doc": { + "brief": "Get url of rtsp", + "return": "url of rtsp", + "maixpy": "maix.rtsp.Rtsp.get_url", + "py_doc": "Get url of rtsp\n\nReturns: url of rtsp\n" + }, + "args": [], + "ret_type": "std::string", + "static": false, + "def": "std::string get_url()" + }, + "to_camera": { + "type": "func", + "name": "to_camera", + "doc": { + "brief": "Get camera object from rtsp", + "return": "camera object", + "maixpy": "maix.rtsp.Rtsp.to_camera", + "py_doc": "Get camera object from rtsp\n\nReturns: camera object\n" + }, + "args": [], + "ret_type": "camera::Camera*", + "static": false, + "def": "camera::Camera *to_camera()" + }, + "rtsp_is_start": { + "type": "func", + "name": "rtsp_is_start", + "doc": { + "brief": "return rtsp start status", + "return": "true means rtsp is start, false means rtsp is stop.", + "maixpy": "maix.rtsp.Rtsp.rtsp_is_start", + "py_doc": "return rtsp start status\n\nReturns: true means rtsp is start, false means rtsp is stop.\n" + }, + "args": [], + "ret_type": "bool", + "static": false, + "def": "bool rtsp_is_start()" + } + }, + "def": "class Rtsp" + } + }, + "auto_add": true + }, + "video": { + "type": "module", + "doc": { + "brief": "maix.video module", + "maixpy": "maix.video", + "py_doc": "maix.video module" + }, + "members": { + "VideoType": { + "type": "enum", + "name": "VideoType", + "doc": { + "brief": "Video type", + "maixpy": "maix.video.VideoType", + "py_doc": "Video type" + }, + "values": [ + [ + "VIDEO_NONE", + "0", + "format invalid" + ], + [ + "VIDEO_ENC_H265_CBR", + "", + "" + ], + [ + "VIDEO_ENC_MP4_CBR", + "", + "" + ], + [ + "VIDEO_DEC_H265_CBR", + "", + "" + ], + [ + "VIDEO_DEC_MP4_CBR", + "", + "" + ] + ], + "def": "enum VideoType\n {\n VIDEO_NONE = 0, // format invalid\n VIDEO_ENC_H265_CBR,\n VIDEO_ENC_MP4_CBR,\n VIDEO_DEC_H265_CBR,\n VIDEO_DEC_MP4_CBR,\n }" + }, + "VideoStream": { + "type": "class", + "name": "VideoStream", + "doc": { + "brief": "VideoStream class", + "maixpy": "maix.video.VideoStream", + "py_doc": "VideoStream class" + }, + "members": {}, + "def": "class VideoStream" + }, + "Video": { + "type": "class", + "name": "Video", + "doc": { + "brief": "Video class", + "maixpy": "maix.video.Video", + "py_doc": "Video class" + }, + "members": { + "__init__": { + "type": "func", + "name": "Video", + "doc": { + "brief": "Construct a new Video object", + "param": { + "width": "video width, default is -1, means auto, mostly means max width of video support", + "height": "video height, default is -1, means auto, mostly means max height of video support", + "type": "video type, default is VideoType::VIDEO_NONE" + }, + "maixpy": "maix.video.Video.__init__", + "maixcdk": "maix.video.Video.Video", + "py_doc": "Construct a new Video object\n\nArgs:\n - width: video width, default is -1, means auto, mostly means max width of video support\n - height: video height, default is -1, means auto, mostly means max height of video support\n - type: video type, default is VideoType::VIDEO_NONE\n" + }, + "args": [ + [ + "int", + "width", + "-1" + ], + [ + "int", + "height", + "-1" + ], + [ + "video::VideoType", + "type", + "video::VideoType::VIDEO_NONE" + ] + ], + "ret_type": null, + "static": false, + "def": "Video(int width = -1, int height = -1, video::VideoType type = video::VideoType::VIDEO_NONE)" + }, + "open": { + "type": "func", + "name": "open", + "doc": { + "brief": "Open video and run", + "param": { + "width": "video width, default is -1, means auto, mostly means max width of video support", + "height": "video height, default is -1, means auto, mostly means max height of video support", + "format": "video output format, default same as the constructor's format argument" + }, + "return": "error code, err::ERR_NONE means success, others means failed", + "maixpy": "maix.video.Video.open", + "py_doc": "Open video and run\n\nArgs:\n - width: video width, default is -1, means auto, mostly means max width of video support\n - height: video height, default is -1, means auto, mostly means max height of video support\n - format: video output format, default same as the constructor's format argument\n\n\nReturns: error code, err::ERR_NONE means success, others means failed\n" + }, + "args": [ + [ + "int", + "width", + "-1" + ], + [ + "int", + "height", + "-1" + ], + [ + "video::VideoType", + "type", + "video::VideoType::VIDEO_NONE" + ] + ], + "ret_type": "err::Err", + "static": false, + "def": "err::Err open(int width = -1, int height = -1, video::VideoType type = video::VideoType::VIDEO_NONE)" + }, + "encode": { + "type": "func", + "name": "encode", + "doc": { + "brief": "Encode image", + "param": { + "img": "the image will be encode" + }, + "return": "encode result", + "maixpy": "maix.video.Video.encode", + "py_doc": "Encode image\n\nArgs:\n - img: the image will be encode\n\n\nReturns: encode result\n" + }, + "args": [ + [ + "image::Image &", + "img", + null + ] + ], + "ret_type": "video::VideoStream", + "static": false, + "def": "video::VideoStream encode(image::Image &img)" + }, + "decode": { + "type": "func", + "name": "decode", + "doc": { + "brief": "Decode image", + "param": { + "img": "the image will be decode" + }, + "return": "decode result", + "maixpy": "maix.video.Video.decode", + "py_doc": "Decode image\n\nArgs:\n - img: the image will be decode\n\n\nReturns: decode result\n" + }, + "args": [ + [ + "video::VideoStream &", + "stream", + null + ] + ], + "ret_type": "image::Image*", + "static": false, + "def": "image::Image *decode(video::VideoStream &stream)" + }, + "close": { + "type": "func", + "name": "close", + "doc": { + "brief": "Close video", + "maixpy": "maix.video.Video.close", + "py_doc": "Close video" + }, + "args": [], + "ret_type": "void", + "static": false, + "def": "void close()" + }, + "is_opened": { + "type": "func", + "name": "is_opened", + "doc": { + "brief": "Check if video is opened", + "return": "true if video is opened, false if not", + "maixpy": "maix.video.Video.is_opened", + "py_doc": "Check if video is opened\n\nReturns: true if video is opened, false if not\n" + }, + "args": [], + "ret_type": "bool", + "static": false, + "def": "bool is_opened()" + }, + "is_closed": { + "type": "func", + "name": "is_closed", + "doc": { + "brief": "check video device is closed or not", + "return": "closed or not, bool type", + "maixpy": "maix.video.Video.is_closed", + "py_doc": "check video device is closed or not\n\nReturns: closed or not, bool type\n" + }, + "args": [], + "ret_type": "bool", + "static": false, + "def": "bool is_closed()" + }, + "width": { + "type": "func", + "name": "width", + "doc": { + "brief": "Get video width", + "return": "video width", + "maixpy": "maix.video.Video.width", + "py_doc": "Get video width\n\nReturns: video width\n" + }, + "args": [], + "ret_type": "int", + "static": false, + "def": "int width()" + }, + "height": { + "type": "func", + "name": "height", + "doc": { + "brief": "Get video height", + "return": "video height", + "maixpy": "maix.video.Video.height", + "py_doc": "Get video height\n\nReturns: video height\n" + }, + "args": [], + "ret_type": "int", + "static": false, + "def": "int height()" + } + }, + "def": "class Video" + } + }, + "auto_add": false + }, "touchscreen": { "type": "module", "doc": { diff --git a/maixpy/api/index.html b/maixpy/api/index.html index aaa01c5..1f32d65 100644 --- a/maixpy/api/index.html +++ b/maixpy/api/index.html @@ -113,6 +113,7 @@

MaixPy

+ + + @@ -251,6 +254,10 @@

MaixPy API -- Maix AI machine vision platform Python API

maix.app maix.app module + + maix.util + maix.util module + maix.nn maix.nn module @@ -259,6 +266,14 @@

MaixPy API -- Maix AI machine vision platform Python API

maix.peripheral Chip's peripheral driver + + maix.rtsp + maix.rtsp module + + + maix.video + maix.video module + maix.touchscreen maix.touchscreen module diff --git a/maixpy/api/maix/app.html b/maixpy/api/maix/app.html index 50b64e4..621696d 100644 --- a/maixpy/api/maix/app.html +++ b/maixpy/api/maix/app.html @@ -113,6 +113,7 @@

MaixPy

+ + + @@ -1143,8 +1146,8 @@

descs

diff --git a/maixpy/doc/zh/index.html b/maixpy/doc/zh/index.html index a24cbc0..b99461f 100644 --- a/maixpy/doc/zh/index.html +++ b/maixpy/doc/zh/index.html @@ -115,20 +115,21 @@

MaixPy

- + - + + @@ -210,55 +211,92 @@

MaixPy 快速开始


关于 MaixPy 介绍请看 MaixPy 官网首页

获得 MaixCAM 设备

-

Sipeed 淘宝 或者 Sipeed 速卖通 店铺购买 MaixCAM 开发板。

-

建议购买带 TF 卡摄像头2.3寸触摸屏外壳Type-C一转二小板4P串口座子+线的套餐,方便后续使用和开发,后面的教程都默认你已经有了这些配件(包括屏幕)。

-

另外需要准备一根 Type-C 数据线,尽量买质量好点的防止供电和连接不稳定。

+

Sipeed 淘宝 或者 Sipeed 速卖通 店铺购买 MaixCAM 开发板。

+

建议购买带 TF 卡摄像头2.3寸触摸屏外壳Type-C 数据线Type-C一转二小板4P串口座子+线的套餐,方便后续使用和开发,后面的教程都默认你已经有了这些配件(包括屏幕)。

+

如果你没有购买 TF 卡,则你需要自备一个 TF 读卡器用来烧录系统。

注意,目前只支持 MaixCAM 开发板,其它同型号芯片的开发板均不支持,包括 Sipeed 的同型号芯片开发板,请注意不要买错造成不必要的时间和金钱浪费。

-

上手体验

-

插入套餐里面的 TF 卡,使用 Type-C 数据线连接 MaixCAM 设备给设备供电,等待设备开机,开机会进入功能选择界面。

+

上手配置

+

准备 TF 镜像卡和插入到设备

+

如果你买的套餐里面有 TF 卡,里面已经有出厂镜像了,需要先小心打开外壳(注意里面有排线连接不要扯断了),然后插入 TF 卡。

+

如果没买 TF 卡,则需要将系统烧录进自备的 TF 卡中,烧录方法请看升级和烧录系统,然后再安装到板子。

+

上电开机

+

使用 Type-C 数据线连接 MaixCAM 设备给设备供电,等待设备开机,开机会进入功能选择界面。

+

maixcam

如果屏幕没有显示,请确认购买了配套的 TF 卡,如果确认有 TF 卡,可以尝试更新系统
如果你没有购买 TF 卡套餐,你需要按照升级和烧录系统的方法烧录最新的系统到 TF 卡。

-

开机后可以看到功能选择界面,在设置中可以切换语言,可以自行尝试内置的各种应用和功能。

+

联网

+

首次运行需要连接网络,后面会激活设备和使用 IDE 会用到。

+
    +
  • 设备上点击 设置(Settings),选择WiFi,点击 扫描 按钮开始扫描周围 WiFi, 可以多次点击刷新列表。
  • +
  • 找到你的 WiFi 热点,如果没有路由器可以用手机开一个热点。
  • +
  • 输入密码点击连接按钮进行连接。
  • +
  • 等待获取到 IP 地址,这可能需要 1030 秒,如果界面没有刷新可以退出WiFi功能重新进入查看,或者在设置 -> 设备信息 中也可以看到 IP 信息。
  • +
+

升级运行库

+

这一步很重要 !!! 这一步如果不做好,其它应用和功能可能无法运行(比如闪退等)。

+
    +
  • 首先保证上一步连接 WiFi 已经完成,并且获取到 IP 地址能访问公网。
  • +
  • 设备上点击 设置(Settings),选择安装运行库
  • +
  • 安装完成后可以看到更新到了最新版本,然后退出即可。
  • +
+

使用内置应用

+

内置了很多应用,比如 找色块,AI 检测器,巡线等等,找色块举例:

+ +

其它的请自行摸索,以后还会更新更多应用,之后会在 MaixHub 应用商店 更新。

作为串口模块使用

-

内置的各种应用可以直接当成串口模块使用,比如找色块找人脸找二维码等等,

如果是想把设备当成主控使用(或者你还不懂什么是串口模块)可以跳过这一步。

+

内置的各种应用可以直接当成串口模块使用,比如找色块找人脸找二维码等等,

使用方法:

  • 硬件连接: 可以给设备接上Type-C一转二小板,这样我们就能将设备通过串口连接到你的主控上了,比如Arduino树莓派STM32等等。
  • 打开你想用的应用,比如二维码识别,当设备扫描到二维码就会通过串口把结果发送给你的主控了。
-

发送的串口波特率是 115200,数据格式是 8N1,协议遵循 Maix 串口通信协议标准,可以在MaixHub APP 找到对应的应用介绍查看协议。

+

发送的串口波特率是 115200,数据格式是 8N1,协议遵循 Maix 串口通信协议标准,可以在MaixHub APP 找到对应的应用介绍查看协议。

准备连接电脑和设备

为了后面电脑(PC)能和 设备(MaixCAM)通信,我们要让它们在同一个局域网内,提供了两种方式:

    -
  • 方法一:无线连接, 设备使用 WiFi 连接到电脑连接的同一个路由器或者 WiFi 热点下: 在设备的设置 -> WiFi 设置中连接到你的 WiFi 即可。
  • +
  • 方法一 (强烈推荐):无线连接, 设备使用 WiFi 连接到电脑连接的同一个路由器或者 WiFi 热点下: 在设备的设置 -> WiFi 设置中连接到你的 WiFi 即可。
  • 方法二:有线连接, 设备通过 USB 线连接到电脑,设备会虚拟成一个 USB 网卡,这样和电脑就通过 USB 在同一局域网了。
-

方案二在不同电脑系统中有不同设置方法:

-
    -
  • Linux: 无需额外设置,插上 USB 线即可, 使用 ifconfig 或者 ip addr 查看到 usb0 网卡
  • +
    +

    方案二因为要用 USB 和驱动,可能会遇到一些问题,所以推荐直接用 WiFi 开始,可以在 FAQ 中找常见问题。

    +
    +
    +方案二在不同电脑系统中有不同设置方法,点击展开 +
      +
    • Linux: 无需额外设置,插上 USB 线即可, 使用 ifconfig 或者 ip addr 查看到 usb0 网卡,注意 这里看到的 ip 比如 10.131.167.100 是电脑的 ip, 设备的 ip 是最后一位改为110.131.167.1
    • Windows: 可以先确认网络适配器里面是否多了一个 RNDIS 设备,如果有就直接能用。否则需要手动安装 RNDIS 网卡驱动:
      • 打开电脑的设备管理器
      • 然后在其它设备里面找个一个带问号的 RNDIS 设备,右键选择更新驱动程序
      • @@ -268,21 +306,24 @@

        -
      • MacOS: 无需额外设置,插上 USB 线即可, 使用 ifconfig 或者 ip addr 查看到 usb0 网卡
      • +
      • MacOS: 无需额外设置,插上 USB 线即可, 使用 ifconfig 或者 ip addr 查看到 usb0 网卡,注意 这里看到的 ip 比如 10.131.167.100 是电脑的 ip, 设备的 ip 是最后一位改为110.131.167.1
      +
    +

    开发环境准备

    • 下载 MaixVision 并安装。
    • 使用 Type-C 连接设备和电脑,打开 MaixVision,点击左下角的“连接”按钮,会自动搜索设备,稍等一下就能看到设备,点击设备有点的连接按钮以连接设备。
    -

    如果没有扫描到设备,你也可以在设备的 设置 -> 设备信息 中查看设备的 IP 地址手动输入。

    +

    如果没有扫描到设备,你也可以在设备设置 -> 设备信息 中查看设备的 IP 地址手动输入, 也可以在 FAQ 中找到解决方法。

    +

    连接成功后,设备的功能选择界面会消失,屏幕会黑屏,释放了所有硬件资源,如果仍然有画面显示,可以断开连接重连。

    这里有 MaixVision 的使用示例视频:

    运行例程

    点击 MaixVision 左侧的示例代码,选择一个例程,点击左下角运行按钮将代码发送到设备上运行。

    比如:

      -
    • hello.py,点击运行按钮,就能看到 MaixVision 终端有来自设备打印的Hello MaixPy!了。
    • +
    • hello_maix.py,点击运行按钮,就能看到 MaixVision 终端有来自设备打印的消息,以及右上角出现了图像。
    • camera_display.py,这个例程会打开摄像头并在屏幕上显示摄像头的画面。
    @@ -298,6 +339,9 @@

    运行例程

  • yolov5.py 会检测摄像头画面中的物体框出来并显示到屏幕上,支持 80 种物体的检测,具体请看YOLOv5 物体检测

其它例程可以自行尝试。

+
+

如果你使用相机例程遇到了图像显示卡顿,可能是网络不通畅,或者 USB 线质量或者主机 USB 质量太差造成,可以更换连接方式或者更换线缆、主机 USB 口或者电脑等。

+

安装应用到设备

上面是在设备中运行代码,MaixVision 断开后代码就会停止运行,如果想让代码出现在开机菜单中,可以打包成应用安装到设备上。

点击 MaixVision 左下侧的安装应用按钮,填写应用信息,会将应用安装到设备上,然后在设备上就能看到应用了。
@@ -323,7 +367,8 @@

分享交流

  • MaixPy (v4) AI 视觉交流大群: 862340358
  • -
  • Telegram: MaixPy
  • +
  • Telegram: MaixPy
  • +
  • MaixPy 源码问题: MaixPy issue
  • 商业合作或批量购买请联系 support@sipeed.com 。
  • diff --git a/maixpy/doc/zh/modules/acc.html b/maixpy/doc/zh/modules/acc.html index e42c13b..c8e43ae 100644 --- a/maixpy/doc/zh/modules/acc.html +++ b/maixpy/doc/zh/modules/acc.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/modules/thermal_cam.html b/maixpy/doc/zh/modules/thermal_cam.html index 0e5d328..03a293d 100644 --- a/maixpy/doc/zh/modules/thermal_cam.html +++ b/maixpy/doc/zh/modules/thermal_cam.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/modules/tof.html b/maixpy/doc/zh/modules/tof.html index 634b1e1..e20397c 100644 --- a/maixpy/doc/zh/modules/tof.html +++ b/maixpy/doc/zh/modules/tof.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/peripheral/gpio.html b/maixpy/doc/zh/peripheral/gpio.html index c38b1fa..f282cd7 100644 --- a/maixpy/doc/zh/peripheral/gpio.html +++ b/maixpy/doc/zh/peripheral/gpio.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/peripheral/i2c.html b/maixpy/doc/zh/peripheral/i2c.html index 6dc7556..1125b99 100644 --- a/maixpy/doc/zh/peripheral/i2c.html +++ b/maixpy/doc/zh/peripheral/i2c.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/peripheral/pwm.html b/maixpy/doc/zh/peripheral/pwm.html index 90c7f9d..7edfaba 100644 --- a/maixpy/doc/zh/peripheral/pwm.html +++ b/maixpy/doc/zh/peripheral/pwm.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/peripheral/spi.html b/maixpy/doc/zh/peripheral/spi.html index 9cbcc34..2641901 100644 --- a/maixpy/doc/zh/peripheral/spi.html +++ b/maixpy/doc/zh/peripheral/spi.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/peripheral/uart.html b/maixpy/doc/zh/peripheral/uart.html index 8d47fd5..ed57850 100644 --- a/maixpy/doc/zh/peripheral/uart.html +++ b/maixpy/doc/zh/peripheral/uart.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/peripheral/wdt.html b/maixpy/doc/zh/peripheral/wdt.html index 06cc9c3..923d040 100644 --- a/maixpy/doc/zh/peripheral/wdt.html +++ b/maixpy/doc/zh/peripheral/wdt.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/pro/compile_os.html b/maixpy/doc/zh/pro/compile_os.html index 42b3c58..038f6fe 100644 --- a/maixpy/doc/zh/pro/compile_os.html +++ b/maixpy/doc/zh/pro/compile_os.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/sidebar.yaml b/maixpy/doc/zh/sidebar.yaml index dbb703b..f82aa7b 100644 --- a/maixpy/doc/zh/sidebar.yaml +++ b/maixpy/doc/zh/sidebar.yaml @@ -30,7 +30,7 @@ items: - file: vision/image_ops.md label: 基本图像操作 - file: vision/find_blobs.md - label: 找色块 + label: 寻找色块 - file: vision/qrcode.md label: 二维码识别 - file: vision/apriltag.md @@ -43,7 +43,7 @@ items: label: AI 物体分类 - file: vision/yolov5.md label: YOLOv5 物体检测 -- file: vision/face_recognize.md +- file: vision/face_recognition.md label: 人脸识别 - file: vision/body_key_points.md label: 人体关键点检测 @@ -57,6 +57,8 @@ items: label: OCR 文字识别 - file: vision/maixhub_train.md label: MaixHub 在线 AI 模型训练 +- file: vision/customize_model.md + label: 自定义模型 - label: AI 听觉 diff --git a/maixpy/doc/zh/source_code/add_c_module.html b/maixpy/doc/zh/source_code/add_c_module.html index 2b951ed..dfebdd7 100644 --- a/maixpy/doc/zh/source_code/add_c_module.html +++ b/maixpy/doc/zh/source_code/add_c_module.html @@ -44,10 +44,10 @@ - MaixPy + 给 MaixPy 添加一个 C/C++ 模块 - MaixPy - + @@ -115,20 +115,21 @@

    MaixPy

    - + - + + @@ -174,7 +175,7 @@

    MaixPy

    -

    +

    给 MaixPy 添加一个 C/C++ 模块

    @@ -188,10 +189,6 @@

    - -
    @@ -213,7 +210,16 @@

    - +

    简介

    +

    有时候需要高效地执行某个函数, Python 的速度无法满足时,就可以使用 C/C++ 或者其它编译型语言来实现。

    +

    通用函数封装

    +

    如果你想封装的函数实现的功能不依赖 MaixPy 的其它功能,直接使用 Python 使用 C/C++ 添加模块的通用方法,具体方法可以自行百度,比如 ffi, ctype 等

    +
    +

    欢迎 PR 添加方法

    +
    +

    如果你的模块还想依赖 MaixPy 的其它基础 API

    +

    你需要先学会编译使用 MaixCDK, 因为 MaixPy 就是从 MaixCDK 生成的 API, MaixPy 里面有的功能 MaixCDK 里面也有, 然后 。。。TODO

    +
    diff --git a/maixpy/doc/zh/source_code/build.html b/maixpy/doc/zh/source_code/build.html index 8d3ab47..408b383 100644 --- a/maixpy/doc/zh/source_code/build.html +++ b/maixpy/doc/zh/source_code/build.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/source_code/contribute.html b/maixpy/doc/zh/source_code/contribute.html index 9add24b..a5a965a 100644 --- a/maixpy/doc/zh/source_code/contribute.html +++ b/maixpy/doc/zh/source_code/contribute.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/source_code/faq.html b/maixpy/doc/zh/source_code/faq.html index bdc404e..1f4a1e0 100644 --- a/maixpy/doc/zh/source_code/faq.html +++ b/maixpy/doc/zh/source_code/faq.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/source_code/maixcdk.html b/maixpy/doc/zh/source_code/maixcdk.html index 9a5abe2..440d128 100644 --- a/maixpy/doc/zh/source_code/maixcdk.html +++ b/maixpy/doc/zh/source_code/maixcdk.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/video/jpeg_streaming.html b/maixpy/doc/zh/video/jpeg_streaming.html index 5a6d355..474130c 100644 --- a/maixpy/doc/zh/video/jpeg_streaming.html +++ b/maixpy/doc/zh/video/jpeg_streaming.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/vision/ai.html b/maixpy/doc/zh/vision/ai.html index 2d9d3fe..55658f2 100644 --- a/maixpy/doc/zh/vision/ai.html +++ b/maixpy/doc/zh/vision/ai.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + diff --git a/maixpy/doc/zh/vision/apriltag.html b/maixpy/doc/zh/vision/apriltag.html index 3411d30..a3d3166 100644 --- a/maixpy/doc/zh/vision/apriltag.html +++ b/maixpy/doc/zh/vision/apriltag.html @@ -44,10 +44,10 @@ - MaixPy + MaixPy 识别Apriltag标签 - MaixPy - + @@ -115,20 +115,21 @@

    MaixPy

    - + - + + @@ -174,7 +175,7 @@

    MaixPy

    -

    +

    MaixPy 识别Apriltag标签

    @@ -188,8 +189,8 @@

    -
    @@ -210,10 +211,164 @@

    + +
    + + 更新历史 +
    + + + + + + + + + + + + + + + + + + + +
    日期版本作者更新内容
    2024-04-031.0.0lxowalle + + 初版文档 + +
    +
    +
    +
    - +

    阅读本文前,确保已经知晓如何开发MaixPy,详情请阅读MaixVision -- MaixPy 编程 + 图形化积木编程

    +

    简介

    +

    本文介绍如何使用MaixPy来识别Apriltag标签

    +

    使用 MaixPy 识别Apriltag标签

    +

    MaixPy的 maix.image.Image中提供了find_apriltags方法,可以可以识别apriltag标签。

    +

    如何识别Apriltag标签

    +

    一个简单的示例,实现识别apriltag标签并画框

    + +
    from maix import image, camera, display
    +
    +cam = camera.Camera()
    +disp = display.Display()
    +
    +families = image.ApriltagFamilies.TAG36H11
    +x_scale = cam.width() / 160
    +y_scale = cam.height() / 120
    +
    +while 1:
    +    img = cam.read()
    +
    +    new_img = img.resize(160, 120)
    +    apriltags = new_img.find_apriltags(families = families)
    +    for a in apriltags:
    +        corners = a.corners()
    +
    +        for i in range(4):
    +            corners[i][0] = int(corners[i][0] * x_scale)
    +            corners[i][1] = int(corners[i][1] * y_scale)
    +        x = int(a.x() * x_scale)
    +        y = int(a.y() * y_scale)
    +        w = int(a.w() * x_scale)
    +        h = int(a.h() * y_scale)
    +
    +        for i in range(4):
    +            img.draw_line(corners[i][0], corners[i][1], corners[(i + 1) % 4][0], corners[(i + 1) % 4][1], image.COLOR_RED)
    +        img.draw_string(x + w, y, "id: " + str(a.id()), image.COLOR_RED)
    +        img.draw_string(x + w, y + 15, "family: " + str(a.family()), image.COLOR_RED)
    +
    +    disp.show(img)
    +
    +

    步骤:

    +
      +
    1. 导入image、camera、display模块

      + +
      from maix import image, camera, display
      +
      +
    2. +
    3. 初始化摄像头和显示

      + +
      cam = camera.Camera()
      +disp = display.Display()
      +
      +
    4. +
    5. 从摄像头获取图片并显示

      + +
      while 1:
      +    img = cam.read()
      +    disp.show(img)
      +
      +
    6. +
    7. 调用find_apriltags方法识别摄像头图片中的apriltag标签

      + +
      new_img = img.resize(160, 120)
      +apriltags = new_img.find_apriltags(families = families)
      +
      +
        +
      • img是通过cam.read()读取到的摄像头图像
      • +
      • img.resize(160, 120)是用来将图像缩放得更小,用更小的图像来让算法计算得更快
      • +
      • new_img.find_apriltags(families = families)用来寻找apriltag标签,并将查询结果保存到apriltags,以供后续处理。其中families用来选择apriltag族,默认为image.ApriltagFamilies.TAG36H11
      • +
      +
    8. +
    9. 处理识别标签的结果并显示到屏幕上

      + +
      for a in apriltags:
      +    # 获取位置信息(并映射坐标到原图)
      +    x = int(a.x() * x_scale)
      +    y = int(a.y() * y_scale)
      +    w = int(a.w() * x_scale)
      +    corners = a.corners()
      +    for i in range(4):
      +        corners[i][0] = int(corners[i][0] * x_scale)
      +        corners[i][1] = int(corners[i][1] * y_scale)
      +
      +    # 显示
      +    for i in range(4):
      +        img.draw_line(corners[i][0], corners[i][1], corners[(i + 1) % 4][0], corners[(i + 1) % 4][1], image.COLOR_RED)
      +        img.draw_string(x + w, y, "id: " + str(a.id()), image.COLOR_RED)
      +        img.draw_string(x + w, y + 15, "family: " + str(a.family()), image.COLOR_RED)
      +        img.draw_string(x + w, y + 30, "rotation : " + str(180 * a.rotation() // 3.1415), image.COLOR_RED)
      +
      +
        +
      • 遍历apriltags的成员,apriltags是通过img.find_apriltags()扫描apriltag标签的结果,如果找不到标签则apriltags的成员为空
      • +
      • x_scaley_scale用来映射坐标,由于new_img是缩放后的图像,计算apriltag的坐标时需要经过映射后才能正常的画在原图img
      • +
      • a.corners()用来获取已扫描到的标签的四个顶点坐标,img.draw_line()利用这四个顶点坐标画出标签的形状
      • +
      • img.draw_string用来显示标签的内容,其中a.x()a.y()用来获取标签左上角坐标x和坐标y,a.id()用来获取标签的id,a.family()用来获取标签族类型,a.rotation()用来获取标签的旋转角度。
      • +
      +
    10. +
    +

    常用参数说明

    +

    列举常用参数说明,如果没有找到可以实现应用的参数,则需要考虑是否使用其他算法实现,或者基于目前算法的结果扩展所需的功能

    + + + + + + + + + + + + + + + + + + + + +
    参数说明示例
    roi设置算法计算的矩形区域,roi=[x, y, w, h],x,y表示矩形区域左上角坐标,w,h表示矩形区域的宽度和高度,默认为整张图片计算坐标为(50,50),宽和高为100的区域
    img.find_apriltags(roi=[50, 50, 100, 100])
    familiesapriltag标签家族类型扫描TAG36H11家族的标签
    img.find_apriltags(families = image.ApriltagFamilies.TAG36H11)
    +

    本文介绍常用方法,更多 API 请看 API 文档的 image 部分。

    +
    diff --git a/maixpy/doc/zh/vision/body_key_points.html b/maixpy/doc/zh/vision/body_key_points.html index 7bdfa7d..623b68f 100644 --- a/maixpy/doc/zh/vision/body_key_points.html +++ b/maixpy/doc/zh/vision/body_key_points.html @@ -44,10 +44,10 @@ - MaixPy + MaixPy 检测人体关键点姿态检测 - MaixPy - + @@ -115,20 +115,21 @@

    MaixPy

    - + - + + @@ -174,7 +175,7 @@

    MaixPy

    -

    +

    MaixPy 检测人体关键点姿态检测

    @@ -188,10 +189,6 @@

    - -
    @@ -213,14 +210,32 @@

    - +

    简介

    +

    使用 MaixPy 可以轻松检测人体关节的关键点的坐标,用在姿态检测比如坐姿检测,体感游戏输入等。

    +

    使用

    +

    使用 MaixPy 的 maix.nn.BodyKeyPoints 类可以轻松实现:

    + +
    from maix import nn, image, display
    +
    +detector = nn.BodyKeyPoints(model="/root/models/body_key_points.mud")
    +cam = camera.Camera(recognizer.input_width(), recognizer.input_height(), recognizer.input_format())
    +dis = display.Display()
    +
    +while 1:
    +    img = cam.read()
    +    points = detector.detect(img)
    +    for point in points:
    +        img.draw_circle(point[0], point[1], 3, color = image.COLOR_RED, thickness=-1)
    +    dis.show(img)
    +
    +
    @@ -265,8 +285,8 @@

    使用方法

    @@ -222,7 +341,7 @@

    - 找色块 + 寻找色块 diff --git a/maixpy/doc/zh/vision/self_learn_classifier.html b/maixpy/doc/zh/vision/self_learn_classifier.html index 4415c1e..df5d236 100644 --- a/maixpy/doc/zh/vision/self_learn_classifier.html +++ b/maixpy/doc/zh/vision/self_learn_classifier.html @@ -44,10 +44,10 @@ - MaixPy + MaixPy 自学习分类器 - MaixPy - + @@ -115,20 +115,21 @@

    MaixPy

    - + - + + @@ -174,7 +175,7 @@

    MaixPy

    -

    +

    MaixPy 自学习分类器

    @@ -188,10 +189,6 @@

    - -
    @@ -213,7 +210,51 @@

    - +

    MaixPy 自学习分类器介绍

    +

    一般情况下我们要识别新的类别,需要在电脑端重新采集数据集并训练,步骤很麻烦,难度较高,这里提供一种不需要电脑端训练,而是直接在设备端就能秒学习新的物体,适合场景不太复杂的使用场景。

    +

    比如眼前有饮料瓶和手机,使用设备分别拍一张它们的照片作为两个分类的依据,然后再采集几张他们各个角度的照片,提取它们的特征保存,然后识别时根据图像的特征值分别和保存的特征值进行对比,和保存的哪个更相近就认为是对应的分类。

    +

    MaixPy 中使用自学习分类器

    +

    步骤:

    +
      +
    • 采集 n 张分类图。
    • +
    • 采集 n*m 张图,每个分类采集 m 张,顺序无所谓。
    • +
    • 启动学习。
    • +
    • 识别图像输出结果。
    • +
    +

    简洁版本代码,完整版本请看例程里面的完整代码。

    + +
    from maix import nn, image
    +
    +classifier = nn.SelfLearnClassifier(model="/root/models/mobilenetv2.mud", feature_layer=None)
    +
    +img1 = image.load("/root/1.jpg")
    +img2 = image.load("/root/2.jpg")
    +img3 = image.load("/root/3.jpg")
    +sample_1 = image.load("/root/sample_1.jpg")
    +sample_2 = image.load("/root/sample_2.jpg")
    +sample_3 = image.load("/root/sample_3.jpg")
    +sample_4 = image.load("/root/sample_4.jpg")
    +sample_5 = image.load("/root/sample_5.jpg")
    +sample_6 = image.load("/root/sample_6.jpg")
    +
    +
    +classifier.add_class(img1)
    +classifier.add_class(img2)
    +classifier.add_class(img3)
    +classifier.add_sample(sample_1)
    +classifier.add_sample(sample_2)
    +classifier.add_sample(sample_3)
    +classifier.add_sample(sample_4)
    +classifier.add_sample(sample_5)
    +classifier.add_sample(sample_6)
    +
    +classifier.learn()
    +
    +img = image.load("/root/test.jpg")
    +max_idx, max_score = classifier.classify(img)
    +print(maix_idx, max_score)
    +
    +
    diff --git a/maixpy/doc/zh/vision/self_learn_detector.html b/maixpy/doc/zh/vision/self_learn_detector.html index cea7e52..48883f2 100644 --- a/maixpy/doc/zh/vision/self_learn_detector.html +++ b/maixpy/doc/zh/vision/self_learn_detector.html @@ -44,10 +44,10 @@ - MaixPy + MaixPy 自学习检测器 - MaixPy - + @@ -115,20 +115,21 @@

    MaixPy

    - + - + + @@ -174,7 +175,7 @@

    MaixPy

    -

    +

    MaixPy 自学习检测器

    @@ -188,10 +189,6 @@

    - -
    @@ -213,7 +210,12 @@

    - +

    MaixPy 自学习检测器

    +

    和自学习分类器类似,不需要训练,直接拍摄几张要检测的物体照片即可实现检测,在简单检测场景下十分好用。
    +和自学习分类器不同的是因为是检测器,会有物体的坐标和大小。

    +

    MaixPy 中使用自学习检测器

    +

    TODO:

    +
    diff --git a/maixpy/doc/zh/vision/yolov5.html b/maixpy/doc/zh/vision/yolov5.html index 409f573..b93b9bf 100644 --- a/maixpy/doc/zh/vision/yolov5.html +++ b/maixpy/doc/zh/vision/yolov5.html @@ -115,20 +115,21 @@

    MaixPy

    - + - + + @@ -252,7 +253,7 @@

    - + 人脸识别 diff --git a/maixpy/en/index.html b/maixpy/en/index.html index f98af80..3053ae3 100644 --- a/maixpy/en/index.html +++ b/maixpy/en/index.html @@ -220,9 +220,9 @@

    Hardware peripheral control:

    from maix import uart
     
    -ports = uart.list_ports()
    +dvices = uart.list_devices()
     
    -serial = uart.UART(ports[0], 115200)
    +serial = uart.UART(devices[0], 115200)
     serial.write_str("hello world")
     print("received:", serial.read(timeout = 2000))
     
    @@ -232,9 +232,10 @@

    Hardware peripheral control:

    from maix import i2c
     
    -devices = i2c.scan()
    -
    +devices = i2c.list_devices()
     dev1 = i2c.I2C(devices[0], freq=100000)
    +slaves = dev1.scan()
    +print("find slaves:", slaves)
     dev1.writeto(0x12, b'hello')
     print("received:", dev1.readfrom(0x12, 5))
     
    diff --git a/maixpy/index.html b/maixpy/index.html index a727ee7..089ff76 100644 --- a/maixpy/index.html +++ b/maixpy/index.html @@ -220,9 +220,9 @@

    硬件外设控制,不在话下:

    from maix import uart
     
    -ports = uart.list_ports()
    +dvices = uart.list_devices()
     
    -serial = uart.UART(ports[0], 115200)
    +serial = uart.UART(devices[0], 115200)
     serial.write_str("hello world")
     print("received:", serial.read(timeout = 2000))
     
    @@ -232,9 +232,10 @@

    硬件外设控制,不在话下:

    from maix import i2c
     
    -devices = i2c.scan()
    -
    +devices = i2c.list_devices()
     dev1 = i2c.I2C(devices[0], freq=100000)
    +slaves = dev1.scan()
    +print("find slaves:", slaves)
     dev1.writeto(0x12, b'hello')
     print("received:", dev1.readfrom(0x12, 5))
     
    diff --git a/maixpy/sitemap.xml b/maixpy/sitemap.xml index f79661e..d3d7860 100644 --- a/maixpy/sitemap.xml +++ b/maixpy/sitemap.xml @@ -1,217 +1,235 @@ - https://wiki.sipeed.com/maixpy/api/index.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/nn/F.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/protocol.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/comm.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/tensor.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/rtsp.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/nn/F.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/util.html + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/peripheral.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/app.html - 2024-03-28 + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/i18n.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/index.html + 2024-04-19 + weekly + 1.0 + + + https://wiki.sipeed.com/maixpy/api/maix/touchscreen.html + 2024-04-19 + weekly + 1.0 + + + https://wiki.sipeed.com/maixpy/api/maix/peripheral/wdt.html + 2024-04-19 + weekly + 1.0 + + + https://wiki.sipeed.com/maixpy/api/maix/peripheral/spi.html + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/example.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/thread.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/err.html - 2024-03-28 + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/touchscreen.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/peripheral/timer.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/peripheral/wdt.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/peripheral/i2c.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/peripheral/spi.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/peripheral/gpio.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/comm.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/i18n.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/sys.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/protocol.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/display.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/tensor.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/peripheral/timer.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/sys.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/peripheral/i2c.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/display.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/api/maix/peripheral/gpio.html - 2024-03-28 + https://wiki.sipeed.com/maixpy/api/maix/video.html + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/peripheral/uart.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/peripheral/key.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/peripheral/adc.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/peripheral/pwm.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/time.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/fs.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/camera.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/nn.html - 2024-03-28 + 2024-04-19 weekly 1.0 https://wiki.sipeed.com/maixpy/api/maix/image.html - 2024-03-28 + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/faq.html - 2024-03-31 + https://wiki.sipeed.com/maixpy/doc/zh/basic/app.html + 2024-04-08 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/basic/python.html - 2024-03-31 + https://wiki.sipeed.com/maixpy/doc/zh/basic/os.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/basic/linux_basic.html - 2024-03-12 + https://wiki.sipeed.com/maixpy/doc/zh/basic/python_pkgs.html + 2024-03-31 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/basic/maixvision.html + https://wiki.sipeed.com/maixpy/doc/zh/basic/app_usage.html 2024-03-31 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/basic/app.html - 2024-03-31 + https://wiki.sipeed.com/maixpy/doc/zh/faq.html + 2024-04-17 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/basic/os.html - 2024-04-01 + https://wiki.sipeed.com/maixpy/doc/zh/basic/python.html + 2024-03-31 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/basic/python_pkgs.html - 2024-03-31 + https://wiki.sipeed.com/maixpy/doc/zh/basic/linux_basic.html + 2024-03-12 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/basic/app_usage.html + https://wiki.sipeed.com/maixpy/doc/zh/basic/maixvision.html 2024-03-31 weekly 1.0 @@ -241,182 +259,188 @@ 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/yolov5.html + https://wiki.sipeed.com/maixpy/doc/zh/video/jpeg_streaming.html 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/face_recognize.html + https://wiki.sipeed.com/maixpy/doc/zh/source_code/faq.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/camera.html - 2024-04-03 + https://wiki.sipeed.com/maixpy/doc/zh/source_code/build.html + 2024-04-01 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/video/jpeg_streaming.html - 2024-04-03 + https://wiki.sipeed.com/maixpy/doc/zh/source_code/maixcdk.html + 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/source_code/faq.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/vision/classify.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/source_code/build.html - 2024-04-01 + https://wiki.sipeed.com/maixpy/doc/zh/vision/image_ops.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/source_code/maixcdk.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/vision/maixhub_train.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/peripheral/i2c.html - 2024-03-30 + https://wiki.sipeed.com/maixpy/doc/zh/vision/ai.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/peripheral/gpio.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/source_code/add_c_module.html + 2024-04-08 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/peripheral/uart.html + https://wiki.sipeed.com/maixpy/doc/zh/source_code/contribute.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/peripheral/pwm.html + https://wiki.sipeed.com/maixpy/doc/zh/peripheral/wdt.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/modules/acc.html + https://wiki.sipeed.com/maixpy/doc/zh/peripheral/spi.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/audio/recognize.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/vision/qrcode.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/index.html - 2024-04-01 + https://wiki.sipeed.com/maixpy/doc/zh/vision/yolov5.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/source_code/add_c_module.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/vision/camera.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/source_code/contribute.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/vision/find_blobs.html + 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/peripheral/wdt.html + https://wiki.sipeed.com/maixpy/doc/zh/modules/acc.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/peripheral/spi.html + https://wiki.sipeed.com/maixpy/doc/zh/audio/recognize.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/ai.html - 2024-04-03 + https://wiki.sipeed.com/maixpy/doc/zh/index.html + 2024-04-19 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/self_learn_detector.html + https://wiki.sipeed.com/maixpy/doc/zh/peripheral/i2c.html 2024-03-30 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/apriltag.html + https://wiki.sipeed.com/maixpy/doc/zh/peripheral/gpio.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/self_learn_classifier.html + https://wiki.sipeed.com/maixpy/doc/zh/peripheral/uart.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/find_blobs.html - 2024-04-03 + https://wiki.sipeed.com/maixpy/doc/zh/peripheral/pwm.html + 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/classify.html - 2024-04-03 + https://wiki.sipeed.com/maixpy/doc/zh/vision/self_learn_detector.html + 2024-04-08 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/image_ops.html + https://wiki.sipeed.com/maixpy/doc/zh/vision/apriltag.html 2024-04-03 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/maixhub_train.html - 2024-04-03 + https://wiki.sipeed.com/maixpy/doc/zh/vision/custmize_model.html + 2024-04-08 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/object_track.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/vision/self_learn_classifier.html + 2024-04-08 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/display.html - 2024-03-31 + https://wiki.sipeed.com/maixpy/doc/zh/vision/face_recognition.html + 2024-04-08 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/body_key_points.html + https://wiki.sipeed.com/maixpy/doc/zh/vision/object_track.html 2024-03-07 weekly 1.0 - https://wiki.sipeed.com/maixpy/doc/zh/vision/qrcode.html - 2024-03-07 + https://wiki.sipeed.com/maixpy/doc/zh/vision/display.html + 2024-03-31 + weekly + 1.0 + + + https://wiki.sipeed.com/maixpy/doc/zh/vision/body_key_points.html + 2024-04-08 weekly 1.0 @@ -428,7 +452,7 @@ https://wiki.sipeed.com/maixpy/doc/en/no_translate.html - 2024-04-03 + 2024-04-19 weekly 1.0 diff --git a/maixpy/static/image/find_blobs_app.jpg b/maixpy/static/image/find_blobs_app.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f01d093223e61ce6de24484c72eeb2421648f4dc GIT binary patch literal 98869 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Νb%fmMu0*{h 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 kX2lgc99ON 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

    g9)qK{ZP9hzhWmC7uKeG`5og!e*H|nT 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�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 H<`Mq`W$#lA literal 0 HcmV?d00001 diff --git a/maixpy/static/image/maixcam_font.png b/maixpy/static/image/maixcam_font.png new file mode 100644 index 0000000000000000000000000000000000000000..268ea6e66a2cb869effdb074f18fbe65d32005e4 GIT binary patch literal 68501 zcmcdy1yfv2lqKlk?(Xg$d~mlxg1fuBySqzphX5hCJHefxL4pT&+sU`Je_^{`Q3J)) z>%M*U+;gK!G9si@$-OyAcK&V5CeJrI_viS zMl|YA^JuPlcc-LB>%L{)sD<)TLrQS3`{^fqvIMHq#^WLu3lUQJ@ak*sk z8;!>R=BeqRX`NIGaSBnfl03~Y6vhRVAcTsb1ds}l%oi2uY3RR{+#U!r*Raskbbs*O z?1RcS975c=JFTARxPCZz=!8K0e_OFVL96mcbMSetkPva7dQhEEzUzphegEXdl`DVg zPnxhth9vHU5>}MRhBRm6O_wPT2!RNbc-hShc7>d|5tF&qm&<>|Bj-B|V@Hv*zD>di zVKcL8T@O=(lp|&v`NS4x9L0tdy~jsJ<&%eR8paO0jSAs}2JFL=pAJQXoaX0)gFu<) zj~0e1Zj{_Z+lEOZic~|G=7&HDO0pt?AP-ZKi`wIJBBB+Jv_i^rMS~pROXP{|Q7S%7 zejnh6Gi7=ge5NQ%E8R1vddCY>!6+m|-##Fch!Y{ zp%*WBgoJ}*V*qFUOpXyi*)0gdvdzJo4oRF~23rg-!hZWfcgmuf1p0UJX~#|4y!FT` zRnW28cs?-!K~6;)3)@Hr|6#n2eWehWAeNr@a9I&GmMuV8=uXg@>x2sl>cpFbK7C@* zU7yw`Sdgf^?!o`=IY$~C!dgXS;HnMl~H6e=&-&E;yf3Va__;4yta9cS9t?^ir(pFg16(m)` zS8^ow-+4bHf?{lmbm<9F)4cKqK3{sd{4q(1W91j?f=3=qVjF>eQb`a4ByS5n>Fpkp zvwsFrVo7K#ALmTG$c|7d|J@~`hN@9$y28UW!NSBcFAT|wdMh_eP0g|kLc6M+Xhtf6 zuKFF@pz*pZX-QzX?FFpZ%~l1}wV4=?nal%4>68C(q@W2k)(J{oabGb>hlRw#2T2T( zW#b%JLd**($JyDC!Caw7fM}fQ>Ep*$foem;$vuf|W+C5$8;7(p#U6*w6OJntNXQG2 zz4K0P`cn_mA;Yg^cC3-A_4^UnOxEHa*RIAC;oD?lR7e$-*S%=<57cXK}ARAOvR9@SbUux}o z22T2(e`3UZ+Ua>Ap=s#t*}n5{Ac(Nb zV&{>g*B|94b=CJ2DsvMeH|qj1*gFwf67{i>m&yUEAWEV8;=eRv5)w%(>|XV9gWe&r_!=I+p&|@UWrKuc^sOub|H=bYxu4odWVVZXZTJ6IOtjhMrnldmtv41IL zbY-`W#?8gFc1hL}iHHUyjZ$3D3bAC;+L}Z12)WMxxGv38U^{_^wGP>zKmZj~f;7VM z6Nv5Q>5~`XpB(j`^zhuTc;C{Kkw_F$e{|^EOb&6UeXtT@Kao_wgt!QmzNEbP)G)5P zz1$j{zNlZ+nHh0DNCuVz#?{;Qoo^;@QJoW+x$_~8m%==7 zf#2KP!^6k#zq|z0EL9hsX6WRZ2D5uW_c1Qn97Nl=TRFDteg0;>P#$i-uC$k-QVU`D zx+~K0^XE@fu^mU0kexF&vvqt#R+G5=VZ8N8enV8FG*<%{l?;G*Ekh+HENdI`^$V5! z)>`Jm_lDcwpm<`fEN>gK{piH~gnl#VsfbkCl$Ourm6%moL5i>{JT%X3i}1`Z#O{IK z+uVu?$7WgFG7{NzH}&Dd0Z)Rrr)k`~Loz@GDRJH(!|R?`1IbI>9w~NtU!2QFVysH3 zJ_=3`9iDsE0NL9xCT7^z+fA^#yb0y@=6fX=sz)`)lbyD|8lLilfksVx`!EZY*&CG? z@NrZUB%J|@<|zdU$%N6SaIIy(yV*8v{kPN-$>VIhwi%w z?i#&XeBjmg$BR}(&eWd_kIp-m?T3a3|Bo0lzz-O)Z|q2eMQli$WBGmDvWbMW((Wzm zZ>9CJWyFT_6sBgME$+>kJ76TuigVeo!>FoKv1b%4*3#3Sd~#@5+y^9ZQ**7iHwMw0p)||&KB=0-QSP-vBB+Mk;?<6D!W$T^W^?)rp zl4WXOwT{teP{8l34FJG|vPVdj1P>3FWr-r0y19YcwAr{o;&qys&c@7g`Mi3q-ZiDb1F zhKw4>3K1n*cV8V@ErQjIa_H_}GI?=QuaZSl-}auuDn%mZ&5V57VI@t+*O%S&V*ueS zYlo@h(+`Y}jq}IEi`&V9+|#v0MNn6C6iV0aIU1S8mQ6R?pP9)N0%>DTB|SWksxf)u2fd zTFtk!*AxX=%(!k+yh&{#l&;Gfa2I!XBXp3bX|d60sTRmtxNO(nrlT;h30KsUXyq-!0gW}IqR5LR>DLv#7FO*;)U{MGrs3%+A7K>HWoT`h)oN@s1%ZH za1AIHS#BF<#ohE^K&)nIU~-blZ+moh7Hzq~Ffln9y)>JFsQwh}D>;E*$lqXEe> z8`AK$GwjRed(yXhW*jy{hd%VxzH}Bd=dj)Q|0vxHo89!{*Br#$m-V2|Bs#maH}B*pV?^VPL6wm8bo5}RnV zj;2XE3xkXCf>%Q*%%wktOeuS4Y>nARFaOMiKAob)#LNtD$%Y$#9#klwp2U}cIr>Ef ztO}++KCpS5wT8W)1_$Q?C|YIH3P_XjMm>o-BGH~d(0~_jB_hw=2cFPHk6RCag-snC z{_DfY`hS8s3?<(9n{uR=T-SRA5Idd0m66AX&w^iL%V}#}0wA%PhtNOM6jpQ=gdWFYGnl*r^YF zz+CL5yzZuK(zN~u#5d z8Xw*u75P44{pow}$8V9>cS1*9;ML>aOowB)`+i4zd;5pIi_0~XtE(&6W9eccK$;rw z+G5nIp#H#WUw=AE1sEALFaX&DcaB(GP0Oxr zFRDci7|h>G#t~_IrvFlyfZSuIb*GlUIRfNZ)j>D1N=PS?o;j#)ijv#ZS_U0WI>Tx8fE(Phs!=| zANoG0*?!;OtPol4NH`7GQ#Bry?k|FK99ITK3olJb$$D|I==>NA20doF9KNY(2{@Zb z=8(zbQwpVaKxhARbismWs;#ZvH$Tszw=xX2J1J>tm8#O}NYLz*tNz0$x%>}TFRT4E zk;h5L##Zd2$E!qA;_QNg_q*fcst>QT)&20;*jR}n+0u!yT9vF)s)F2+FKHx|N+w-3 z>E8<;wwbSvBGTLnzRHL(=-+#|rvfc<^n7&llZeFAD)zIePbjK{42e0+^Dpz#5y$bq zzG9nYn3+8oN`%P#W!U^q!C9!jB}4;@P2;P7U=x+k>C{0T*NxvN2vcemPPa0ABmui* z2f0s>vsEE*^YXPinTj`6@}bC+bWZ|7kGC8oPp113hHH>p{M|-KTUEniNe6>LR z>vR1)70aNzJ`$>Q7+JOJZz_D!a#vi9VB%4+=C!`XMWg|?p|LT#k)r~wc!AFb43b4> zqwz8_Lot1n+Nn19eoa?q(JRA&gB!0=oo8<{&_}nR4OF*>{(|rm_TG&&Nz3jmM(ciU z9F4$qrW)@lRco%gI;t&NcEGK>8784AJi#jh!h%+4Yk|>-gT&e>gWt4V_j=9#vgAZ} zIt7lieSgBk`bSK(pSwH;pO5VJR5eZ$`5y6xPN}@99#z?)z9T;-g|E=9iTs*v^|qG5 zQNXDa4y@Xuy^2*2qQsUGp0sL@o~QItjqif{L?`PXXO}^W(c9V_+v~~*;q577pNppO zpI-H+l+^Hg^o!}sJ!m&XiYH2dgFa`y(w2a%QavZrzE10{%yqaZf6bb7KB4b1F70vO z?L~bY_gwy_AP#{=JJe{ZE*nz?c&*j6m0eOnk3CX3bO+{tASGSAuNA&2pQq-ioNYW^ zRxK0>@&QutMolwX-~qq&M;YAY_!)Juvt`1&V%W#aB{92CXt^8MZpmtu7-uN5 z^?Bak0Dhe4Lh3f<*=-0Z%f22e4K2t%++$C}B{2=bPX>qW5HF-*t5faROV&p;>ZL~= zw<$u4gGccZe$+2%+q|m6U0%F4f-(gYv-WPNX&EF~~>9%^t34g{<>B;A^xE%wJh!jRB9N019-!H%-o10TbLPjo9 zqi19Y|BM5v>L{KRb9`(K&NLz-BEV?|IG;sdv=Mhkj)OS&*oXPLC?pZo`*pGVW=7zV#`{e%qzEjOo$ORmDA5|qJ(7UvvcoFb(QL7rizR}rW zrJIM*WK>q;2{t!PE1_+)om`ZaI$O5FiWzK#%Vta}fw~aeN!r~Rt{Eu)jH+PO@II+| z6r=z(FZn!pizcj7tb4pZkXLO^9cyX0*_FGG-P3zhTuHd_k9dpN;@8b;HC>sy4I*X3 zCu;5}9JkwlF&NG*>Xk;gPoQvgYi(BItbwK$H_7x?t%t`Jjd06KCc1@g;{e^IJx;b` zOYDPeb#F=cHmbQFRc|tU#oW<34mllC06;WAs!UBbM$MUoAw5R1Y*S+ZW_U@BA)TEA zgC6<6C_C9HlDtkO$DE&&6MX1hxkQ0G(cyl|#=(IkNBmt!@w-l4TRE(d0^lw0v}61A zM&!e=ORP6lNyO7*+aEPvL0S22Jee}`<7l;UJlUcdW=4KI>;eu941yo$r#YHm=bH0Y z)XxS)V5?GB&_yXVfy z0Pj)K_EMfcm&BsN!q@y;PpiE#LMSXPP{mc%P?W9k#Oq9x$k?l4w}l|>(&{VI7`IYP zbd=7IuA{ANt*-p&NPe|$?Pvn%=p)+fBUJn;adqa%e1auAF`jCTM$q2DZMy~xGBqi1jnKR%(Y&TGqQj7`QYBH==`Ye$ z5qHBrvU(5~?&x>9yl&`!+5hq+D@I4+b0qt4G&HBINF?-JNJEoQ=h&iiDM;FL5nXRP z4g;3r)iz|9agv!&R91|`{^>4Otw~vttENP+WZ|w|=qt9c3jr{@^@1mqT*Fmi`+#^u zbfa=|AMPW&I_o;5_XcIXW*rAk{G^Hgvma`A9FMoS&&oN_A{f~YSmY0{mpAHQTeF4J;Js15qUE1+hC39#tVWc%^!9UbM z)FrjKz=BC{Tt+d6IEDl$V^?HfRsEO%^mxBP`HtIePuA!^o~>b2gH>`0j+lY$$;V~v zx`$Eh}B@apYeb@t}bGw62FlxAVVaJo%LPvLd<% zDKc-olcuo=Rg9P}ktz$oIR#D10V7SW>q8b6VqFc|1tvVJ2|%p=wVt}6!o?>fQ!QB) zGgNfTz)BmG!-4q0J)E=T^IA}KC5S=WpkCZeSxrv0PE(9N_`-J_kN>a&g0FSSLHOpV z1XZcd8hCZ?_~G<(a&j_I$j5E>S6P|)?u)SCjC@Bmd2V z7tyNtTvPOGb`&X{+8oJ|yHY9D6kijSwYVj;R7SEu>OkeX1K8^{MbyK*;V?1=5H+Nd zdU36ReB-uU8N!PDoE;CPWJn|5a!CxhbJ6na+N%`}$kX-lM(XpLEFHj+G-6UigC+7j zm&mBTpdRREXR_ORcz7tE>{~+IY8k(ew~d;XgXw);E9*^XvGFB?m9WNv)_D_dHFoA( z;NN5l7tzmWgMz`8EoYtiam^pR_jLpBtE*O(Fly7HZ zVls-Lo=)RIV{3?;GB^2YX|H2%6eV-rFTnFZSr4Awgf?6EYou=i<@O4PjuX`<3E!%1 zL@V}kI|g*Hvu-e%yZ5XsnA$ zAM1#diIhZTr(3_~pC#H=c8LzlBVpX2020eIb2r8In=}pXDU3p-NqzeIM-%S&4sEY$ ziQ-zNfj8w!g1)Nil#&D$W{f{9Dg2@LLfn@mV4v2w7e2i67qNn(qCU3>??WfJhsC`% zJZIA~>(H7?hSO3WR$x0x6%mDERxE?S`uB%cT5}%k*(FL%RQk`p?)t8&(G!{jNB1{+ zH*AU-^#&EpY5aW@2IKb0-ET9G{%h!c+Bdg4uCWVT|0|@W92ur64N!r;|QzMP3tp zx*SZw;jq3kF~n~`P#~%iYY^OW8t^LK(a+K@AmE*qhPJ}Nz`%gU`d%tSA*xTlg|_>| zc8T#LJ05G?o6dZ=#LL{u!29q8IaU+&Muu@xUEo%xP-}-b+^;K%5FBl`&pUkL&_y#` zGRD1dEbzxRt72cpK179Ddrg|@wX<3ok9hw~spi~|`s>0;Z!?Fe4+n!SvV};%)yu3c zaYlN(Y7;xpX7Ao`jKaI`IO1XGE6~*&y3`k#{9%VtvQEu_lKul%3md+=3ZLr6w^XOJ zI(Y0^<{>jd)GT_;bYdg|y-KItKsVAVR>whGFh|yk05b(S3yTF#E{H!m6`ev>b-~9Bt@KT{{#WhNnYi5<> zh6rk}k>Id_%!p)je@!qBQgxp$tia6%70AaY(&Nol4#)w5zo!q?+v2rAnmR7X<4TI_Jx11(7+%v zfT?F3ncpf9P`>rDrCaEKI|ui?d}BJyk{I|p8fd^PB=mM%R#rBZTr(J}0k5h|QB6$_ z*Ku6tq@IzHUa>%Me!bm{VOH_^iH4pjeS4C%%wVN=Oxsfa!QjQdskKUO4Dkl)i%FD}x16}2k&BUvvjRbxKxlSEVL}Vm8FYmubwS%v=fq_y- z>O>3*c_sUZ@KpN;T9DA2Pvo&2ubz%hkB_tSu@t)giMKtttyF_qG@s6_D+8T^C52S; zbGpWFlUnzc5&QqR07VUI3m0Sj{X=B2mKsnRDLi%G1zIOrbQ*Jod50;oMnvhUtY^DK zo&;$41v~yc#mMwjhoJOq*5;5ce)1<}fKMHjj(=!efZnVE-A-s_ugQ1_Jt`RD=W2O% zAHH}}07idmqYktcjxiR*K--MxwKDzTf}M4{xH7+PmYR71jttGV5sWq?kSuswxX zROqfL3fSyD;Iq``r@}Ey(1JBAe%A=UDLF6F!aXmWbWT52a)l<_QuTEzd zNcYubG_QWA<949zomD8%Nm`L**Vi9IHF-EFxp}a^HohKkY5DBCypZ-8oy?V!CBotL zM>&nKH>}|drPf;a7wh@hv?`{;L(N=;nHtwdPH&Tmi(?2$`%}H9u1@%BUyjB69Ah7Y zMc+?u>QEFSeaW|ZvMm^DbBZ~3fu>ZGBOHN*IW@1hYUkh8`^pVKjD}NZZ#lWq*yFW9 zibBG-+R?T108`AND49z$#hP*}1Pm(7Z)sj*>9%*(DbE}AHSN|Jv8y7fpyF3yGM_&Q z1`zUeN7vhwP#2@rKjg<~h|%hrnrpvG@XS6yEuQ|Y)U3fHB~^#iQ*0zot_e3XGlRbK z5uzWWCK!Qljr`Uh=M2|J95#Ca;dK;-9^=y;AXYNx*KqMdg%lbVADySyU7cx^Zo~D> zM@+(%E%^@xgB`-afOZnSOL4E=+S|!I#`s-xed!ADP{WM1KlKZ4Y<(A2EAWEFsOF~B zAx3MKGCy{Mcve$-6aSZ;oW*i@iecW*jTY`1vh0b=KQHHZc|J?rCBo}t#H~sYv6@}p zER4;%0Dh|Al2)L+_YB;OM)7AM_43awjIy1}w#ZrVPFpW#@3pD5_A$xq=~+C5nDl8a zH-7-G2Wx*f+SfcGi3`!W3lwN}teGNuDpfg)t~WgYs2v<%0qqN)H>SSBhCCtTm}{9= z$JCUn+-}kJ;BbAJw6K-I!c^&&N?zq@+ACOW$I6!cF^)`OO%87F{ro8p7GWi5LeAQ? z+tkiX9NwmdVPs@v7gF2WrsmL_E?tf;eM3SY9?~OXudVl`ea7GT!SMZ{kd@dIc(r-4 zC5cKR`1oo2p*3p6piYyK=h@~1mfThnHz8Qf-2|O`UboJJX@+aoiVK{8>_!+f9ZH^T zerqrjh^?=8fO8o{1S|?5e+gYqyxrQ}bC>4u-Av3ryVdD$X|<05NWEu0#hgsso)jEQ zzeav}8;_+uvG}wwWdac~j4;>43|a{-$S0To`0`~Nge#%ZSsaI4T&i`lM&^AI7r#BJoIbveq;M(7t7%E%v*BT`?*OE}|%2S|hsh!VZsLqQujkMy?wc;V9OV_Jf z;^zXUvP=?>{sSOsXcIq0{VL3qE2HX8Pa3;J?{ox^pF!o_FhU5rY`_nLQ+KJE8{yrT zfVGD=Dl|@efoW{|&;C1$O9gGS@lsIo@`zv`7;)GFx5%!R_}GG1I@dH*#QCH~{c}(H zzRmxYS+m>d$RPY20@0t4;PB_*bnpyC{iFWeFumN#k3N2VEJ z&=UBBpw4=i)Db%Z`XKGH$`Z|*;cE2o`uWj)vgq_mO-Ar-fS8 z5=~XZnN9T6u^}~fb%mLZ(y$2$aXWE-`a9kd-_dUIn>$>i*bMcsrmb3#ZKSIKZYRS^OCXJIol3cOR)t?YG!# zAWkQ+t68^h8IIKV>`O<^>GHxzyp-wC!`tb){mhjh>G_XL_*b-#oX`HxJ&9#yl0*VL z;C^Fxa2qevf9v_vjIF83E*%XmEgEz{iU-4}R%K&oRrf+?YJ_nXs8(Ts5fo+=h=;|Bv$N+d1!`1ZTTUeB{3kl(m((yTi@w4=U zL%I_WW*Ny+mLvsyNd9^ts$hJR6eJi=8rsU~p=>p_j5GD}qN`FRUqt`SK5J|E*z>_M z{nVL2Saj+CVK-x2c;an+7Dn(bMG+T6jHckw*unzg?zzby$o%inN;Epb+1b{UlM3|b z69+)gKf($w2<)-?sGs&(YF)^`)tV%~leADe4zG)=vfug;0kO%$1|Iym2;x`uQgvO{fXyU$FY8>dtClmVk+m4+F~l;)mRKppgPO zLUFMShAvea25p;~c}^o*z>XskLA`#{ zyzK&akr9&~DfDlA)f-mB7!*Zi9{Zv631QVx%-p$uZ!*5R?|XeE0xMWr4wg$!Wn~|I zPV+G`w7R z#*`cdt6VPlZLia*Nm7=lPB6uhYcgk16+K$D6o(M~cZWERaBMh60Rb#5RAm_hN`V?R z#!}>v#wqUPa9TK-4qE95=#fRO9ccR!apGI8dwjCY2x3b6D0Ps=cqvjP-u;cyv@VtIu2;9L-3jNBBC?=~3*7*FNZ7NX#GBR*5wR*Nv^ziJj^zRI* zxXEv&j9p9z?PgLI%_$J{%07L~Ne9`vf{Hlb;>;KVVn|2u{u~}E3%DJPjRnEO2nhfN zntsWqF$QN?BPe3Y_iKYVzV}k~-A91^<+pEqjbJ`iY%HSMH`5Q^Jn!thsaW zpW_%Xu_v=hsj9gY^kmOVLEJ1W(i~^fk&%wQW2@&39?-#ZDF;(Z$1RI<%E_pUxjaFC z1l(Tx3{{mA4VnZ;%so=if-s^L(8>_Bu((WYmH)GmuD3pZ@tP$NmT&j4cRz)GObHzg zMaM}pPU&t;Cs0xH07KRY9E-=ZO4<-;ODZ8CiozPWzI}xQ_A>z8Rb(MQl_j`c$;^8S zrF;K(gG^fm4B{xf1ESXJ3mHuj2v{IBbh+%-TN*w4{q z#4=J6RP$IW+>(ovFfzM}v!|dj54AKnL;9j4ogy$=g-KBjqD6LbXXF38gjH$szxLu0 zOhQ&w9y|d}elAztL5DY~FV}8dD0qxWG0HK4Ph(>tV-qUb2K*JDW=%!?D-bWDYsm&# zuSi?Tw;nU}yLc*MCagt49!uh$Y>15VG(+(Lrl&iP&^DAjq41%~eDkV+{uSzrR%6?XOf zOpC`K`lqoGO|ut|qZmm!DLx7HnM$QJOv~tRRLK<2nI)iNFx3xPr^tv6yG0HjT9!hy z1aX)%Vh?)z{!^gHh4JY&ep`L0O-qXUi+^30-dpb>4aR(fee8&?#Bv9v%%;D?FD-O@ zu7gg?Q4NKjm?)#xF!}ecl|5|zm)Fy8YLKhMbGpdJ%@P;+N({Gr5fl_+aTiL?UF2|w z5)2vXS`7n&1(mNqa?Om&OQmNJjCb-}w;$l->G%%y5|X2$pu&G;3JDp@5f3A~UTr#0fmxMZzOr0>a%h0~tvDBOYy`TabUrqZ)z=~09^o{D;Nr4oL3*|X%El6wV$UoQQNOi_}J8kQm1!z~* zzUQ-};e>q85#1Sfggkfr8XZ0?EB+TW*rfUJy0Px-Kz5q`6*2!De;kV?P2k)Rf4M_w6uAXqQ6Yvx0#TR) zVO&Iw3l1Wqfy9e&0_HCKr5gBrlQ6YW>|PwoMeK_4CRg?MuPVNwV`7Ca9FiUSrG65` zgYa}^8^mrZG-U|`K}~k@Q-MhLt%5c_e6)_I*}1DtnL$f0aGhI+2vL? zAP#pvT~?4lt=~|Moq_g0H~x!6^%7qVUAf1tKjWRuh79o%VL;1;3TYu{5|q4OB`yAVI2=m3>BO2WWW2SvQGmIv)xCuEwripefKpmW|fSFU2LrYg9yH zm#G(>T({mg-HUhj9tgwl0qsQe0s#&}wX(ouUfx)kHXUD}r+(5#WK6Z=vzI4wR`M4C#%T+l23hHgv>OHq81@x&%8*FMn9NyD)OSohk5*11?zc>w=U;U@Rj&a z{g488J^P3e&b;SS5D*b#xg{Cqw}?(C*7byoI*Sw6RwEpu<7?we3;7ceN1b>0Q1C*R zXPF3E_f*h;_~dwYFD~RIfM{w2fU2^AMA8X6IFrX8Kx^CenN9RZm{Ok}Y7Ae#qQ=As z@rbH=;vvv&h3dV}-O1D=iJ$qGshq1|LaB~LzyM5HJqek07QqmRMQ>_Lrwfg2ns)MX zlAOGg>v%I7E3Fn@!?)tgr|*OWb24EQX?FC%sVYTA`s^|<%yhA;tu`XMbtAkJbIP{4f2s4HLr}1C z%f7w4qh){^@HVx42X;!0G*~fRMlv@PNrdnrc?Jv@TGOjze@lFGsW*tiX8Fv>?J+Xm z*;FFK#Kl|sM^z-CL##OvQdyAHpM6(#uxuY-#{Omn7y1hyDYkw!Ad%|+T{nJXSm~=> z8y~vyDt5_yD1kiwFG*XT^{ckrb!EjTT09 z^V1&MG9R&N&%)_cvl;B-`ptlUoy`s679<*H)x~dQp?u;RjvPL*!WqT3ay__9uSz2$D2_?0(fT z`pL5z0oF(y+7!@{Ikpv96SJ=;QJr5GVT0a4f_ zh^6u2fYVp85s|bfHBMDdM(w|iUvHV6w*0vti=fDcmdpPshd`{he{vmxzXMWUTI&k# zp-nP_$>iTz!l?0liJu2eQYKy)CFqFQ&ddn38{eJxzQV)MHf>9n#+M(K{Q1cd@hNR9 zz_JD(N|lZe&afB$HpNgXwG;5RG^}LjLj2n4%DcPFIU*+Mj2#uoj~66Oi*xn-bCeCe zR<*y#uyIHcUhXW z>t|{wmEoePKT|h2lddX-4pY%&`B!mBj4RbQ(sB<=(&1{RABkk+0g8-}Zc~2tO|Qlb zYksp4K0q_lU+a%(f*Mf#j{o|i&bEd-b*(p=N z1A%i@-3+{aR+>AL6z}jxP#MK9N4$t=TXFZ6D4^DyM_l9VO;_-!iWy5p07nxdm5IQ8 zuzn}2=yPc^v*lnzJegI4u*bkBQB&Nk4JnqV=uMKhBj#nBNGp{15W95;QY5fb!{o`# z(MdS93CSzS)^ER3*iP7G$f-tF^7YGtk9{;)bOvd0?favn0X1t?ZYAjEWmNE3(8xMP zixm>LPLg!pH0hrcu8^H(x*_C^e{}qk+X?AAR-sOJPWXmeU&aPNpU22UWPxn}C7w!f zad3nb6%}FbE}O=Y10WxJ63GBcYAeOz!|U=zD$$>KiD=*E2z|zft7G)YI%)=qplyU_ z+PJ-GJSaEe(Cw!O8yg$3r$2-^*&w++DAH}*Jlw8RqFRn?js=Q#i2VGB$Br#S9=lkD z8RUu!fuUpO7rQo0jMAJtmGSYRNQscH3s8Yac&2T)^YT}|y$`LXCPSZ!G5~w&~|1xRZb&SC?4q&@Q!!*!16drh6mtkNMkA#AmCGP^ZgvP-R%gcqS$$ke-|F zxL{iQ#qZk%p`g z^0yNVXQkJ&)OVaP*!}tr&)WOSF)eT*7#AOJ91uYA?^iIiC`Ld0_{hi7bqORA^g^pY z-31>;8ZUy+Wgn10A_NXX9GDA{BCp09&ZES9evfQDZ|9ExE={-9VR#tVFwXsSx!;*6 z&-ZV8+xd@mr=wYN!P{AJaIz9~=uH+zby0FE)!>f?ePt$&9YTpo!SADw)r`4*WcvLZ z-x?0+jh0@I9Cbj-BKni+4|KCWuJCd5u7mr1$-~l>k|;n}YMkOEI-=6~6Xk z#8fVZ|K0xWydaJ75Td*kYjxdNQ^KtbT6TnXmly36Va*gb38$#gW{@UITjQlf4I|r0 z;JnPq&U4-H+KXT9^5%TMGyK3NJswGm#QbFKC5l8L z9$2o^1@mv_99kP4w}t&~a<_--^*f!;TUK^C3!jisi1>o;PFMEgIHw^@ksN!TX#Tbz zl5F^1bWb!!Mn*axmt_t(6Zt)KZV%^sZbgGfb>zxI7L){#!81{$@0XERr@il|t4-#J zV50I>X5dq%*Y9xLOE8}Rs=2wj?Q#Ioc|noa_~rimYnsW&`+lFAY5HQVl zCx)@UZ>!t4(fw32E+Jv}Z|B9xT#0n5tI%m}^Nu%(f&ZPx*;+H)xyO2k2GiD6Y4IcW z>?zO;8}5#Hm*6*BSxyd4j$q@k4;1?xwjcm9?dQS1qX|0ss9;l4I2fXy4WnRgV9trE z6!TjXMa|{uxHqKc;6d5VfY|z*Xd)^ziWidv^;SK645e*B#0`W!Ip4|K%X6LXkLTTr z8XlGue7zjxyP4#4-gIC2Ep*|HO5(kb{(b#?=+SZg2QtLv7-izlSTbeXQE{x(ATsY) zwW^)E)~$idOST^ln=za-f|w0m*9c$=9XWV>a4*NUzW?Im{Q}&#-06oSRRBTE+^`7< zfOA2oDee^`7Z;3|hl^1#Q67c(GqfDNP8|;T;X90e76pLETH8*lYcAJj0&vz_9i>a= zAP$MN47{o9+y4;w9m^XIU@8j+|I>lO$01s$y?9=ex97X8oSXshCPKkCrX2XZ&~`n+ z2u52WAi#7GugiY8tGk9kV({k-kak|4s}ZSP+7|kETwXceiRO0YNCMpCsb5E+h+KIF zxzD4+F$lT_1_W(CDN}!wb5`AkdDS~kESGDahsrTmBx_#pC7*s(tC0lYqF z!h&39OWn?l`tSx5hy|RMzgYer6?tbb2z>V@67s=kcmqR)eDD8>yEWjn z^|G_~rSq{5PB@6Rz>9($w&!9m7>=ax{(QaBbQGoQW%FXBNIdcz*f9!%?{c-p7WZ%O zM*w&p+^PB6T(mxvjBbTk49)u2^=RAJ9n1y{a zf$y$-387$vDcN)|J)F*8?e^u}^4df8yKgQWzFRR&tSAg1NECVJ12-<5PU~8C@7Eni zZ*RGJo~9gi9wLWjWoVvPx;UD=CzFJKed%XgY1q-9vK*ipyTWvV3rYJ<$`!%Xp@PHz1ck`j739*6G=fLsd&Um#jhWv3 znF6=H)Tw?R7WkqB-f0DfHw4_({Br?L6Z923{|;aHeq6YlTKH;)fk+<0jf;y5=3zNa z^B?Xs{bU*J4~4s$`FNfAC&mKbzx;mZwuXZ>4LvcjtUY*^`RoA(eG`w9znttO@94O{M07 z%+D1{w=X^z5M4cSN#Xvwn*w1H2$KD_xVMd|^wiMQ5M4_IS;FWM7L1{O+6(1cA(Ok*QEv{(`}Z_LJDk51%KXHoipgQtIMWDwJ} z(4IN}sb<&nNzK2xcCfepr?szt9N%e#uagsZu0~0f6R05>|A(ft4v6Xt_Bbgav2=GW zA<}~M(%ndRcXxMpr*x-uNl15z(%lFM2!g=7`+M*GXW)AG+?nspIWwO*!DEO(@eit< z#x5=#C=+>ES^fL_v{0eZse3c(3{;n)p99#jvTT#_P(&Dv|G6oJ+z3;YTAd~om(R$^ zIDc|*ZdQpAnk^UM(G8V0E9quk|2WQ87XRmWb@cO+jRtQ5O)~L@eM%)^a2CxQNpNwQ z5iu20GoLsq;*tD><3T7hp1-P~nQdY5m%rLUkuVpDW)~n_Y}BjDMvbqmuHi64c{Eq6 z@Ll4hxjgoR3LiGYJi6l>{4Z=#tU;0*2%H8$JbxI#3`io})phK}1Nzzr0M~R{*7&sJ zf9XqsPe1@#RVE@f ze0aP<`L-cbs_B$6u>4c&)QEW0HD0f#H6f&lS%9@7p7K{dEk1LyNdFh}UcQhNU1GMP z?R9m3J&t}Gbtcmy1ro9#*?Gs`-!e1V{*SOALmeGkHz|fCf=)QBdXx_>Qa942V zBy@>`0EOIMkb4i*(SEd8hM?6 zj|_-rE)cAx2pf1M5_1=B`JWVNJZP@F@}P3*dVJetd2vi8Yo2Ydcf7yGP7(97+&t>V z=D$9m{8DWkmr3f(4#sQE$;};lzTZmh^}RQ7aKHc<1ZpnU0`Ehjb@vs0K=8^`QPNbQ zfokjZ<=*+Hd8RS2vR=TGHrlSRp09V}09FGq<3H_8fG-KPHXzzS)!-K08;({WL^Yz z>m68MA8WqGkT`U}_FbC#`H|w_;CKNqjGd3q+E6(*H3i|;o}8NrZM|`up4gZ&NAv^M z8`kBPB)lZA=#hir-mXR@FI99-WQbQmq-+`Wu%X%FC!#&k?$%~Roy2sG#aITU%t{sp z;kjW8@7epzSGTOF(~B4S ztM}TQuxl|gmjwUVcmIrvmiOQxYQs&}k;if%9S7dnNYJaNn){L)2~2!75OGwWQE`XPw2 zb8-sjUu;>0oHrSHO*=?E3F6z{spU*QlfkXKoq|2`ICA_drg{5bN4UuK?M&MuNksHR zs0MfBm8h&fh?06zt{4!m^!QSSP!gFs<8mvgHs?%Rs1`!#QK*ljT@!$$7hqW#o+ji5 z-1G^6!3BUeX1)>GqJHj75=w_nQD_sy=e@14dB3@CSKL zn1ECi3|A$L0x=6-!n1PZ^lI@j56yS9aXVsEwqN2c&X3#SUq zux*|6UKp0QGi{2%LxrKl{dZS5l%G2?*Tv~Wjf)evGl_KM{OCkPvEEF6Kt3vs>{R+| z=j@5$x_4M}_H@E&IM{XnT_b!$@La1X7*LG9hvD}jAh@mj`1^QJNcUwQ2{g?FzDJ^5 zg(`3`Gr)-JqwCBqB&t9(-SxhMJz|iwrAqVjjBDuIaB+uBas=aI*$89suomyaH8NAW zEL5TEkD1&AQ={LiwqU0n;FBbIrzD|5L@>Uhyxe56X;Oc7a2&a)FbI18RVb9e;#9De zmI3Cl7xel&mdMY&dGn@G&K!vbxxZiwoLi7KyxAuDcM7i zM)j!KD>4l&3RVXVEf}fqh*ACYhOqvwAkgp9h2*s-5H&KhI~I)|Mkj7BnC9kzBJ!x| z$C)c6D7gqbFM6o|t?$J%^fc7C6mrq0fV%vaFIY5zUp_q`pEqj}qG0*~D~`({R7Tqh z!d(QqCRZstJHGK)dy7wyiBzK;Mf!b-wiE$kAzw`Ess2!LFOup&TLvp^Vylx+h%8fr z@z6&QoLM;fhb3oFZ2XSK*U0qlAWdG&1)h7`gXhTx4L0|k;QBdC#>gxEZlGm^ze~U*9)v@<# z41sLO30^os&WR3}`O_;4aWaL^@;Iy*I!YZc8FfvE7`X%>haL$y@ z%q7JK+3h~YTZILOFgZJ0vp0jp$Auh06o||O7~c;>8RN0x`BIr2s$Ap=BV^MB&wd|& zg|M?JBY9cBZ+w!eeeayc)LUWHhZXivVK`-Sxu4RM3#RHfn;dO7C>&fl%wg6+MoUa% zKYt%8@Y{5I`WdF_Gz>6~Xm#-CQqyW1|Bv@&&iFQ#`*ui<&#qPo63^W)f&Me`a9rLC z2vekAk`W?YR@^_WTQ`k(m+`SKBCEVyt@ zL>_pGWo1;fa)0kO$<$iNSQ93PO4955ZdrBy9CzO_53TmjDzXIWh_kK~+X#jo6q{VP zW+uqI+SBh!bQ@eLDxugYgxLr8Vpv_xdB^bGj&Eg7Z(jNngI3wTZ#**h{{WX~u5KIO zr_+}c4Sm|m8|`Y2U9>g-w|KVLQL*U@qJO7ir}t@SY)Yk(!Vkyn9w(@74ruXevPmy4 zWXJ7+_g2A+sbpzC@7s>n6{pCoI!-r8*GXI8DO4pE#)>f3+sUBy$h+avO_kDecFrUB z@dil*gBE0Xazm{c%kiJ7aYq|aaA2=jw}l^B3E#4NOg6xrt(bcB#j_n3^!&Pm^Lsf; zB`iV^)))1$s@gSq_Cll?#efy=z}b&RdY26?JGh2HSUMz>%h&1D>(UsJ#IeiD)jqD| zF1=B6Wv@?4>tQeR$d!@7Ibjd~L2{Ys8bFF0(^8ZK5AhQVPB=%=y)`W2O+Z4h{xAS+ zXB%6Bn$`l)(-kaDx_*@`|L)d&dym8n{;G%~88P`o9X1cXA?W!^_p@(7iy2VfD^3h6 z-iq!0*Cl78DppNgSxD6$*S1Nm-_~2anc7#S*SfgGDDeDsS9{x-5TigD1efvs^Jio+ z3u)K!H(6SFODu0_(Si!s(S`U!SCInobXolfENaBE8rlbX8fQmi)uY{M%;S9AdAmKR z*1ZXi&l<#=$e^V@hN4|65~mGG{5m|1JBS8*G3#hCUZ<>q*=+Db{jm_sn$3Km+#iv! z9cN`Q;a(odNk4%dF+?1`oR>&VYNfg+B2W4xQZ-3XiCW;_n=xPEFn9jV*d6rTreo)& zTp>7Ny^XqZgoEbT`66sd8JPR+8lyzvsHUuc9pb*JeSoyP%2&FANMzs_h;! z`nUGqHxkj^tHZM%yy>(*+IU=7MC6kW%7e3&j-k3fn4uvGz(u!a-vtYDjE=SuPsdP?y zKKi@5D`3pt%-Qj<2?>!ildvql2&i&^8N$#ClsoEEjb*K2Vx}597AWN}upFILnQ#|y z6nT*h0x-^73t^A+<9@%_PnhW5jGvFM2&vr)LX@1t;Oj4?z;J?dg7lMy7_W$iyYL3Q zT^^zS(YGRE;7_!pREU_+gC+QGX+#cCGc?8g;|dYu1b^ThNgl0|N`R7%%z7FnS+IB| zW{h?J&VPJEoCb>$T@7ey2R6oWP2UiyZPY-J1f`5fy%w>$^I;qd+TV7IFQ*yuJ$1<8 zFzzCQpda^e4>j+DpC25OTxXHm>_;EE&_7$+Aqu*_Rjv=}xaJf?p0lFN;(cRa7}DJl zwcYv&)Z-5Fx`B~4W&9|mE4v0XJMbpQ2+hnzJX?ga4j);sq2_dueQd8u;$)1)q1X~Li&@u#L3XrPgi1{Z4~EL%<5 zgytbuksBJ+mV7ps*c=qlwNh=cPtMq-2b%wlyEk%7<61)~E8BJI=w_O6ISIsJzf}Q7Za3O?wAr7}L{=oV)7`P;J1P3DGGODb(*Oys|romUlGSR3szpbg`XE+-ChHq9AC?hv|)3i zaiO{cY~xkY?B;DJR_8R3R45<`?MbF=zeh8wiI~_^_=8CrA)Fx> zQMi%npblLz!f?XV;GQT*?}7JQ2sa{c6g^e6!huB^+`VW}J-#CiQ=HO+n6vL8ek$lOi9f*A? z`wpW6fwng`Nsf!Zu4YbFWql+{5>|UHAC)%4A!-h<^|IhsGpaaeW&erZs^8i38kXc_ z8NM9dt@xP8A&}M7TCL2o|ARLteOQ^dyv@b4Z@;FJQLrbW z{e4;&k?g>>HP*?SU?mW>(ll-JwKG&qku}VVL>Wl3O_dt{_@-HMlwWZ2zh>3qLM92} z3$?B->1?BH9h~2K4j=mzxyZJq^n0ojQ_tKxmvbwM*~*DUy>ulsh2+DSyQm2fZ<(oow1OL za1!kzq|!2SMih=m)!;werKxHQ%AlYP_nQJob$P0AE6yzo#V&00Dyy0N3AWMUbpIK{ zCCu`WxN4L!YlZVglzMPdg{Qu?vM__rhKLETViR*&E~l}bIl7cD@&uapQbyi4^#0$W ztSHesYKe&rVpZyGN;-uUI?zeBvCC5>&wA%oZSQr#T1q-&7FlCW_~qAlKUe>WOq;Ax zsiXYlrWQcc`C0XX6T`NzDk(Kl?Pfuzxb92}92NleQ?*iA1N<5lFbgyvXe3O_X?*1S zs6iQ3OpdHUZTnWHJR#g#OSPZYtRYBVXUZ(Z(_ir0pEOm2D)mop=v^LZl`#mjW?oUR zv6tzx=5cY#P612;4dI;t)r4zHhEUY#fC+udzNtU{1-aJs*p%-(%vFsv3FP;d;6I|= zQp$GLM?_7}0k$oV^ZaqFZP=OAphg3UBrW@oozkNAQnl``;Tu^pW!dd6a}Y-aP^TjU z4yvXthJ;4{_tkizZiK++A1@_BJx*lfhda(M%^tHHn4#H16^c zdG7Qu{qHv~Bmrgm%ZSn*K?+?s#59^J+f=R`U#|EYda<~yo~RQJV+u@EZ?NR$hDP>% zABA@Nuaplp&6?^TW(ekwCF`=awY~eE@?HCI+_IF97w2w2w3GGRE=Bb)Bg3&6^dK;Q zs&`2O!C|4o1&bV)f1IDObxo1a>ce$_+v_V|(CQpb2% zb_+~(lGT$f`E>&M*p$${r_TvN< z@;qFeKht4-22Lx2$H}W zWGglLK?_v#2lyO6wo3pHia=N`l52%+F-UYJup0JFdQKl)HWaz0H{@o4p)^QE&hql|+v}aKgyiIs zLWN3f=eIjttzSjNuaFVouwuTeqii^=Vf-qvd{WK&R{XtH*O8H11_ljJoB^eLt-LXS z)4r#R5oERY&Ts3?ZbHn#N{?h9K7JuPtIFV;=0=Qin4lt9TqzJ%G5=#Y8yY(oSC}4a zW}{uJlFQTUA&UN!T)IG$#K?OXEE2fjxwEih|CIwjAMl)+74B z^C!2pTb)@~!Ik=W=Z*R;!`L}4S!!Y`=DH+OYHox$#ZIyhkovFW)KBt z3z4{CdMVV4!SymHxC>(<#L<=aC8=pX;$s2&&)0wa>+PNFEqkB8(DnP!(!}bh#V&!G zs6hA;kS4pIs4O~M>Nmd3dqt|hVK+n<=?Se@NI5mAZK^3ero~-$Fe^L}O<|58>OL?Z zrN9D-C^Gc7iWt2L!`y2_H%lXreNrQuH@lM=f)DQ4)-h6okYtUbs*3Mse`RR2wEvV~ zL6XxybCt}1I;r%$R@yaZZG(qnBb)sGqIwlrmi|7FM&+MdYsL9<$8zTRPTPwS<&A3( z1Gc!tr9cxy#OR9j=b!F@@Z7lD*OIPvtdIn*qXGkZ zCiWsrXI0q(SM?H?7%LcELJK*zT(Yp+Y992xRy(qE)H2;OnK5xHt`rlkE zm;T!4_7oe#$ZIL^T2*(0dgK#G(FQT7vA z)R#xQx_>EkD+Ttp;4$dyMKAp@D=#ovWCNRM;& zT|eyQrP!G@*S^>X#xnY|BZ0%IHP(%@1K88X|M=6hy;56z`Ph2}d`k;@T<1BQC{v1> zv5zr~Rn@BLyGbVrT4f+jjH;T<{fu$>CarI$%RsEdRrQIm)y^w7oLi6WGPzv)S`-m!gvzzT_6OzNBWkDq&+ocEf^Do^K6)#ArL?UtYh7h`=|!SiJ+|BiZPE zKy))i>ShCwSlVvdv(c)3mb(2XIBPoO6X$t5X8S(^Z;78lDO@z27L=TXAmQ z0(FdoiF7b7Dp1zS#_%9Msq}Pq;CVG@K&&b_O)gI{Q~A`q&S3Zz3$n-@oHj?Y-<&@@ z81E)y{*F>nj_)LK+Qr@~T(6A=(VeQ2d-{B+zn}7Z!&cDCi^&A{5g}7g$B<})PbN(ffoc>PYH`j?hos#p{Qk_qN<;$?@ z@`tri;&yD(5-(B~A+)%kKOV_sWgZxVSlkW{Ta3kBI47GAXJ}+sNr~rZnBT71+7l!b zsoFFLG%VoeTA;{twsPO$mPmfx(yq6^d5=y<9N-rii1pWx%GtgdzS++Yf7c2>K6WWh zDu*F_vWu!p0Cp>{(3EkT1_RJb?BN`*SMyASF!^&M69%Y{?f45#F(JU zivD@&S67b3qLMa>^r|J^2P`jzfEQATSHfjwV~E!~>LDA}o?G=OT6&)k5lrkx3B$d7 zkL&pnN^R+<>}&V_4*_#a*Vc{TMGX;fZ76zOi5Q;4h!W0n$jskTY|M<7N-pC2EvbRpIH<+;erc)n`^!iIeib09$$hJWsY2L9lgcTe*R)Cyg`Z z-;Hg_xY|o1Dj2Wmy;A0Xtk@>3BiS?~Cv_!gKJTQSUB%5o#Zj&^B{QDh$E6Vcv?&`k z?WigOGugJXZaZw`8-;Z12qQB_hSm4pqfX+2UMdU&L6~PRO+%NNQQLz;F-a+niLVOQ}k}^`;`D!d3Z3!@apw zvyQKgCTA~w9(TfL>33U?8E(ZJ1UiPS#-b`{nk<5|ts|DqWImh(cH^dLE-19BlbbxBh*zum`(?yIAaB?x| zvZGk0qv#C%9puD{#)FH%hag%%GE;b&`lXW+LdoLBp_V9OMx=P8Bf+z<@Uz-6TmgGQ zT7rMI?M$$oysFq%Ny^$=ZdT^IbyM71by(|8%5Ii*XQ`#QL>~*0bi5z#c;(jVRYu1M zw0tyS>|FVhR+V5i2Gr|QN&Lh{)GDLpQAS3|Wwmel9+CS+8wIX-{Qu|S7lYySRHrUrpC}> znT#ZGk^CmMA!*&x(kOAU4PD-;U@GtSQ!%qX zdAU+2hnQ@R+p&KgJI-z%4Vsv^$`V|*)y8!S@I8Xr441MMOLNY*e}EaQd$BF5XeGba z{d7wO+9}Ggfq7m)zX1tvd7VGL$7F@zS0=s~J$La{3)S)Dqv9E!x3O%c`GM5wdB^2i zl&Q}V0)~);lS*;<$UKCy8W(l!%lDQ?C$@gbeKE1fOxI4Uj^OEG?-^Xj&x!tf+ z^0uh36?0;~(IRD@%+^i)wmN+pt!l1-dxM z(;==v$~w2Tm1tq9Y^JYef!QKYgY#>J;nCYJ zh<`w2onnVHJhnS-^>zwTb$D02cC~~?IF|7kzo5Ok7LJr{Q?^-moSB9=7|0NV=kkrV zmZgockQQMk&k>q5{1=JWxHScaHdlH!%%8V?5hqbXM0=39nwbYUzlj=R3{7r*hKJmq@O0l zX?OEBo{L6oxjY3pgs1aYm50e5kxouM5B2_l7NeDbg$lc=Qsxr2Z~60tGTAWBoxWBk za-1rY+;!}M`3F0pSRpm5^y13~ScQsTkBjlnYuewc{C&8Y^rK>@hmImizGG>~f2(tR zVSD>G$HRt)h>h8Nr@0-!O0+j)t-Ri&as>GsrVTYFdx@bS24p*gAZ(?5& zOkFgRQlm}5R7h*-b*zSf0<4Y*uP~~F+U>y4U)JTU;_--IepXi*h+Ss1q@(Q668hu} z(Y|G2-&xYb%)NB1p<~4>$Kp~?V_Y*zAwL{!x}G>^q9-i2iCB(Jm4tp8+t+b%OO$Y( zWrnR$b&4gYsan)_LEI^cwDmGXn@6h@7`pMWXM<`Qaa6=OZM{yzz77gjWWk@v$MpP$5`k!(4N~1v?dq;ekCgi=;o%!}vG1kt5w9 zwg_!alvS4w=aj~KyKJStb$|BH3PsB%qqiaHEypyqfb4kNXhm`D&*{o2oY@};*B^PG zSJ`Y}j^FuRZ!nzxtu0CtH>pBqL!juC&0q@a&jOo5}uiK%ecp*$i6wDB^a*(6nHz7jJ&zRmjJ7mBGB@cfI z5Ql7%hhX3kn$rp3IJXH!iA-4_;*kZwR#H!}LiMy*R?tfbO;?-TJUfQSW)6=?$ zEu*?4>sz{F{LMYSsW1Zzt)3u6Bu#kECaI1R_RRWmj zvSV6>JcmhPkmJuBM1`P*k${7I_RF}?NQ>q-VY842CK~+JJOkkyi6|_5lbj`}(9Yt< zurNuuX1c27JNZgiey&x5b9ZEJ(K>a&YjymR&pAE+i!{y~1o6mb8y(z=3$1rZ^SZLU znZ`i}#hC4s@nxjz(vw1J>YNVjyY#cPg%9T65`xfb#4$pVSri7*G0}#oBT>Y&jHvI3 z(E3$(OhEzhsRKi*`zp9XGf^Cp+F?l_El>~!1*mYzV#%YqM4F>ir`u$8zvb8jkt1ox zBj(u)n0va=`WNZBlP+`()Ymi;Y&6?`VOGp8FqKkZcIagP)8F{_{9vxm{*nOgOq@J6 zc~YFddIDac7MJff+HHc1#g9cyNaJEIT1wcjR+NGj+Zzqp1Q!9W=)Pe-pLL>TjorQw zNrE`c6uX^`g}`PQH*>8luEFCzN{D&#z;dVltvrq4a@MP&j z6P<@#*%+ckTa-6-Zah452RqJm=|9{-KF%?g(!zh_AO0Sv{ftkOqUf<%kyu>Qrh<{! zp$Q2>()=)-oUV>W`HhfQzZJ+6lne^_`9@1j9@4;J@*|>|Tkxcepz_{?4L*}6&Hm`hT?J|U99^c6^7$$N_6WiUr*KEFZ; z&dZ((2WFe*&mdH84e0Rl>x<^%NmFShU+rH%AF8YTr&ld1Gv2L)i?yM1zSiOMD8-zW zym!Ik71BpaL4Wc@@+G5DrtX|%sc2IjfjBjE?6+2F8w38bfPJ^CtIFpzoVlOWsPlr0 zW{o3dP7ozO-eE9AFC+?zq8xMADY~*zPd+u+rDmVdXr}NV?ec{PRi8I6%(u+y5V5B;c5@&IF%d03;0a-#0 z2XPQd5rVweeiC{hvu{<$c#SgeaW91uYa1Kd4gXxt6?` z2z|cJC_NkqE~qI1hnj{gp#TfL7xn3MgW;VFCaM;5KsR05CxVUNqkf6EM`xuXLW*5x zUF`%_YqqanGrBD_xj0DU-ckV_>?*h#n4eR0l`j^T*NkpG$e){TlGWYdd%w%Eha;O4 z<4RJ3tmcm>3D7JiD>leai3JBfw|ktH4v<$f!uJSH=%K&8`COs1fD}~4s^H1XDcKnN zI9&D)8q)?x=qsih>V3KM`{$54zu%Sg#-bDRWQv)(`~zUP!P8Xs^2 z2~APvJTyV=wegi}{J5rd7EmVNp~hTate`=Ir9_O!IE$so$^85p*EEBJ>T1^+OL@%s zQ^LGL%Uz!N=o&4_VNCU1UdmCpI`X&93S+F#K_jFSyaFO$9CAInTI+Ns#jIdQ+H8bNiA2IYZkoUVvW8>wBBx%ZRV}115~f2isu?EIs2DMAU^B=C~ zzES1v9mrp1hDPF1M{-PnRo)>2iNigr#El%yvJ;HyfZaQs_^izJ`cj;7K2xzmdYes0 z%&UcElp8_VFBXG&J6OUIooQG*-trFtt^`jJs^o_et0}SCQN<)4V3eq$pB`y9b;>O< zumg>%`)pA#$8VA! z9S{D}vZVCaW-LCuMk7;C&0s9&pQws_6bGNT&3jdJ%=Z@cOz$m4ajm5!&K|f3o{7zm zyEYlJ)#7=hweTvb!+_Z+?$I0v`ph#wZ(Y_TAs5Yj_ykd09DEZhwBB)xoyIrXKHC=~ zgSEUtkBJtG^%*RXMhSu#DLPG24x-^?nX7lm01t?{FWZ}X=Y6-E;hk+Rd6iM0>heTO z<%Iq#<=Ysku5rqnH3+}`;`vn2-#{52yJl=hn^86Lrogbd^)}ou&4N=K^yE_~?wceh zNi&SNX#E^mE%NmHO?`bG#2?TM&na=ZXPBPjEYY3=C>-=2SxK1{c7^FTB{fmlkTCfa zkas}fx4|kZBSaiusX@qZwTjqGLu^*mPf)(#_Sc#lr6YQ#h;-nhcGrqvq4nN~1=)@YDXVukx7(ckQGxb|``bW*bN;8+_RA<}0pwZzgiR3N(G^CnAMjzYq8uX(4S)7o+lfNI^dFN~WIZN%dw)}IQ&(SuhjRG)mx$94J5-c!MdgE%)KOl^u7wtjk94nNhJ5>pS) zg#%2)yXQ%DEQ^e;!WKt$bE&6)FqxRO{Ys--BjES#08D12#R8XS+Vidi=!HB!I~$_Q z)C(z-%cMpV%j0u>1Hf|-;8HgqVuRlMG;C7_gF+EXH;eg|lVO_-VpLsr=`I7*v+L{U zn98VcXFmgT*$LU63vE)-QV|B`tC_yMmFM#PYa6BfZ7NnHzIv*NuAr%;>614?e+|BU zxeR}Pb&1ueZQH5Xd_wRATtD^uehGiEt2&&|WuZd?wM;AnIeJ(nu17kX3vdGa2%xr( zp*&aMb{TSt=VK{n0GKegvI4FofVMD0o0Px)oBRqz(Xyj9e;-T&o#+6L7eC99Ia#E~ zO48o@`g}QBu8?~bO7RcIvG)!iy_p7tp9PtZk=;SvZyQhVmV{Je72uzz+faO9>-hLV zudevy`_HzfbpC{aoHQE;+jp(Bi*O%r;00YjX455WxqjS*zjz||+p57gJuRoaiGFT_ zAgqRqzK`6|YZBZ-jpw`fh1EnHZnLXddGi|qMijKY>3cc+w0SQCePRH^q=Hg$z^{$( ze{BFg+Mz`u;l@$Gy$Nh+@oOt}x{zgr7LkFfcS{7cbV@_ujwkzIOsx4|R$y z;CLX{p$i4zzP>^mz3)0on1e;EGL&2P{C9QUcvcUvA}KQ>akHu2H#-q2cd}kSO23uh zA@1HSM}PChA(8N`5i{JrbjO4*MbNpP{&VO0*O{RzkAN|0KlRn-XTC$4BSibHksb;o z?_A_?iL~68W()w}gAz+nmh0cadsCoCf9$|TtKET2v%w&K#W1kfN9fl^Hvs@kKv*+} z0E+Q?Nlj_zTQrVVrwd(u-=mG5$4_%8DFFPG^ZpoCTwEL!<XF-%5CS2@tsch6DXu z;Pc4?9*jx(To3^C!^Hh6|HV9$5o_yS?cbfmBrTw^T%H@pTt(6!gJs(+{Oexoy91|2--k?cTg&1>X1W?a87SfT22_E-^mz z8PX9?X1p6(D3eoR&2;{~F9Xa>1cuA)0EN7W7zU)X@vl{yp(0kZ++8FinjRz-1tTBC z!Y}CUSL7-oN{eiA-8u9hC9-&MO23=@^v}JBvz7u+mq56DsT`A(Mb3UCeGx347-@|8 zI8c)k_wh&Zue4SJA?;i`ybFO|25%zM1MAvTLu`s69xOSG1R?{6T!Hxn|APPHI%;*> zF`(2fKz~H882F;U@4dzTbGelWpkO4x@81alBu=q9)6S&f3x{HXK=fI|S8^yV6L5JS zfNA)&x^ne=8AuUJ@P6dmHv}kD*Yo^m4T^yQbW}Jx36GJT9h#}BDbT$GTzd)yWZLY0 zhKy1Kl15@ui~s~r42fe8)@ULH^oFj-$H#uYQP)|)NGLz)1;B?%vq#sP_k9GOo8Ao2 z`?~=53Pr-)-5*bd0=rPWWarb@M?9cv6}slojh_3#@r@}OgJNF)qLOetJQ9ZTJ!4aGp`s3ek0tawFQ5L!`00|<2D*@a< zH3<0OH9&X~2fp41CW2!?2%;K-QN@6!?%#OVYBj-)CXoGy2vt=vt_M6_Xrx^Koed<1 zLQDU#Q~+fPaM$ohqyWA;(ri8nti4jeZyXlwW`w}s41pm~$g)heN(Z+KU`hR6ZVD^l zl;MhoZQa`6p-ep@tK~PQN9?y|YR76E=A9Uq%iSKWRpIC(&T}FS`p9!Q99N~r81>(J z>yy#oLZT)t>1$=xEN+1!s3D`4G2Z>V*`3{GjbA?Gw+MI1GY}&TtQf1h7h`-<$C~oPYNc)4~ksAH}x-qY5rP~Xd4190D9Dua>u>7W4uP+E8xKp{cdl%TG1Wv&L*EZ9}~X9l%rX#t*#=L=Dz zKlU=Q4jElh-=ibtE}SX^(Ojs)U>yJCEQw4E;iwu%QP;DR{7O>|+rE0HTr8b=JR10$ z8m8O(W0pOb9jgdN_=anqi!_gD;G#^X_Kd=zZ$;Brk(RoLPcUTBuT7z>1jcbF-1uj+ zdBRRs77?^VE||?;E-9_*`go>XsF<^ z`w;|HU*V^pvuuKb=rI4md{94!h8A22DAe8QdIWua=WFelP@W~=`OI+dYG;V-W(hc{ z$k+ayV~y6$lSGFc+#Rk)C|;=;4(&lW=C;K*ftr zN-(M(5_?qZzzBIVa*wEMGn}?E@1AW$_NV@aji8Wap(uQ zI$#0gr6~My0mS$YajQ53nv^Cgh(0X=5+a1z!B5uPz z#}RA_E}=!hACkgAGdQTgO6$KqexR}=(+ai^t*K`4Zp$Wz$hpIqlkfbzrtxzABdF2s3$np-ALjFi_^o`PVw%df@Bx!(60L z7-rzZP{(E86EGnG=#;tsJ^6mBkDrYHl~=K;_x z=F4fr3#wEi`LJoCpr*{qa34O;z}zxAw9f+zs*ljsgX-pgxI1*>0|2=}2aD+WoRlrM z#DL&{`w+kd0gu*DY!(i^QIhR zJ9JS&23d?6NV$1gLds}OtW&i->Sb9S8fk6~u`zcZmj2+NAJcNO11h*SNF%o>nX+#v zQNpcsgD&$v&TFS-_oHZzXk!&C6ICxGVR{eDVG1v@r~(!_#3;b~8}+6Ca;R&!(dJ#X zB2Meirn#BAhdxaH;bm&L`ttJyhAe3ugEIf=W z1%yCf*`@ca@6|UPrEOqrBw(6@Kw+#^S`9harPHod4(KQLQHN?;Q6%}`;dJhGWZ*+2 z^lbp>7If|fl-i`Bp#dTfl(Ur*epCUFLVmC7VS;NQJv0VnRO^cc`s33RBQXfsUhCF9 zL!AvNm>tP4+jLx8c1o^Xl7Wa>=l^>Fb_@6S&g#rlFVlNw{iPAis46FqW7xm{y*`kw z$I?;M(Q-*O5iF>f9B}wswz3@U!HD~aKg}M@ha49?io;LDMk`PY;=8r{jE9EywSX^v z@Fes>iP^)*|CP<}P-6y7hCJ-A;GBRM1Z(F54#QRdn4DL)z)!C1q)SkUDJhj=6Uh8~ z-+MO@!v6u6HcNcRCy28*SAdP~0jTAOC0%?4p{dt-)94jIYnK4=#m9#jpj3gTLjVt^ zhR)Zxy}#cBb~3yH|9GKO6N(!eFrhXJ*kZuHJqlA`+XF=An!Z0jeh@-|T_~iR=L#Lw z0?g;R^xb-D1eC=l1}N`BLovYdih_*BQ|JJI({ni=cq!0?06H-S&m8+dDR3lNj*i`Y zJRv4wC72&KkzfAKm`h~G9MST_lpr9ct55vyl+o_4BxS+aAY#QKTe*^FuCyX-^Ua>M z8Js5N)kj(SkD|)_-c1BB5Ex4$DHOWehDto`M&OdcneZ=OuM2fQ+N`)^L@5Y+ex!c8 z`zdNvED%pHlDLaxX*haza2+uwju5QvBo5k^|IC6gv7KcMrxr(Zx_w&m-BNj$bmHD$ zUQto=40r!*8X(evJcrxC7m&%CS=gY3+>RVL3e13Mw3sFahANdvCI06U00If#5T$Gh zR(A7Qt&B6YxFVQ&>^G~3`~{w7igm5mW;=%Gnx>Yy`3uSQ%TbrH8>W8-s#PCk>0-&< zjaMtB39WySkhMQmJ!v4;SPE7wo(}%wM9ndSD*=}%d1b>tzjd{AKHqo!!QV-|f>Aem zI%tCS*B`mZD|{wgMB7O|!_wL7kR?FS8COXmzrO?gL7cuEYln;36q~fjY|~DN{D79I zXP)}#VDmjP5zue zOL#8G7I%dmz~zkmHSc3WYzVB~scu|ZX8^7i#$r!c>H#C^JB3|kZ#W!k1lvYJw>MY` z&3y7~u-J#GUi-;XAOu+GUeRu|hY09=0#aWnQvY(X^-^bYi{Bs{Lirh9k}^*!ytq}1 z5-(!)P{X59v6^O3daHUMo5eh+{O9@Sf=j;L)Qtce5NSXn(Wy(V09%%n?Rn^?EV@_grats6>JzGo~5c17)cfomE6cF_ZZ*)o- zvL6Ye&%*dj);0Nz6rR8D6?D7O{FKcR60dERQ2`<3U;I{1C78}ns+E-C>O%Wgy@`A3 zTznz^IrUphE-clG_}m9R7T0RRX&lnv@dOPi7PPUn;p1cQOo5lI!>~l4pW9Nic+=_@>7?!FO&lNbNqbn7@+)PmEXXTA#eeZLSVOT zi%||Lq?uo=HzF={A!NXPnhh^pr#^d7nN;sxmGvE+g`nxeqpoARqg8OaKiwgTOT4`A z@$cx<-^wI41a@7%7QW%~Q8&c2E+NLrSH8B=1cZ;tb&V%$Pf;Skps-fWa`yXZwS4pVv>E+tgs z)^21mrkLU}6QSM)dACt6M8c5FPV*LBRu*=Yi-Mr%F)EDpG4XGbHYhU*4!A0IB_)k? zBPoq^w;FDu8G3oYKGl@Os_@zX`?6tsn<4C*;PGFzOHqg#vDNv zm#~0BWD0;sdJtetZ=+7*j}A&MTigvoM60D@nE4|D?9Q~)5fa?lj>1~PW6Z`=toy@q zbMwZw!g|2Pt2n&eaK`XN~qFBLNLiDjMO6e z{9^{qgc+|zD2KBA;)&$SC~f;F9?nz`0Ud+yUmfhiP(jikewZ?8X}(M|`iLoH8hNe0 z!;|Cg@(FH4F+OMCbv!1-LnPq@MrpAk(fS!00!mCJdB-J_y70Stzns+obzhQpcE#`~ z?q_u1dL%@e3C&C*zn1KQnKdYD{Q=(YhhlCWNIT%bYofnY*gT#uv_}liLITz z#V1$9-tHOiy-T7xOG!`F)c4T|0jc$GzVW5uiMsT-VKIfSDxW9)O6N)`&6qKjM{sG-5<)F*WuUACmb%q4c`P zxQI`m1*yE*_vD{U%!guGJJ%3cpCiLRCpSb^-cZfIWO2Bu%3;#H;@5_39U@eJ$R**5 z+wjzBd)~+QZV)w?lHjYEo-nWWjmK zc7o;WANI9K5?B!H*{do)Fsg0lmB(nrsal4@ac0oyKchU^RHfm{(qh-&?c!ycPmRK z{oH&KFP}}t`4bD^D|kJNd2yZooOq;7l@2XH)Ke6}+|C`0@}Y3DZ-bo&03gL@h)+HCJz@rf zIu!*y8!`MX_WK^L5y|L!G#Z0^u+l`-8Cx`yN^w`!zGZwXyb&*1(#ayr_b_SNjQ{;n zkrHzjnU+l^ShH1DKd7f{;}xAyHEf7K#)XYCk7-JTNjk7_ADNbmJgsvxt93R(1Ct&t z>8;&TH*0}uo}`LMOlGh-4|u8_uF{fDfp^KuU1Y-X+wF92G*3D;(E*Zf>R>318T@q~Xl90bzmz zO>$C~4Ti|=W<iS=!DM@5I)wx{n&3*^=3$R5ZM0LXl7B@HANwA z!h$~1rP!`bAvf!tik!pd2A|ouQf4sQcFTwMG_~AQ1t$R8EcC zyZfrT!RMkXdrZG0T;hv)|Y|iJ3V5{gJ_2iPGbm8IOY$45T@$vDLS+UxoQ~0 z^9*K`yYhI*JVS?@W8Y^&y(+|#rs-%7+C#WXXV|7@R#)jLZ)<9_a4fD$RRdk%BoiW- zB8k!ZYea&E`-R!kh${+H+CiC{p>1ufDX21k1tMs8^MzAykVm+b8)HW(gagR$c6 z1W8V|Emq+EiEO11eNF$vKcS$9!m&z(E}`17ld;S#tZrNq*?&U8{6eO^RC$KGmterG z)wI15C(sr?M*Z0>3jH4*FTe09R0!c`&7U^Zv1dn*5>dwbRr!3*EAH*s8v<;D)Z}QEHBRhRBDPsja7ftMZ@!voP^d9uFE>Le|rw zgtaH*7K2jBjcYY_j7Nf0!zSsr>s1@hGp{6U`9@I&(%*O@VN>SqpY>qf zu?R3M8PEd5aWY{c`aXb=@fJp`P%&*5U+wN5ncgV%szmDXVwVKz(N5@*(M6_->L<+E_Ax{m@j?XatBpm9g!R*FF z*wC}Nc6wKTmkjn1s#Pn^R#k(_FO91IEgRI39y(6jbv8`0X$^PA1 z(=8j+M&c{q)htlPXqAibDN@QB_o~v$c#_?$d<5Zg|Mm{Zr0JU}SdxZ4yj{|a2D672 z3`%#M8-M9uN2MPi;nRRo?%5~jiQQOFco&rajOl<^@>HqY zfyI@2WtrBwBQE;(%sbXIz)ooeUl>s03FS|vrI{*@ox>lt*HRV&rWRPln%tA)f2T&V zW}|?e#s}+niEZyBw(bKfIhD^IPVX*=l!i-XJ3Z=4)cVKYmoP!)IIx4Oa~cGooGwi{pmlu4D894vYN!VA{rIOLQ%>0bSpb5*3lLs!ulvs>iPkM4adNtI={#e4qLOP~6$uTJZf#eV+s^L=XXh}nKZ+qilnkjr^UuW?%O zb>=5-xTxFf&-Pw&@k8!;*}@(`H4MF3ziM&c^k)S0^tpf0WyW~Z*!x?_weT|ZUJ^A3NCEIqMJT`yD^m_6W} z3@;G$U?-ZF5Q@wz>ZJ3^3Vp3yM?jF3x;IgMiLCIPp+O^2*E|#~gcj%aN?!w+JmEZN z$#t9Vb}eU%I$j>~dE(*HZM)oJxv@p;_&QGQVA;5Dk=Jy8jouVG0S5xrU36qK<@pAJ z133Ch8H?7!6}gP;t3BW3ytxj#m`?;*FwTL@0_k5xtB&Fm$vrknsh@Nusqq#)zmJuv zecfEF@DOIO@=8?SkFr;DJ^m!J0eB= zb&n%8Qjqyla^hc~bWf0hl?0278FaDL)dl1UHE9P0<%nbk9*@t@F)gO-g!Q%R%jhqM z!XLgFs869W50|Aw(>eYk_s1+Okvd%C{U;6n)FA7o9m6zfNyeAAOlU4|)8wOJZ@etg zMn}4zh3QEk%A}p2&aXvkK3tVaD7(LBN|WI#y>>A^^TlnzFdMh}XjyHTLvHpKT#lr0 z80cPh$?MT9^)78W&c(f!-g>;;Z3!O^sY;m-rcok|rK4`}QPNddpLtFPHU@{QkWeA0+$-aGGR^`ofegNnIH!Do0_Rxc^etw}Ko$88k{U{VM!i(9q#@a5R34s~ zNSsv8u|plJi6`S%(=KNd)5$y;XarnrB53{+3`BT zkjU$!m5;p)ebMg&yP2rMB6xZiqCkx9OVy2MbVNOWH>0#TNHq}Ul-X!U_eQu;b}7JF z@a~8LblDGBXk2~O7;DJMi~X7%0pbX1oAb4W~}MpL8Gj!H6ry*i_&KvJhRr4ndSPHux!ZL?1?w^?7{WQ(83 zR)&sGsO!XA1gmNEk()WBN36HkPtF8{JT|vkSV@mUdx(bi^=62V?vZk1*-v5F-wxx* zU;@AaHWQ*tjU^RqviIpD(gh7uz$+qW$+l=`pjCny!lVaH=_;H+WgvR=LRN;PCHiOBR@~vl7MhXUcZ)TZV-x zAn4nm)LSIF7<>$o66M5vwQbkOY(M8+RQjZ0qs-y{JHCv;{_juuBZ7HM6?f8$G8uNL z+J;S1W8>p%V`=!{pSSzbi_*FAgN^Gmdp0P3H2O%o^z>Do28s%zYNq9MLR<>Z=`S@1 zv}+F~G4->Q*JtXpCb$c#Q;vO}*fS2gD0og5Ce74SIMVxW($c$kv&AP2%qGa9DLkJJvhSzEWTt5- z5ZzVAcRYJn{=b6xcJD zeiV)g(3j_>Ux6u2-6_;PDV=5cFq=%E$4m2B`>$2f<&%Yj28{vU?U$u<*hLdRIf=tw zqK>6%r1CV+T&T(*1alRz?d#F7h{@zlrP$_-w&W6jI--rhmoedQ5xKCj+mRg*PHW@* ztVnMq*2t^&5i|1bg()_2Zo8sFiWfmflDWc46T+Lyi`OYL-$Ooi>?1M9cN!p9=tR#< zp+&6FW)>wijZe!mp#43t$~4F|wikJUbaC^j_;Pf zp`vd_AKETFDSOD}F6x4}xJr-YFeBecsid7F$7mK(Y1)jedD_Zt_YWl5N@w8;vzG29 z=}Jgs)NpDfcoonccW5OiFhwp6KBZwGeZssi-EF5kQj{H^9+lbjYtGFt+wst|6eD?b zyG08rri^?6En?JJjS;hgA-+}<+gB?^@L7^gl)GgTNfT-27%hdnZm2d&Mp}U!nikiW zV5Tq=el<$vk|!7`^B=O>Z#rx$wrJtM&&aucgSq%Acp=f!A2&H!y0pkGGI0IXp!hM()nR~>RAy4YUalnmd|OhS+*drswudwL zqUc9jlD&gwj)wVjw0&eYkRN9C6(my9b1+U+6i7eV7aO_OO`>r%<0&ZAheS6}7-n#( zmCGnkjicY_!~rpU0D>~OZhOo7i4~#S&fThj8I^(Stm2+1g%P=2`L`wWfPN1P@{ey4 z?fkn49XamN!N1Tw*w6xBph`H^U-Y65gT1q+F>S z7D`ibNMsq9Nyca&?@3nS@_nnn+k)EuAh`+@uK?6&0t*Z4PJ7}{$NlQVl7H5|KrR}B zIM=Pl4x%PwFFsiF9qgOUi#Fk zXYR^26Mv3xo+(%<(?wDm>;^yK-mx>6AfuBi)DtnAD%J7M^@uCLk7~mD=n}iIU<2;q zi~*FJtwV7ck;F%lCC1 zsv33G-Y`3Rs(*DkiFqwgLcnZuubX~UA%Ckp9}?$oXIaN1-5A)47C=W20GB60CKK?g z$6t1WC*L;*4-caQUj%@Y0{{pt91cmb967w}HIbg9BjrzpT@CEPw2@6*)l%b^;f17~ zWr}@l@?7PzwhX%T#0Nn-Wc}%YxELIgpX56AU6YYs2VLO_vyC);+KYk$U;F&J)C9eM z1qhz^O<~d|@28AaN^vajk=S@gDo%fFetB558jl7?KM!0$GOISt=TUMS!hj$bw52y? zy%-@PsV!kmE58#eX6y~^t;5EWxBKNuKySGHjpCw&vhDrP-K-h4w^NJaPqVz$M<*My z3Zzf8g-Je~2t|Iq2+KYJ_bYEL^qT^93)zc^Yd<|>s9U0|QYA_cDt_5rN4kIBcaWRg zf7aH-qwaASqt0QOD5H&rTn;0>gjd>Sw=6;MGMv1_n-28;eWj&FhFSVH(FZiyC0ipD zgroEg6eCV97MPe7lvZC(5ggId+tMumR-M_1dX?_m(9xwb!2j1p*-e5^d|pM-#8SuvsTyki0bu2Ddy{_aSfpCLK%r+tu1i7B z-5RqYA!vT~(9>srYvkn73>S#qP2hdC7q% ztaB)hQo?Unuo)~lp|oG2aNMR%jyDi+AaE(m-)JZ*(<1sHR@MJdVjO~R^l z+;(?KfflxzF;l((sHp8AA;x`LJ}GbT#$>2W#TgfoBFh#g9KO zS*!8&3Ufjzf4mO-6y47NUmFpyM5LVa-6U4%jk@pwZr*fp!GX*d_llII{vU;ns=O?k z0e{d;$TYVJn`?`LikiE>&#Id<|IqI$cKeJj^G<)@)95yJ@GG*=(9O&!1;TS0aA7QE zVJ+qaa!U=2r=p|5iW)z+E!(1Y^%sz2UhD-E^G`1-9;@ytW^s}pV@XPn-$(D-?ITH% zfqU^t*K#Ix?w6WarX!+PaD?QU=``4vh?U+#8SSqxWQG8PyvA*b4-#01Fo>HkCdb%{ zii?4ZPzdnkR(>;K{N9#;XL=f-?z%z0Wnggd99UJ%Ez2&vuOP&yeGX!^_uLOzQkR{_ z!NEaJkv1Yk#Gsm1;e;#%UzLBMNsi~sJ8e$AsQfTnk z9ac;vz$dNRj>OUZ6Ks#KDB*IxEX1L1-IHzI`X@(n9%8ZH1Pjp$T2rPA09UyKtb0zk zruW~x&Q5U&6agTFRLe~qO4GwB4bVj3*8Qw`!WXC0^O$$H@m3;0*r6GDRJ)>U>;enu z57YN7IvH@^hcfN;@(qME!U%Fx&&`?gNGEv;^HSw3~z2G0DU@69?_Wd z2qrF=UxwBjZ~;12~dPg4>$ggjzFq@0>*S<_Ubv^{k;qp7Ln@S zshocx=e2W!ERTlPd$0d>`V(%yPZOg9rvd`GwK>gaKci;-o(Mw5wSVv^ zC@8$;?=+vUV=SKAQ;NK~k#7>>xcE}_qG{_=vsz|)Gn1BO>}}Ji8gd%Tq>-?oM5Ei& zkkA$pI@NI8;1UYuEQx*Lxk}Bu9(v*xHPFbDf~jWHQqn7rPR*izpjRM=W z)DK@^_rvdDBcUknAnI3mNPv6+7&}r%xdF4~+MDV*w?qIG?se4hTMZ<+fg{)kmW-cg{99dmk$2^VHZY)*HJ(P>A?$_eJR*Nv<(a%F;%n z_C<-x&~O^Bb>5UcTJj)t*KY&}dWx<$es^Xdh11#=)MgK6JIMq9Edce0Tg!SbclOi! zR}^q1K`zZZ~0_5`Y0G1_1A-n;ku%_w9WK%n=Ok4oZuk&?0r5 z>J{@AR)S#_4@>9QBBiF1$%*9*g4I#ZixK&X4zYojBAY8uG9DwFn$Ge#WIuHOpP?ID zYq^rNoALWfPQt}2I?b3W5{m(NISrzS`K_QoO!0GEOI8UIbt}jDqzMa}a%eL2S%pNA zi`fJK?*tK0pm9up=if|F;^@wki7KnE1?b?mQ{U5G0Hr?Pq`F7#0BoksAGuO!fz*Gl zQ@WnLmxJ9QtTjI^rL%!vydfNMDT8r+H zuX9HUlDS86A>Bn=Lz?yU19lm~Q+|bksd5`7Z-XWMicsRiX)lN|nl>V{nr>1uAp0*f z;Qv8JLE&1r2=LwSfcux-&x(O6Kq0t4^~J>%zvBcu-_G5hb0A%%6G}+fHFHm%XQ1iW zS~w22eI+YtV@fhBRPal%K{tuV<>}A;mc8gl*76(XU1D{psDj8GXYMyp@i52U)LKnu zuFb5!ANPy5@gNeswYT&`a``J}aaa)oP|3L!u>mrY7lwhp z{~Q3kRIldW2T@^AzG=wF?CCt->c#|@GvI+lutD!6wG39GvHGMXfLc?{G2?w zQ8ia*_2M;{`p$u?^QQ+0>kxpc=nfPAjSsw2S|PkYI1fX=0Wm~~uJ(8%z8aP#?6H9= zehu$;LG`F=)A>7biB?#J7Kbt(5|!B*Kl zU1XSPRuR?PZQjsf^X%Xwm+#B6VmJSnn=P6z=qFE-WKN4;P03C*eunj#miw^A>$7 z&r$F4)S*xWw9IhsB8#hr(F?K}R+%i_#LN$NB6-NY-0nQT#pa$4GG+$23dG===EAy8 zABtD|0Y&fJ|6u}g9>9E??yrPv*7Kr%XfwU63IYtP0EHa$Vtvug&iUW5hw*Ne z!GA$_`^6*S)yYcKQ^(~nARlCLvJ4jhtpDPti_d#LBF;ZvoBikU^?Pf$ukkv4SW8+a z4b0u(X6UaPV;20Kz`2SBPPvo}ndGr1b`|Fmvhs8~W326&Su9^+w^7t&Rr#F5NoPqK za!sO;0eH1Bc{)lZb5lRONJ2)H|6G@TRvAPA_$HwVnO2~1(C!U5?I9B*txDYxK(%{@ zD|$gl@nQY3mmN@`fX|WfhYtb`E>dWaZzY6-2lhL5B3JWf0vA_H&?dePit{6i6Tc#Z zYoMP;$25y>d9zsBJ9?h6|rp1v@(TgHB}X>O3SETVbRi( zn%N2zmukoh!)c&7Jmud2q?_ygH&l=#UySfc6Cnhk@9GLz7Zm5>`Y08Kvp&q|A7S*c z@fm=4yMg^vP#iGuns0Gqg$tcC^ldn>hlewyzo#{las?@+puzzixbnf`&CPO}#b8l0 zNeKV?F+F=%vpDu(iS;#Yp;btS)8}aww+ZS$qN$eq)OOU{{}!Lm&R*3x%mPX(>Z}8t z;KCTzMxAc5R>~iRTzLY?%ZKb!ouG9Q2saHet{`hMFdowDt8X14-!u3(8-bl$DE5E+ zK;TJ4EWX-F^`h+zL90UlW9zSb2mJ;s+@F<3ai+Cs6MvilVIeqI=Q-eUoFA}Of9ZsE z9acXUnFVzR<3Rv>j`j<+OmK$^NRD~VMnFT4ER-oZA!uTTB><;`%zhQ!uOZ_k| z%HjF+Q{_GPVpROdnZI*b)$ah#8Ojqpem(jfEjM5Sa?P9b!WVw{pWk&LolF#x7EszSK{z9z90sN;es?SBoI0ToQZ?SM!O z5Op>RKN}*LVX^c*F+}*A9o^!ZcecbLe299YUa8>9S zb$cdVzaIx>f~93qeu3@rVnfrz?I956~A?>C*KCIZ>P z_57e%DCDRFSYN>D4xCW`S@-2r-J?y2{828FoTWyqv7KcBZ?wv+AmSA@Q^S|5C*K6E ztO^n6Rwpv80L02Do}%;tv%7q$G{dMAxy34mXYP=7ObA0kSAdlHIj2y)z~4H5>O8fN zr#fRwf8qZ|$x&?QHpF%wm?5-l{E7#qWV)_;$#Riz(NUfqlW5oLb-fW6MJNBbE5 zr;7hL)Fhm>x{cr|-@7iz>j`Ydl~xaJS$s@TtlgU~VnptGzWr*A58QwJfLr4_~H=DtFsP5A=ZPQe>-I{wwgQjOt}W9#ao+0t@TB$>{8s1N_#-!4iqtkfRawV4#il znt)if0a#AIz{QMVW&vOtF<#1Q(A zDzy4|zd8tJB@n2|LoCK7U^B=iAOMvH8);VA-H>glOccpF#6$+m9+ZeS5FrKPJ_5o8 zU|QwEfc-6S3kc6+ikEdJPJBQ9pZOeQ-1@@*MyU;y*Y?j@0Km0rB=_D1*QMlhOLVEO zq+4rEIHpn`Y(lDkP*Pw9>1JgY<(xC(qtl5;or)A4LmozVir(PxX< zAVv#{gBEMUti4c4n&2*Q(45D|`5-m>P{xV@r~If-60U z+g!%WdR1ah`y?3CadM{l@GJR`G_wsxB_z*Tz5|TkW4W1oIspQjNB=%@4NV#r4AP_5 zG8f_r23l{rSq0M?;3cR>`$3Q$7c6W z_;+-&Eb*$DGbvd9oDk<2*&1Iueqq-N_+C(S2kFroL;waz5Kz2h(IB~>EJv8uhEt>2 zvJg4rHgV2m0w(7MAmc#H3O@VAV2{p!E8sBcgUC=Kz&;cNSJt!IIA1KP+aLemrGUH` zA+B+6815$ULmdPx9Wh|sxq(P^4cEij2R0n^B@hpK^z)0sZylHH`fjtD*VlvMfNJgz z_@tm6v;lF!p|5y1Ujy%bb<_^Lg^Bk8%2tidGy}w51q4cn)&gwxIJvk~ z8>U|nVSsb?B}Q3k5#WTMcpbF3m!2ki78(B7++9yJAMwW3pA6HUz=HgY2bGit z35hff9hnp%z7X_L{Q)p_Ui)!F+XE3|GwsA~WP6`ScI z7Mq&g^u6GoD$Nqz(B~Y>`mOHlpz8s}n`Pi3oSL0I01WJ_5K;;g$p?pLa_uaIT`5VA*(>K^N2TVK-_`a(C@~=2hgMjA;vu@K-a$Wul9jG z0z9uhsL>E07AtfH`m7Fu@o<8r3VsLjX}kvW8r@(whX4mL-+&9>M#kzL1LVT}xAXBH za&&|&3eAA2FyyD*@h9sPW=_pU?dkw;`&0146V-qswt2cBo60XerFp3sVU+o)vkJ^? zYTeOxHu^?@ zwGA|1ixOcVgEkrfUD2Rz2qki20UZs9j!UnUvUYvG`5*t@aWxh+xge4`VCF$DIS49l z=4;Ka0k02L1c(7ZR)Nrx&x0`mr+7qYvqNOvJ0Og}n*Ct|9a_bcRQLE0Qwi|fH^JY| zH@h%8v|nn0-r0J6&OIB%@`wCUp)(4cOJ{reaT|cyX4p`Z1Tfem62(YQd`^bTFCAxi`l zj;5G^gaOEYI@k>c0xbgI7z#><^Rr&uO-!R}$>jdWZmK)@|EOkA{i3QW8AWH&1Y3C2y?ik__Nz(980tA!umgs zyV%3fN2E-`xJdeqm#O)Uo#462*eW~~nI}IH&?c*~#3wQF80~m_2<;xNh+i%29_=r$ zw|lRCS~QX#7#;ijt9>`y#NV#^^xx0hpWn`|zIC=E36`BH*DtV*5~>pAF1*{gyZHm? z@KW^)edn8l=PRdvq`+4YT718NS14re4U$0?4|XU?0yOt9qlayyf%xZgPQbo){Vz~{ zaM~FoZ#!|T?sa^;a@>T7s3!wCNy<;pIHLGmrwUkU9!Vu{&1Ofk z)GCDg;N)_a-ey1B!3f1e|>4|{v6%O5r;*4Z6BF>xq` zf|(+1;R0XQk>hIY=oESO%4#zLAWDxrC+r<;KEIavL8TaEY%fbt>6{}!WogdC+O5^!)Ph2r7e#)}8q zSV~ddI;=R6-)NA=n;G2h!N&E$24 zFDh@eR;>n5e)S9B4caYk$I?2U>gei%gy4J5!-@B=Kb;PH?_R?(m2f?d@CN7mC8G*) zT#7FB9qB}>;_Bcbed%w|^nS8+>9h6`^=!{9Zar4`v@3@Hfx@9_9R;K#b6n#?kt^;n zOojrTd60+)fO$m(^yIpNc6#cx#%u%{B#7w`5ne~@w;;KTFtLl=_br>iHaSP#>mQh` z|8jH?gTAade71;&Drv};6PRNINegISK94nP+kfrI;-l1e`U^CXK0Ms)LUJnlO-}HR zzK43}h~j66p#7HdAAz0`h*;%iW|6@0WH6u3VO3jg}( z=(G9s!^)vym(%kB9#IV_2{uRUyR?49k>wZulYHn%mPXI0g>n6jN4OG$wiH z_EfWjK($DT&bVs-V>^M{wV)59;`hZ(=T?q=hpT5OuiIEAT%4SW6>YP3!FYRzfu7Qe z$7;;dY16Y+G53m04%n)aMNg5aGi>l~$n29YD|mo$J5DmJv*c=@LLb;RM-ZM`Y!X7( za3bURzs|>hAApT{6e#IUILV;E@d30`@dmjdT0I*F#|GH(FWlH2I&Lh%B7`!bYOmSy zPrHI30Sf(3y5(Y0?)<+Sp9`hV;Jm9X7|Mxt4)jkpK?H=j z>0p(g@9=k$cb;K(282=hkyx{fM2MDQDf@=P`+p_9fJN%rCz*>s#=Q~PVP(cAuadYzZT zkM|yayWhqqkYHP$<1_sRx9%k|b_dqc8n_t-Dioa)c|s&0= zU0Y%hh`ryi^GPAoG^Qq%VoDY4g&OwQ63?Zufzst{qh^s>ldxbuh( zkv(c6Bs`v+`t9NRZSp^;dmID=x(r+nC?{Q&CLE9`n0mh(9YiK+Mb>B^qRv@Jzb zP$T#2rAatcbL@0pV=lY=6}?`_x!1Xy(OZpFDc1W{U}t9s+7dd;{=rYwk^hGUctmVE z92Y)c3&LFkdMj)VxCbR}iZ+7IJ&}}=E6daZ6~WY_*i+x=&=4;E`9frR6}%q7K}cc9 z5%eJoJr{3py%yejLLqFXRQ*Fgt0DZjV8_3e)BmXBprsWAnNCAay8Th4&X4zhH%}i< zPCr?YLrN#R+1@x{%XHvR57Ljr#vHPK7IQcCa5%lz>v3h$@+KSGB(_J?=Ryv$#L%)? zA99|xg-L365czMNrg9V?a1H&67MV!74SMK2{p*d3c%7q;N_3!5-X(1qJ-Wwa^%Z|q zMREDg;)c4U+K7vYtkqFMj0l7idmyRhyzD!%()4?T72JI3h@5rZH(iz+^&fjI$8N@n z$NF`~QKJoTe^20Ghm=HR17+uxe-2^d)6 zr}23a*~t}wC-?{@2}`{d|uxF4x*`+JlGA0jPC^nSX~ zy|C;FaUNC=FY@=6ka{tbSoNv-^6o465P~7NeMVDM1|LTd5E44QI#DQF9wvR zo0UZeAW@!7-X4&#e*S?$w)XHxY9bv@a}+iL%?M$rNjw~j)k}DRz~8IF_PLAfDg}COztCu!ni@mFL<__^Zxd^8 zoUK0xHifSe=rrF?xR~o`ji_ck!6ta?H153KgN&!huW^gfivSDob}m#pGW@f?N#On7 zHs_hIM&jppfwm`w2v`OeBMr`te^PWiYD8tqI^_UKi;}P2v^8hM?CA2=8>AuCfZ#BO7sWv~dgE z&BtX;z%;5yc^$EJ97@O#OD8ovtxMk3;J~>u^wRf#@p1`g_`VEpuJIi+i(V^kHf8f? zH=Y^WTRk%+u#9abYc2<8aqa(VyhDK>Z#l}%St%LS8I@!sdC5R9vEI5$lV>(7c18dTYE>Qm!QqHR)W+Yz@h!sWm^#z1 z(Vu4;JvkG8q9a6#SUvX!F0U_Ni2j|d1bzoJ*JD;Ab-uy@(Acj>j~?j4A{ z@A^aM^vlxWI&ZZnc1lW04ahi8{U4)^YJINHxUe})7^+zqIA`wi>uZX5zWq{?z$X4a zoav|eh^vUG@;+uW7x-evu#$L>#oypHw6 zcatj7FlsDF2WBQR6<-n$g(goxwtN8z+nRaQfe%-~l>!OAj;(hRm8uV@1Gc}<#|8OM z)>BKl3xdk#&h$3wbdRvC^07(PDo-c*1^cI6Few$i)g*1(pPcD}p4b_xI+jix3s|N# z%$qrF=tuiwLt87dkSm2w=5|qtEo7siCd|+}^C)mi}G~^PV>CF;isZ z(;Bh;$9w(<%H8pt-n+XtxaY@wJBu53-2IH}eYZ6u?%kiM!BHYzFUS~dSC*cb*%q-ZtEtO4 z`o3IvhQcxJ7l*eRtoENocsaZ~f2fk7@F=&rPN+&Tv|4rc^lnYBfuh!+Yr;dtoUNg< z^}M9^Y^;$LkE{24gZFw9g%km{Vgl+L`~d;O&FYI zcdz(-&-qZ=RXM4|e6HsUDf+Q~TBilbaZ&fZosQVvH`#?P(ImSRB@1gf z8Fx~?V4tGT$bI8KPd)e!t8$BKz%e=p4Tcs zOgfkldU$%vJ@!KH4<*x2`{LW0O-B0dKE`nzVr$T2Fb{SSC(2Ys80=HS%c6%$*%LH8 zmD02R7Cd>g#{|0)x6m%bf8_&8@J~`_J&O3u6;YiuD;HP1j5|Y-C<%f~ zbL`5nWYUW=YctC!52wi0Y6!m;Sm?hCtjcWGDKaG)_O{|8p@jYS2s?=#SzE=UeyN8I zi?|F4LT*j*ziBwWEW^u(Uo8@InrtIwCAqy=KI0mK;7?q z-MetFjh7PrF9VRdl*Gz0VZWeq_EXpY)o19>1GB8*(wOCZ1oGq!W_?@|UsB zLzZkLR}y+$XNRPV5_$<6?JA+N;TCN2AnqsMxs@Bu81;O3VsIs8;qg4h>Z5@y+<4M+ zi9D;26r*j87%`nq*>=ic=>72!sT;0Dbo^ZMd!o;Llep+p^v`*Z@~PyknzQfD55;H1 z>a@S)5QtwjJ_~Npg(Z(LP<2S8pmM!_CBba)9O>D8FrGbXm3!@hgDnxurFdp#Dnre@ z4V+oqX3}o{^nQ#8F3Tqvd?<#Pd9Mnun-niRal_AD_;9dMeWF`U=u#$A91L&<2dey% zG$!nqb$7Qf3XrJsmTA1$G>kWXlR59ccBo~HUCrvBw|3_n{Y?t5UrPBFnN7Jx2F8^f z{QE2+nByy#u8_BjC`zl`nk|~a%Yj{w@|seA{_fDH;Y||ZRuW)(YlY|0#p>tWZ!DUA zz4^Nh^Uo1ZBT}!ItidZVXPp_w$u-hkNXD#Dt$iZIYVvtb^HnYa`98Lw+pBns1?2G? z1vtkf#We1|u*qUkCgQ9LXA0qjW|4Itq!KdU=X;SR8SOR3UB9J;&BWB7Jkm&nq+YKf!&LdN z^#w_??kO4L&J|~EZv$u*HaK>V$ae4i;qf#~wU(J`HJxE*vq@bXxltu(a7XVp@|Hyy~UV{Dh>GyDA)Wl+W)OQp3q3jhq;Vl zVr1&Hz8(1DniCqni6ns+@Mp|fHS90nJe9*8zN+@`gpql{v6 zEFV5?CzstM3BZSQP;M%5K_fZfO%~9X46D335E^;rM?uWVWu)@@A^ELVp`}jcQkywb z-=j;+cg~3j%(eMx1|I7XwhiIn|Lg55AEJJuewXeBS-QKC?(Qz>?vh3t=?3W(qy(f9 zrJJR@8>yu`q~v~o&vWm;aCyZ$c88fWXFheN--8bBqP`rL#&Bs~F`!HH5UT=x59=62 zLBB+qN~k{jRE{fcY;xffrO{<*$`=V&9#H;dcvYsQ%p>a-2yMq!LdR|AzrX*9ldD;G z)m+QwB8dZ*!wXx&v0ONmR&m<(HxN`VCf8SGI>k$%)j-93*W~^h>yA5g4o8;fphbqT z2N6tKDXdFuq~t^X_Kt?TgNcB*q!pe#9N3ZJRD&uIxmYbNw>oWqt1{ERX$Bg))H$;jb_p!YkHk{&n$;*gQ}V2@bHE}zEJA8;&@Oy+V;oYd?bQ6kGgW88fhj( zM$-Mq{yXG;b3O1b*~jK@+13X3q@sr~mc6rehtH?F!Aqoc=SMY*UzDYdm)<9zV;tzk zb5Ht*#uCf6<217>6I4ixESC+L@Pr#oOZ?gNP-VFxaeA=2V9lV!WBqH9==K2<-vq;M zBs*s69Qq;v*usKdd>U#$M-RJ%g|0N}Jf&V2di3fvkB3tZ?Cem#BP4V`7=NhAS(_Od zUAW~&HEvN+v&|c)SHw0#6XWaKPWV@FwH)u>1DPyHpCLr$yY|#eZL8PE_C$pY#vI~T z8N^+&0;h(=hQXGuv*zM3)>CwvL3l6M4$3(hy9nYiB-BaKK+!`v2+fcv@fTmoS5$T% zp+s)3RCyJMLQ|hq@o%>z3mXcfd~y8>T{`-xQf*S80#1~}dw!tkIX*@xbr9lqP=zzj zK8^g*@6(REdY@s)hsF*;0_VXI2@`suw|lu_Wd#oSHF-*spsVd_P^j=Xkke2N{vqVzHyD#s zt^vGD*H-Xl_}Ju_UbJh1PtUbFT{Ekl4~xeK(oFpCkq%>@e6M*RQqCjc!3s&$m_Ov%Xu2@-g> zqifRfw8Q$BA4ZZxJs*i30mQHVJCe|^l0DwZPT@|#J<@N=_+cb=y%#3CJWP(r$Ft<;Eiz7FGh1xI`+VK=2Ui?AQJ!)Jqk4c}O> z=5GMs`QtKn(cjrDSH-RSUxm+weqX!uu>ECp(X@l+7Ye=@rvOX|pmXUJ><1t`G>V5r z`p+}Y{cfR}c2d6@_Vj)qsCuXvA&BwOYm1H1@)ukWdMzgwz;Q=CSU7Xw@nO7^L7>_N zVK=!i@RvS;FZ>E2@B1+BKW7TRREhUm!^HH8U~5!4>bp%uOCumMzn5gHR^H-z^dP?_Ok`STBN+}99ts)#ii_q-| zK!C-ZKDpy>0VSCJWnf88XlL14pAbAP!6bZ5-O6*dT*(hR)T7@zvNv{irnU)?fLMe4 z9$NO>Bow|T`_}1kpZ(%Proxw$h_7oitnwYdu@EB-fZlSw$nzI8OLV#UfyxlM5mrINs({a=o9Q|~1J>BF(8^?_Ut?^K)Cj}~G7k!R zHA~J@(F@vz+@MH^^9rX&*WSao#JD3YsZJzDSeAesOCT-D*7HatzacX4O~x=z+6GP_H^1p?_D>@zS65rx9+~p|{G*!BEculkzO{?-i zzpW~T=wuzr)YzWcz+=rb8m*Wpwy-g~U<>eKJ%!K3S0N$PP`t2}q{PurfB!tMEPUv` zXDOI``fqa#rIuRcd^=Q;_3lY%NPV(kmB5Yw=+2?_brDRmHuO$YLMJD}nKPf1a;8RB z>C7^PxoUGk;OT5y%(S4dy>e$U}#S2Nw)x2j^I~nOn6lCyq$=>^%%G za-y7fqb7@GkuL6JOftSyG1j+p0_g$6x{yquz%pte}5<{#D~QAH}uV9h`R3 zk81T1ZMpDlA7wUK{JwtH(o*s{c_p~^C2C}?Y2a8=raS1=2F0(S8s*G5PKd4@RR?*w zob{1}QD$TH5Bq&Hz9SZV)zmM2N3RUSSZ4nlI^#OU5{#O=8&yJ6MC=BaNd18HABYI~L&emdaNi96I%{gdk6-z-A{pmmc zQQHJFy*!uHI&n-h>J`^_)~V3pQ@9yrE^p_UF|LQ%B}Aff_|_F{=)$Y1BaO{nwJxRf z8UK8NT;=X#Q=$4wazzt*TYDv|XT?7DO|TY;xYH!TZXiSm-w}wm=c*;q&gTzVS_2o$X28d z%oQ9koU^#o=!ijkf-GGJ`%^IoSykT#MYc%%5Wh3Xi>hf6vmNu2$NzyP$}8~7$sA?i zYcW@O@1T~MGL*-i6O{S@vU&)^o=FzM$hm*=NLWp;>Y6MY2vd2W$(|$ksqAmgS$Gx^ zfH>6h8NnEc>gMw5p}&jLi)*L=W_p?e&w~P$BJ)49)pn%|92jQq#2GO9)8Rt^ z7#(144SiOX?xoW$^}qQ;NGBwA74g+6+)^s*!FlKI=<;3MLT`Oo`pawZc{M2bvg6e|ucFHgaARgkHwYH7BsoI*FE`H>&iWO%A6qUu# zUTOGCJB){}t+h_637!5`kBRW6l;%^siduw;N4h#Oj23S~Tu%IvyO)*18y_?F?B ziwAsqTDIP(!#9O^t%=h8teH@&-8rUOguuqV@BEu>NkednijolPB8wvw= zui)~qlS;mpNaHd*GEp~`t}#EEadsz#H}_e&(6N^i*TO32ilNX*uJx*_&bA~1*>Oer z*JqtA^bL!jLOzdg=~AA!HQ?l@J1K50J}a*K#}ki94p+gVPnW&zi(8jbC*tcT-dmsk z^tDpZMHJ82<5Tv@7|z}fs9EdMd_RKNZ<@=Lq|KW&vcnf&L>+@M3CE~HqGyet1(o2+ z-l4!t>X>Rk-myL@HK!7kWp~)8e=(Om)dYXc>61a!lk`(N=9yu;mCfY6A*OV(3vzM+}>bA!UwtS4HKw~ z+>FQOA%<^8a~KN*fS0vHQBfCQRKE+G9IEkhyNho}fV7q%*gMk+YPVlVi)Zd@pT0ab z7iTM|R?5lGA2`Kbd{E_(#HL1;lKFxL_%+u|W_5~@WI~afQJS|dtT@3%ODCBU(l+9y zCN6X@O`5A8JteI4=b-gY?F8mlLZMcRlval5kg^PX{xop;?%fW|Fpois;#ZqyENdNc zWGZ-vTvZr_6s~_$wrjfOQcot8(ug~DRpg@HG`7iK^;9C4^|kf`HEO;~O_*p&jJ;dl z!Hl%-!G};sRKr;ZfCjU=U*4`rT>p+3!TkFUTug5OIpB<@FIO_dDx46ltkh13m8BW? zY)i|_pxXKAys(a4z@1*Q9Z!!xaE2pkBIeMflTk90xsqA*gie({2cX8LomYiU4Kk^a z2Tt|`wU2EqQOmb34ED3*UQ_n7f3oiCbW)V0Hlo=l@ELn%C>`H%*>)>Tl_zkkmYcuZ z-q|m><;yeXE3ZEJJoHnasWl4oCRA&TZjK{XZ%KUurF`x?DmVJa1P_HGA=4@**W5hQ zj7RLyk@W#38qRXntBU>GHqRYc9HIA8Z4oK|et}RyEzqxPZ9o%K5(3fxcg#cf62Gv} zL}jIH&y!1MQeyVkLO8^ppq71`1B228Po<{tV#$A5!dblSV7@?a_^5EalEMfI50oiN3{@S}N zYHq!|ZN+aYu9a5(y`Omkb-V(j>>z2&hPM0wPCG`4jHS7bj%n;c*CB$qq-5Qat~9dM zk|26ZZQG|^Co8?VLpc+-Hu7~^wnQ&zFB_g~DRK^PTtDJn3XqU_ z?+)?kNfvCnb^a1EH2m$VlV=?SD+j`DADK1o*QMbWJmsu@QzZ*!1OY_#9Ozfpx0EXg z|G#B8Kr#TWgDb!)KiZZTDu}05MFQH86k6598V&VdW7?(#`0fnX?i75TS92IVpRR)8 z{ohymHQZU-3RfSOC|`@-P1ziKWlKb|P<|E$6Y8peB?6-KZv;gIi=ki<3?YGabjSteW;04Md z>$ckfi+fSxISVenesIED`y7SjX6+}xuv~Y%^UD)OpWB8D9Zr}c)<5yQ3f`;qkby{3 z*A$ErMo#{of7M+|_kg6J!lwi9nxrINq)gYP3g5-%&gc zhwQ!`Y;`GmUreRj53AfoDN(MdmwjO zf8jre=slbxdZwQF{luSJn&uYakq+JxZS4RF;wm1`Y<7(hViu2(FRMhyyWt#atA5;S zHjQ#I{hiez_a+dD(9Ji~0PkxXPH;N4Wv40DhU@Qib3zH3rPtxcj%l1f^=DCbXncHF z+`kabRqT8_JaI#jXxpj$E?%DPL>eS(69Mn0$8%O$sO5roMW#sh`wQI@YBujL^RsQE zQVOxKRO%@X|9d0o@6Fh)NZX-LN>y1X$hSG@S9B!TFTknf*Fc?dMWZB+ zvUmiI?CK~pXc?=d>olfrVDD$b%zA0uhbp|2`P;phxz{$a=u9}At>>T`4nCkkaJdL?!aHB^aKPD5~GyPtD))%|AFTzrvJrX061Gg87wb??B4mM^#dK z*!W75P=B-~)T~$!UA2k{H{_;AH4&GKuvP|z?sI*(rQ%oO(0Znk1LN`#pQW8nWmfk>erd3nr?Z|(^a=fW)fP=uUpWT*JSo#CKZt4% z9Gc}r3m`qu7u`22fFxvSQ(fWVGtb!@RAg$aM-Xd}-6xclq-ey9 z0uy`y>k!*OsVOPmU`{8@y=qk!sSc;MFPttO^R6i9ybIBF-I{YbZKg-ojwx!+`~GoS zv+1$T^+Esneao0spn{anf>yNZtWG2J{tlu6&<~`@VIWBf99ga~N||<1;0hlttjl*7 zoaJFbKl`+z!We(WM?CEq*}{nu<| zqc4)dR$ttiy^!fVI7ce?APK-$%~UqXb)DP%3X{)S3!baEUMPe zGf;Tu|8o7{6i)C^nkZOM@?g+1SxG{Wmk_;iQ9SyD$zM4OlU*xQMNv3Fc|0lQQtFXM zjMI;3xc)Iw4$T6bJ{}!d17tu_SbnaUSB~t>*AP7OX)l}3hNs&J=#;vl`9Q4xI34Na zb2?a-uk-g8U0Ds&*k#s&cMYCo{>0VMX@tU}3h(0JkmxNi^xaV-&q5 zQlo_zQiWFP2A%lM;I3cJ&t7D$oS65@WPCEHkrwpY!ufkr{;tQZ2Hgr4>v=0f%49>o zG5;$U-TZ`S)q4(~t!P(QcvWJ3*gu>J@eONAXX<>#N)5!5L_!6wRGgXbI?0#-8H}<; zgK6CdH3&LlF=6TKi}|E!{-3g}tdn!!=UhSl)LUCLDM-`AuceE?i})AEt8xhR{>en0frj~{E+8;EuUv?LHXU}9F&S1uk08&mNtaJ+d`8o?O?071kYf)(1Xk9c$R|NJ3^z2L5)OPSfuSD%o7t) zhZa}R#<)sXcYKr-21_5Aj=`%e#aGf8UJpm5z$K!DBbsmJMumcs+<||ZGoMgh$X;E>+s+BNW>)8&qGy?M zSb*P|A{39qUTRI1ES}TMLJLmW5)x#(WSI%a zIx5~H9`n;4{e*2J>+rEwN)TR@67dS3t%S-4%_T~wA9=Z=+qPK#!O8@E-^bikoX9m4{p3M|T9050fI3*-SO z6(5-ClqZcsTNU#DEFk?l*CRzc@`*OIozKIxuizG0?0R^HJah;o;saO|L!vx`v3qnu zrf4Y?)bLp_%i5p>1dyuKG`xaNV5WJhu+qb`x%5Z!yt5QDIJiJ;*>jz@MUP{--`M8dvCQ=znqD7|B}N%T z^&V1ic5nJnUe-@h>t^UQ5$wks(U}5GkIStGK5!*kn&MT>dpWo~$`WMYp;;M+MJmyg zA3h*~1cVCM{X1PpeD?g3Tz~&i?N-p3y}%j`{vveQ^@?KsJ?qmiQ^)p6ZM%oC#+4|y zL`=;ib!?=H`U^jAY0Vt2RgB#G1NkW$$FwqY`rBYML28a16;Ds=TFv7L8OF|Vt*7xa z@4@ut_6Lwdvmp)@?Vo&p#xjh_N7yp2B+ssBt+ru7ad>laDrV47 z6tD#P%q6zU^G)7qB&Nu^O=jF(ksQC<>x8}b<*u<3=5P7odV~o5{kRD>^t8@Nxy|33 zBoXuJALJ;ECc^o5xN==*iI<0c0)0%R9%vjb3NA0UAycF1Pq4k3ta+$r@q)Wa4 zC#87p44Byr9G;9~E3KQ7IRg$}$*0%P`#w&aZ^CuA9+kJb3Az8MjcyHmKRVO^!YZtP z+Y1O_sC2;Q__IEnYPRZq)xfVOQXriU0Df(oG+hyyqwPCy^PuP(u1E!HNHuytu#;)k z;*mYm6q!UxWM|s{v-k!&EWO9~{%?-fWtM3lNDB4Va%019y9Y;#34^H&7(#<%RZS2j z8P3(Ez*GQN4{y#vWgY7oOhjef`uD-I_YhR4K7|XXZ zGLx*$AC9@maqtI*nB!Y$CH?U^2j^!vxhk_ZB@Q8{9;bH<+>1M9`~|qubPMMf(*Z=| zuJ)b--m?Q!(e3#vnT= zY&B<&j^vGWFIDBfsp~x76OgTCKKxepkk~pr@^F&WP+ex}dTK+)u)+d8z= z^<#&Bs+wS7y&teOZFPR>;6M)#;PWrJ6RHZ0Is!T3ikW93DD+(%WEGlab=! zrnWFD9rpvbll((JCA5HvjDT1bJ7ODPlULT(FL4mEZw%QeJeg~lU6eOaOsjdHY-Mej zWLjyYv1M{Ew<{^N zG3RZ`g4_JBlwL~y%kJ&;6t}aVS3{8-t%e=04)Ssu-Qns7LH7`7qjeQPu;L7*)F;QudBB0w{*^xf!NpwRS_nDYbV zjI}f2rmJM|gq=6aTzG|UQt$u@<>KeR_*5PPK^$(DbJ1UVCToFEwl6PNIi!*Jp!)}> zIQ_W2+$J^L{nd&Ha15}wTLeQROaD!4{M64sH-@XB@{TCvYH&_aBP@BczTIc5tDhD< z9GlVtKk~n$3oqFxSjZ4Djwf{>2n}E=L(9ME2k9}EDd*pGMx+RW;<1A$RAaiZ4E(=& zml1kOQq--7aT#E7W9 zNA){b?@LcA^9FG{dqC#th?;R`Wap#azP83!A#v~Cwr4M?41Ya=R+1mKN<>#(NixZj z4()H{P4FEYyi1{V@2!m?Pc*GdX2f-lP1iF6yf9RZ-%SC6^{EX+o(l72w>4bS@HS{~ zU#hEfJ6wgzVinJ-$x6Y;mnl*!E+gYLX1COwL5GYQtX6W+T{iK^x#nTyS~OevEh><2 z35+VpE(DGdZNy*y(IEuVWl-?t!swzHx+*jUh8RwT9BY$^ivydm_0;2F+@a~T(eR-k z4K2W-eWN&i7FmKc%3=WQq^*<(I)Gutm3k)teUA4Slav}prIN`sHDvs5q7d%+m9Z>~ zYCGIW$+;G33m(A{u9BVf9eDrUF>CuglZKvRmVl`AsivxBYe^fglrg)18gIa2KtsYq z$oX#%r{osje7+LPa4>(#w}%Ngq+RKR)EF^Dr~A@*1IiyoGUDB(h}byM*hJfl8k&-L zKM;m&`>IG?7dEl30H+;Q(k?Dfv_+V0(`SLCxC`J!Qz9#Iakc8_oknK|j{xXZ{V$&e z4e^QTv$%g)M}I5sgO()%7`Q+rGbJrQ$LJid0WupQ;Gq`(!Fq#NN4EM_6~n5HB6=;i zD0E#VA!XFo{w|nMwcuV(X|v7(OfcHnVcV}&^D%u^L@||vH*ccu4H%ahAXXzhGK86w zks%#{4X=rhBq>1y(WgQ0&*tJ&XL13KZmd=tFug^E$po=pE8X1ss7yEAG&e2XRF1)9 zjz9;AoDbx#+R`%0Hg8bE4-;*g%T*a7W~qfJt&HR*9MQI4K)F&E8H2 z;u90~LypgvD$no*<=ZzP3m@L_#-})_$FyX#2D=_qEMy*4tPN^;-g!bj%Qlx%{qREh zCBcY#Inw{C%;y)sl*0j%CLUsp?;4q{wo#g1KNp<4pt}@r!!r|K8KyK&Q~&;Z=pKTx z9xN0KrDC>)5%fAl-p@yn#2${#veooApo|zN09k*Wd3Fa=vZUi0_&Z3e3{;e5)iZX& z(?45e8DHaU_p`PxYqMu`MgJJL6wcBscOUp7Ga(k^F6V3_?3aMRY#is;Ch(3(ieFud zcZnk06tnWe#VzF5%(lDERNN>qsUAP?wQ^Lrf4HR06t~%8!aLDLns&*~!Z4>EwqB=Q z&3_6>7L2HnTH5j^z=(l8q{(%hRkWd&Lfhw-)IgdJ079YYg8vvoWeEv6Ol5L0r_b(3 znX-X#-RW;jXFkelf))Y{N*sKhYV@EfVKlJw&_xoSJL&Eyi&^aczG&HK^(wkUykTV! zftIkP4n;oOi(PHd@ona&bgwdqrK7gb5W$R~9$xbAD{WFph`amMGS6fh5`LET-b=t% zfZW+L$dTSu=Ew%CATO_^(M+0?!Y^;ONHbmMUEF3eob1IAOz3IJPu9+#@wlo^^Yde+ zbcCKbA29wnV@vTM${=tqgsYJymfziWtn_n=Xn<&piy zS9Pw^`m0~(SyboIdcFitFP+iN&3BC} zI_Z|&xBh*vd{ZZRYQL$eE*7`*0Y@U>A;j9=?v<8Zq4vDBUwKGoVk`^u>BN`JmoRq8 zu3lt4Ka8!Q{|2@K5M4=$nu&y`8(A|sj---qKpY-&BOh}6{HP=Gt=lG01y@=5SpgqG z5)1*h={GI^9GZwLCl@a^kLA;b>=L6$ejZ8ag(3!>8s!SbYQ;1DhL@~>NuiA;_)Kd$%s1!p z9kobDAVamRac}m-8>nE)Io>OQxzK9X&TPycVXHkK`t_KraqP13nLZXXKLWshj}9u+ zs;<&^<~ulMm9pQSwxg{qy&3wKmPaYsMEV(6` znZPVVV;U)8d^(XUx#|u9A_4qdSM6q_lXFBW0YMp+qy%iJoF;yh-=v`hcp(4A4|FrQ zd}eBM>Ql&l$8E+*>#2K$pw`>qZeZNL)ql2Y$xY$Iwnk?T7mWgL@FBYEByg*zxD%pq zy&IpQX~=j05h;eZ%k;_3K)px2aH}?I91Vj$iVSMx<$xdl)iW3lYha{2xm$k7i9tu; zapkPKVE=(qjVhuHqV7VB*=>QRZA8&c!10*K$;1u=T3Q2o-2K&6L%|g-)mC)W`;rgf z={x04tVcsznzO~Qyoq_cxgp9~<{zwD zeqhCE#WBWB+y7@Kh&)GV`ij96xpi`vLW^Qpqc_oFe`GjX%=qL_I@Em~tN!w6wdP9z zn652&^3c43gTF%D!Fz(q06xN3_EQo$2T%38WS-}*LhMEve03MA*z2mrM>cS5gHq%t$%^g5T#w=S4`CSO=0vn=;V#VVSGm{}uA z%Zf8~5*|Fv!a1H_2k`DVIXT&H;3vjNY)wn}02BHN9JQsC3JG}{U=X|Rx$hGKj0`H{ zUotWTiQz4PN}3Jz17>oK3x1Sl{Q3*6FiUXqF&H@{%LasmdSF!vqG-IuB`nKACb{${ zA`CnPIttPn-T;YX0@c>Rq?W@6&H12=>FhMs3M;1ZD4zBPXRr6Cr5It3H06~acgQKC zv=he4;54w-V?0S0eXa(VkAL&c^*NPZL^HKtQ!SD4F5&7mYEJ#g_xe)Qzwm|=)d!Bp zj^iPtOxi8pl15HaRHBg36dP%FAf#&Al+P^t&tvp}6ggJ|VoD|ZG9JA$F5q%69efXv zQm0!XARx%Gudfdlq(%Pyc(d|-@&f%gSdHvEWspyf>R@uAON?Vm%DmI$xx5FdsZZAK08CloL%;zZl#5S^@;an}Z46v<%YJRKP!rN-yb z$*P_a_JwfXb8CSp236C3(1Jr_kNqSaBuc)RySt;X zusqi{He%K2wI524DD#^L?l@pN=uGS^bk>;qK5kl4fB(oyS{tB@zyR+~N}8m3KyW0V%Jb8S#ot{@Ly22zcnSGi_v4ZJ*30%JqsZgs6?Y6}%*f6Tw+kPM zDIlx7iKE-! zuJrOw==-n?ml`4Jp&32Qo)t8yKG$w%72fTigcUJw)WM6sl8$)Yt(V6rxgJu6J3cYd{}CSaAXgC~-TU}ftxv*saA>}zdG)ccVL z*o=W>1s*lqGPK$%UW;T1-VoF)++w8X@P6+&sK3TT9~;?+I*A5w(oMi?0fQNS13r8E z=2d$>qs;uEUPf=A=u2V4U$j3Sh>MEN738S{)&*yFJv~e<5I{N=B{W1};}Z5*u_K4Q zg9hSI#z&Yd=8nTGW0@y&KhDa`1TrsUk;56|k)SxC>j1Je2kgbD~h50V0y0>1ePv=L)7ZuG?zYwa7t)01c-@MfH@GBRXYQ# z)BmKFE`5%y?Kut>e{EUtbZJ|y0#f^fDk%-PC{%E`@e1jta=6O|4~ zpe%1~ee^(;32WXl4ib;+OP15TjsA~$6c_bmUj7b8A@(c%jWQaOtUO`g0$T>AjP@Y^ zN3oR)Q;ixE@P?EJHAZ7Mjtky126MP92Xpj(I+ZW@MmobIX52|}uotgv*{O8P{Hl!M zxNL0vm@@S z++_zUWLF{?|6@rGsgnLi`&Fcwp4ECq16gE*mc)LE5oo;&!!u|K=zB5{P1xT-NYOqZ z>|f^-vMO$w3$-9HFWAY}qe?}Wt~leHR|+wNNfH&!9f7v93(XiIG7c#8VU*jN_+szi z|EMaa2A-?`+v_%2k6W04Lj`KH+t0Ol;70q5+b115U;&o%n_QKYAYptlMV&}~%{T<_ zZRyT5sH$`=cd_pZtm>6C3So1}J8z))h!~tdU3|gOX6vz^;jD!zY8#1j2cxz-^VFtQ z{1bM4FK~Y7lAUDoJ7CW{yQx|^U$s!cJ+^;kNBQYQXEN{UxmAu=R~0kOBCU=o8@aXv z(NTx_$JDn>R%5vs=AtprBp%hV+1OfP&5X$2a(a%IDsm0K0l0D~q9%N=IkJTN(BEcE`+2Qs!E5FVNv;WMx_M8u9z9dir`B)j z=_SR0Y*+MS0@tm-iC4QQPhMg%&igMCVMFdOI;pf2vBiJ!fIzLc8=zE%ixge{+1)3y z_Vc5N-OYvtE(uhy)$!h#6xU}4w?JzKpa%I>7N=(4vuQJX; z76vncAzUi^lKeoXF^CpFjJv^6hGIp=Q|pUg6(Gr0$>0F}Sb) ztiI2#>?p>+q{F$<`0RsMlg~QRsB$#69i>=s_DlmKn@S738F_Njpz@BNfReMnZvzzL zpN12rB{MDJ$bI6fse5Dm8@C~yKWp0YyEUFJ|5&XyG&UA;M%B;QYfSnXt8~#OG(1uw z6I)&*#HY_9K$gE*UfWQ}5XohltqvAuY6WXDm<B14*sRiiWvokT$buB4Fy$Snak-l0nWBDJkl9QFBuk$?P%-d}%O06e!E zOEYX>OW`GBIs-n`|NNOgInhj^ocb5gJ8w3&wEVsO_yP&p^dT|8V*Jmqc6Kt|8!oT# zwTTnGpAtDNhKruT>>z$5>rv`a$G@u@|0@T}=-wEq^PdK;Wvl?!#f1k8^^TSas7{eZ zvZU5w8Nqy&&#EZmJ-hKMx<{%+-9<8zUKCo&0?BL+9X8>#djr8elxKhIE;hF9XIT=u zvR>~#1&uPk-y}NXfC>4m0oqRf9u<6~NUKn=5F_32Ak-r62d8gbZRIPWCO(a#<$$|Z zoB_%d{!A!<|9|eCot;ffl-tb|ND`lOh*=_)nt7{yi<4jo@9d4B5 zuwZgAV;tCuO-dmgdzL+2eJ%ecsP887^iMuTaXS0EG>#jDzu64%C{V3uU|SO9y}DKA zD@AJK*|#XMF?({KzMh(53p4!?_TwknvE(!Ub>ZJ%h5~k$_y(7(^#0q|pvpp@KfFc5 zdPh3Guk4o=NfUAI+D3T&fgB&|Vo-goAEo0y!Z6wl26U=b+WmozwJnVD=Rkmw#UCt7 zW0e3T%Rs2!zt`sgBrNhkXIIzrx-{Cyz>+T_S5Dpc6mw+1-(QZU{b%LdUv9Gd4|!Hh zh4-5T2AWYzP4DF^|7j?LwLbkrio{5V2Ev5ZXWm;P)I>?1m!uvVAlxm26f5_IrS`V0t9p9JzyIHuv@YHTjt3SIxwiH~iDx;s1I$b_KTc89)y3 zFsgAQS$v_ge*%>W!MpN|bYs{P6#-})SWKPl-_4{DLgzEhPH_g>HnFH?OZm!EgDEvh3)VkT-xq}?bh{BgiVfyi*MB&dATg6bOhV;AT6-T4qBFu zVeCY{52pp?Mx=LA@a_|8!$}gjaT8&#?du^i4mj#8NCIG&Th8oCLW0qsIcut_#yAW{ z+ToNP?Q({AL&F(S?rcQFQlSI41N&@izx_VuT)DwFrLp_q?hgXx_vly5j-jYVTYb)> zrRlegtk0MdUBt3~p#Ocs(=oGueaEi; zl70z5$0DW$L+jjoN<8Pv=k{ zynnq!ycWa~H0d#!>@g`mB={@@6#(MAurPdfU(fz`QBQl2!~7aU-YhkP6=5e0V5jA< zrxC3JsgUi_dbD(dE#v`00CW$m=eT6LSuUdzC+1cb6;LvHa^Kr5c+a&y9cZ_cN)&u$ zu#AI4bkcfFs!efdq-ZmZTEY8vFQow0?&a1=2wR=bfx;>vb7~so{a}qV(W6>yh3`S3 zA_R#bY#V|8WqSH}aVnVkA6Lq+xOUlz{_pB3QySLDwzae1{9ba9{o zzg^=@a~#s69P|Qi{ApFY%}?F2X$X}njbR>!Qb@Fpu@QvkG6)p5 z;gzn$^h5IAf0zxqaq~+^pW#1MCIeK=%!#+MHW%3`dfF~MWyC>5%1y*J)1*5g)n8(( z7mLZq2OxEDd0VR$>HmJHEDKhS3$z`9Z<_eb`-D`qa{oi#F_n3O^eE@m2{W$8s3VRm zS-W|VskopD$V}hOVz{=Ct;J8d40rN2{R?91LWqcJsB zP@@9!y+=}bB;qi6Z*U4<4h$LbbN2ae9N z7fgo?vLA5|4d|S`ORQgTQvCJys(0+HEkNRb(gA?6efQ_03jLhuI|9XiUkP`tN~s2h z?9)5}D&`<^hE!bRHi#57OfJQVW!{<{%+z5<*=Z&f3ZG8{5^x_0$%8d07h-@$z;sLr zb|Y{5O}fMO^haz{fwo{SNkh>X)WrlpwVKKQzvXq^5g)e6BBM@d;6&~V)xve3BuSqI z7Z;YW(Jm_&Boj=!OVpDGA`}aHcQG#TfOrI<7@#kVCMhsf`un6?P|_)n$!@qyd4VC6 z$tzOm3#*mi!|l;`&k(l%EfPT3L7Kkty1HQvePVGaC&Wt0fwElxQyMlgT%cO^^b8mT z&G%)bvlAR*hU$;qbiA#5GKhToue|(MasKo4|Ns1DXmRij%e$*x5Q8#S2n75n%BsoK IN|}fKAG`%9SO5S3 literal 0 HcmV?d00001 diff --git a/maixpy/static/search_index/index_0.json b/maixpy/static/search_index/index_0.json index 7beda99..39e6adb 100644 --- a/maixpy/static/search_index/index_0.json +++ b/maixpy/static/search_index/index_0.json @@ -1 +1 @@ -{"/maixpy/api/index.html":{"title":"MaixPy API -- Maix AI machine vision platform Python API","content":" title: MaixPy API Maix AI machine vision platform Python API **You can read API doc at [MaixPy API on Sipeed Wiki](https://wiki.sipeed.com/maixpy/api/index.html)** If you want to preview API doc offline, build MaixPy, and API doc will be generated in `MaixPy/docs/api/` directory. > For MaixPy developer: This API documentation is generated from the source code, DO NOT edit this file manually! MaixPy API documentation, modules: module brief [maix.err](./maix/err.html) maix.err module [maix.tensor](./maix/tensor.html) maix.tensor module [maix.image](./maix/image.html) maix.image module, image related definition and functions [maix.camera](./maix/camera.html) maix.camera module, access camera device and get image from it [maix.display](./maix/display.html) maix.display module, control display device and show image on it [maix.comm](./maix/comm.html) maix.comm module [maix.thread](./maix/thread.html) maix.thread module [maix.fs](./maix/fs.html) maix.fs module [maix.sys](./maix/sys.html) maix.sys module [maix.time](./maix/time.html) maix.time module [maix.i18n](./maix/i18n.html) maix.i18n module [maix.protocol](./maix/protocol.html) maix.protocol module [maix.example](./maix/example.html) example module, this will be maix.example module in MaixPy, maix::example namespace in MaixCDK [maix.app](./maix/app.html) maix.app module [maix.nn](./maix/nn.html) maix.nn module [maix.peripheral](./maix/peripheral.html) Chip's peripheral driver [maix.touchscreen](./maix/touchscreen.html) maix.touchscreen module "},"/maixpy/api/maix/protocol.html":{"title":"maix.protocol","content":" title: maix.protocol maix.protocol module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.protocol` to access this module. ## Module No module ## Enum ### CMD item doc **brief** protocol cmd, more doc see MaixCDK document's convention doc **note** max app custom CMD value should < CMD_APP_MAX **values** **CMD_APP_MAX**: 200, max app custom CMD value should < CMD_APP_MAX
    **CMD_SET_UPLOAD**: set auto upload data mode
    **CMD_APP_LIST**:
    **CMD_START_APP**:
    **CMD_EXIT_APP**:
    **CMD_CUR_APP_INFO**:
    **CMD_APP_INFO**:
    **CMD_KEY**:
    **CMD_TOUCH**:
    **C++ defination code**: ```cpp enum CMD { CMD_APP_MAX 0xC8, // 200, max app custom CMD value should < CMD_APP_MAX CMD_SET_UPLOAD 0xF8, // set auto upload data mode CMD_APP_LIST 0xF9, CMD_START_APP 0xFA, CMD_EXIT_APP 0xFB, CMD_CUR_APP_INFO 0xFC, CMD_APP_INFO 0xFD, CMD_KEY 0xFE, CMD_TOUCH 0xFF, } ``` ### FLAGS item doc **brief** protocol flags, more doc see MaixCDK document's convention doc **values** **FLAG_REQ**:
    **FLAG_RESP**:
    **FLAG_IS_RESP_MASK**:
    **FLAG_RESP_OK**:
    **FLAG_RESP_ERR**:
    **FLAG_RESP_OK_MASK**:
    **FLAG_REPORT**:
    **FLAG_REPORT_MASK**:
    **FLAG_VERSION_MASK**:
    **C++ defination code**: ```cpp enum FLAGS { FLAG_REQ 0x00, FLAG_RESP 0x80, FLAG_IS_RESP_MASK 0x80, FLAG_RESP_OK 0x40, FLAG_RESP_ERR 0x00, FLAG_RESP_OK_MASK 0x40, FLAG_REPORT 0x20, FLAG_REPORT_MASK 0x20, FLAG_VERSION_MASK 0x03 } ``` ## Variable ### VERSION item doc **brief** protocol version **value** **1** **readonly** True **C++ defination code**: ```cpp const uint8_t VERSION 1 ``` ### HEADER item doc **brief** protocol header **value** **0xBBACCAAA** **readonly** True **C++ defination code**: ```cpp const uint32_t HEADER 0xBBACCAAA ``` ## Function ### crc16\\_IBM item doc **brief** CRC16 IBM **param** **data**: data, bytes type.
    **return** CRC16 IBM value, uint16_t type. **C++ defination code**: ```cpp uint16_t crc16_IBM(const Bytes *data) ``` ## Class ### MSG item doc **brief** protocol msg **C++ defination code**: ```cpp class MSG ``` #### version item doc **type** var **brief** protocol version **static** False **readonly** False **C++ defination code**: ```cpp uint8_t version ``` #### resp\\_ok item doc **type** var **brief** Is success response or not, (only for response msg) **static** False **readonly** False **C++ defination code**: ```cpp uint8_t resp_ok ``` #### cmd item doc **type** var **brief** CMD value **static** False **readonly** False **C++ defination code**: ```cpp uint8_t cmd ``` #### is\\_resp item doc **type** var **brief** message is response or not, contrast with is_req **static** False **readonly** False **C++ defination code**: ```cpp bool is_resp ``` #### body\\_len item doc **type** var **brief** Message body length, read only, use set_body() to update **attention** DO NOT manually change this value **static** False **readonly** False **C++ defination code**: ```cpp int body_len ``` #### encode\\_resp\\_ok item doc **type** func **brief** Encode response ok(success) message **param** **body**: response body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_ok(Bytes *body nullptr) ``` #### encode\\_report item doc **type** func **brief** Encode proactively report message **param** **body**: report body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_report(Bytes *body nullptr) ``` #### encode\\_resp\\_err item doc **type** func **brief** Encode response error message **param** **code**: error code
    **msg**: error message
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_err(err::Err code, const std::string &msg) ``` #### set\\_body item doc **type** func **brief** Update message body **param** **body_new**: new body data
    **static** False **C++ defination code**: ```cpp void set_body(Bytes *body_new) ``` #### get\\_body item doc **type** func **brief** Get message body **return** message body, bytes type **static** False **C++ defination code**: ```cpp Bytes *get_body() ``` ### Protocol item doc **brief** Communicate protocol **C++ defination code**: ```cpp class Protocol ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Protocol object **param** **buff_size**: Data queue buffer size
    **static** False **C++ defination code**: ```cpp Protocol(int buff_size 1024) ``` #### buff\\_size item doc **type** func **brief** Data queue buffer size **static** False **C++ defination code**: ```cpp int buff_size() ``` #### push\\_data item doc **type** func **brief** Add data to data queue **param** **new_data**: new data
    **return** error code, maybe err.Err.ERR_BUFF_FULL **static** False **C++ defination code**: ```cpp err::Err push_data(const Bytes *new_data) ``` #### decode item doc **type** func **brief** Decode data in data queue and return a message **param** **new_data**: new data add to data queue, if null, only decode.
    **return** decoded message, if nullptr, means no message decoded. **static** False **C++ defination code**: ```cpp protocol::MSG *decode(const Bytes *new_data nullptr) ``` #### encode\\_resp\\_ok item doc **type** func **brief** Encode response ok(success) message to buffer **param** **cmd**: CMD value
    **body**: response body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_ok(uint8_t cmd, Bytes *body nullptr) ``` #### encode\\_report item doc **type** func **brief** Encode proactively report message to buffer **param** **cmd**: CMD value
    **body**: report body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_report(uint8_t cmd, Bytes *body nullptr) ``` #### encode\\_resp\\_err item doc **type** func **brief** Encode response error message to buffer **param** **cmd**: CMD value
    **code**: error code
    **msg**: error message
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_err(uint8_t cmd, err::Err code, const std::string &msg) ```"},"/maixpy/api/maix/tensor.html":{"title":"maix.tensor","content":" title: maix.tensor maix.tensor module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.tensor` to access this module. ## Module No module ## Enum ### DType item doc **brief** Tensor data types **values** **UINT8**:
    **INT8**:
    **UINT16**:
    **INT16**:
    **UINT32**:
    **INT32**:
    **FLOAT16**:
    **FLOAT32**:
    **FLOAT64**:
    **BOOL**:
    **DTYPE_MAX**:
    **C++ defination code**: ```cpp enum DType { UINT8 0, INT8, UINT16, INT16, UINT32, INT32, FLOAT16, FLOAT32, FLOAT64, BOOL, // STRING, // OBJECT, DTYPE_MAX } ``` ## Variable ### dtype\\_size item doc **brief** Tensor data type size in bytes **attention** It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake. **value** **{
    1, // UINT8
    1, // INT8
    2, // UINT16
    2, // INT16
    4, // UINT32
    4, // INT32
    2, // FLOAT16
    4, // FLOAT32
    8, // FLOAT64
    1, // BOOL
    // 1, // STRING
    // 1, // OBJECT
    0
    }** **readonly** True **C++ defination code**: ```cpp const std::vector dtype_size { 1, // UINT8 1, // INT8 2, // UINT16 2, // INT16 4, // UINT32 4, // INT32 2, // FLOAT16 4, // FLOAT32 8, // FLOAT64 1, // BOOL // 1, // STRING // 1, // OBJECT 0 } ``` ### dtype\\_name item doc **brief** Tensor data type name **value** **{
    \"uint8\",
    \"int8\",
    \"uint16\",
    \"int16\",
    \"uint32\",
    \"int32\",
    \"float16\",
    \"float32\",
    \"float64\",
    \"bool\",
    // \"string\",
    // \"object\",
    \"invalid\"
    }** **readonly** True **C++ defination code**: ```cpp const std::vector dtype_name { \"uint8\", \"int8\", \"uint16\", \"int16\", \"uint32\", \"int32\", \"float16\", \"float32\", \"float64\", \"bool\", // \"string\", // \"object\", \"invalid\" } ``` ## Function ## Class ### Tensor item doc **brief** Tensor class **C++ defination code**: ```cpp class Tensor ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Tensor constructor **param** **shape**: tensor shape, a int list
    **dtype**: tensor element data type, see DType of this module
    **data**: pointer to data content, can be nullptr, it will automatically alloc memory
    and detroy it when this object is destroyed
    **static** False **C++ defination code**: ```cpp Tensor(std::vector shape, tensor::DType dtype, void *data nullptr) ``` #### to\\_str item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string __str__() ``` #### shape item doc **type** func **brief** get tensor shape **return** tensor shape, a int list **static** False **C++ defination code**: ```cpp std::vector shape() ``` #### expand\\_dims item doc **type** func **brief** expand tensor shape **param** **axis**: axis to expand
    **static** False **C++ defination code**: ```cpp void expand_dims(int axis) ``` #### reshape item doc **type** func **brief** reshape tensor shape, if size not match, it will throw an err::Exception **param** **shape**: new shape
    **static** False **C++ defination code**: ```cpp void reshape(std::vector shape) ``` #### flatten item doc **type** func **brief** Flatten tensor shape to 1D **static** False **C++ defination code**: ```cpp void flatten() ``` #### dtype item doc **type** func **brief** get tensor data type **return** tensor data type, see DType of this module **static** False **C++ defination code**: ```cpp tensor::DType dtype() ``` #### argmax item doc **type** func **brief** argmax of tensor **param** **axis**: By default, the index is into the flattened array, otherwise along the specified axis., wrong axis will throw an err::Exception
    **return** argmax result, you need to delete it after use in C++. **static** False **C++ defination code**: ```cpp tensor::Tensor *argmax(int axis 0xffff) ``` #### argmax1 item doc **type** func **brief** argmax1, flattened data max index **return** argmax result, int type **static** False **C++ defination code**: ```cpp int argmax1() ``` ### Tensors item doc **brief** Tensors **C++ defination code**: ```cpp class Tensors ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor of Tensors **static** False **C++ defination code**: ```cpp Tensors() ``` #### add\\_tensor item doc **type** func **brief** Add tensor **static** False **C++ defination code**: ```cpp void add_tensor(const std::string &key, tensor::Tensor *tensor, bool copy, bool auto_delete) ``` #### rm\\_tensor item doc **type** func **brief** Remove tensor **static** False **C++ defination code**: ```cpp void rm_tensor(const std::string &key) ``` #### get\\_tensor item doc **type** func **brief** Get tensor by key **static** False **C++ defination code**: ```cpp tensor::Tensor *get_tensor(const std::string &key) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Operator [] **static** False **C++ defination code**: ```cpp tensor::Tensor *operator[](const std::string &key) ``` #### \\_\\_len\\_\\_ item doc **type** func **brief** Size **static** False **C++ defination code**: ```cpp size_t size() ``` #### get\\_names item doc **type** func **brief** Get names **static** False **C++ defination code**: ```cpp std::vector get_names() ``` #### tensors item doc **type** var **brief** Tensors data, dict type **static** False **readonly** False **C++ defination code**: ```cpp std::map tensors ```"},"/maixpy/api/maix/nn/F.html":{"title":"maix.nn.F","content":" title: maix.nn.F maix.nn.F module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.nn.F` to access this module. ## Module No module ## Enum ## Variable ## Function ### softmax item doc **brief** Softmax, only support 1D tensor, multi dimension tensor will be treated as 1D tensor **param** **tensor**: input tensor
    **replace**: change input tensor data directly, if not, will create a new tensor
    **throw** If arg error, will raise err.Exception error **return** output tensor, if arg replace is true, return the arg tensor's address.
    If not replace, return a new object, so In C++, you should delete it manually in this case! **C++ defination code**: ```cpp tensor::Tensor *softmax(tensor::Tensor *tensor, bool replace) ``` ## Class"},"/maixpy/api/maix/peripheral.html":{"title":"maix.peripheral","content":" title: maix.peripheral Chip's peripheral driver > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral` to access this module. ## Module module brief [timer](./peripheral/timer.html) maix.peripheral.timer module [wdt](./peripheral/wdt.html) maix.peripheral.wdt module [pwm](./peripheral/pwm.html) maix.peripheral.pwm module [gpio](./peripheral/gpio.html) maix.peripheral.gpio module [spi](./peripheral/spi.html) maix.peripheral.spi module [uart](./peripheral/uart.html) maix uart peripheral driver [key](./peripheral/key.html) maix.peripheral.key module [i2c](./peripheral/i2c.html) maix.peripheral.i2c module [adc](./peripheral/adc.html) maix.peripheral.adc module ## Enum ## Variable ## Function ## Class"},"/maixpy/api/maix/app.html":{"title":"maix.app","content":" title: maix.app maix.app module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.app` to access this module. ## Module No module ## Enum ## Variable ## Function ### app\\_id item doc **brief** Get current APP ID. **return** APP ID. **C++ defination code**: ```cpp string app_id() ``` ### set\\_app\\_id item doc **brief** Set current APP ID. **param** **app_id**: APP ID.
    **C++ defination code**: ```cpp string set_app_id(const string &app_id) ``` ### get\\_apps\\_info\\_path item doc **brief** Get APP info file path. **C++ defination code**: ```cpp string get_apps_info_path() ``` ### get\\_apps\\_info item doc **brief** Get APP info list. **param** **ignore_launcher**: if true, ignore launcher APP. default false.
    **ignore_app_store**: if true, ignore app store APP. default false.
    **return** APP info list. APP_Info object list. **C++ defination code**: ```cpp vector &get_apps_info(bool ignore_launcher false, bool ignore_app_store false) ``` ### get\\_app\\_data\\_path item doc **brief** Get APP info, APP can store private data in this directory. **return** APP data path \"./data\", just return the data folder in current path because APP executed in app install path or project path.
    So, you must execute your program in you project path to use the project/data folder when you debug your APP. **C++ defination code**: ```cpp string get_app_data_path() ``` ### get\\_app\\_path item doc **brief** Get APP path. **param** **app_id**: APP ID, if empty, return current APP path, else return the APP path by app_id.
    **return** APP path, just return the current path because APP executed in app install path or project path.
    So, you must execute your program in you project path to use the project/data folder when you debug your APP. **C++ defination code**: ```cpp string get_app_path(const string &app_id \"\") ``` ### get\\_tmp\\_path item doc **brief** Get global temporary data path, APPs can use this path as temporary data directory. **return** temporary data path. **C++ defination code**: ```cpp string get_tmp_path() ``` ### get\\_share\\_path item doc **brief** Get data path of share, shared data like picture and video will put in this directory **return** share data path. **C++ defination code**: ```cpp string get_share_path() ``` ### get\\_picture\\_path item doc **brief** Get picture path of share, shared picture will put in this directory **return** share picture path. **C++ defination code**: ```cpp string get_picture_path() ``` ### get\\_video\\_path item doc **brief** Get video path of share, shared video will put in this directory **return** share video path. **C++ defination code**: ```cpp string get_video_path() ``` ### get\\_font\\_path item doc **brief** Get font path of share, shared font will put in this directory **return** share font path. **C++ defination code**: ```cpp string get_font_path() ``` ### get\\_icon\\_path item doc **brief** Get icon path of share, shared icon will put in this directory **return** share icon path. **C++ defination code**: ```cpp string get_icon_path() ``` ### get\\_sys\\_config\\_kv item doc **brief** Get system config item value. **param** **item**: name of setting item, e.g. wifi, language. more see settings APP.
    **key**: config key, e.g. for wifi, key can be ssid, for language, key can be locale.
    **value**: default value, if not found, return this value.
    **from_cache**: if true, read from cache, if false, read from file.
    **return** config value, always string type, if not found, return empty string. **C++ defination code**: ```cpp string get_sys_config_kv(const string &item, const string &key, const string &value \"\", bool from_cache true) ``` ### get\\_app\\_config\\_kv item doc **brief** Get APP config item value. **param** **item**: name of setting item, e.g. user_info
    **key**: config key, e.g. for user_info, key can be name, age etc.
    **value**: default value, if not found, return this value.
    **from_cache**: if true, read from cache, if false, read from file.
    **return** config value, always string type, if not found, return empty string. **C++ defination code**: ```cpp string get_app_config_kv(const string &item, const string &key, const string &value \"\", bool from_cache true) ``` ### set\\_app\\_config\\_kv item doc **brief** Set APP config item value. **param** **item**: name of setting item, e.g. user_info
    **key**: config key, e.g. for user_info, key can be name, age etc.
    **value**: config value, always string type.
    **write_file**: if true, write to file, if false, just write to cache.
    **return** err::Err **C++ defination code**: ```cpp err::Err set_app_config_kv(const string &item, const string &key, const string &value, bool write_file true) ``` ### get\\_app\\_config\\_path item doc **brief** Get APP config path, ini format, so you can use your own ini parser to parse it like `configparser` in Python.\\nAll APP config info is recommended to store in this file. **return** APP config path(ini format). **C++ defination code**: ```cpp string get_app_config_path() ``` ### set\\_exit\\_msg item doc **brief** Set APP exit code and exit message.\\nIf code ! 0, the launcher will show a dialog to user, and display the msg. **param** **code**: exit code, 0 means success, other means error, if code is 0, do nothing.
    **msg**: exit message, if code is 0, msg is not used.
    **return** exit code, the same as arg @code. **C++ defination code**: ```cpp err::Err set_exit_msg(err::Err code, const string &msg) ``` ### get\\_exit\\_msg item doc **brief** Get APP exit code and exit message. **param** **cache**: if true, read from cache, if false, read from file. default false.
    **return** exit return app_id, exit code and exit message. **C++ defination code**: ```cpp tuple get_exit_msg(bool cache false) ``` ### have\\_exit\\_msg item doc **brief** Check if have exit msg **param** **cache**: if true, just check from cache, if false, check from file. default false.
    **return** true if have exit msg, false if not. **C++ defination code**: ```cpp bool have_exit_msg(bool cache false) ``` ### switch\\_app item doc **brief** Exit this APP and start another APP(by launcher).\\nCall this API will call set_exit_flag(true), you should check app::need_exit() in your code.\\nAnd exit this APP if app::need_exit() return true. **param** **app_id**: APP ID which will be started. app_id and idx must have one is valid.
    **idx**: APP index. app_id and idx must have one is valid.
    **C++ defination code**: ```cpp void switch_app(const string &app_id, int idx 1) ``` ### need\\_exit item doc **brief** Shoule this APP exit? **return** true if this APP should exit, false if not. **attention** This API is a function, not a variable. **C++ defination code**: ```cpp bool need_exit() ``` ### running item doc **brief** App should running? The same as !app::need_exit() (not app::need_exit() in MaixPy). **return** true if this APP should running, false if not. **attention** This API is a function, not a variable. **C++ defination code**: ```cpp bool running() ``` ### set\\_exit\\_flag item doc **brief** Set exit flag. You can get exit flag by app.need_exit(). **param** **exit**: true if this APP should exit, false if not.
    **C++ defination code**: ```cpp void set_exit_flag(bool exit) ``` ## Class ### Version item doc **brief** APP version **C++ defination code**: ```cpp class Version ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** Convert to string, e.g. 1.0.0 **static** False **C++ defination code**: ```cpp std::string __str__() ``` #### from\\_str item doc **type** func **brief** Convert from string, e.g. \\\"1.0.0\\\" **static** True **C++ defination code**: ```cpp static app::Version from_str(const string &version_str) ``` ### APP\\_Info item doc **brief** APP info **C++ defination code**: ```cpp class APP_Info ``` #### id item doc **type** var **brief** APP id **static** False **readonly** False **C++ defination code**: ```cpp string id ``` #### name item doc **type** var **brief** APP name **static** False **readonly** False **C++ defination code**: ```cpp string name ``` #### icon item doc **type** var **brief** APP icon **static** False **readonly** False **C++ defination code**: ```cpp string icon ``` #### version item doc **type** var **brief** APP version **static** False **readonly** False **C++ defination code**: ```cpp Version version ``` #### exec item doc **type** var **brief** APP exec **static** False **readonly** False **C++ defination code**: ```cpp string exec ``` #### author item doc **type** var **brief** APP author **static** False **readonly** False **C++ defination code**: ```cpp string author ``` #### desc item doc **type** var **brief** APP desc **static** False **readonly** False **C++ defination code**: ```cpp string desc ``` #### names item doc **type** var **brief** APP names **static** False **readonly** False **C++ defination code**: ```cpp map names ``` #### descs item doc **type** var **brief** APP descs **static** False **readonly** False **C++ defination code**: ```cpp map descs ```"},"/maixpy/api/maix/i18n.html":{"title":"maix.i18n","content":" title: maix.i18n maix.i18n module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.i18n` to access this module. ## Module No module ## Enum ## Variable ### locales item doc **brief** i18n locales list **value** **{
    \"en\",
    \"zh\",
    \"zh tw\",
    \"ja\"
    }** **readonly** False **C++ defination code**: ```cpp static std::vector locales { \"en\", \"zh\", \"zh tw\", \"ja\" } ``` ### names item doc **brief** i18n language names list **value** **{
    \"English\",
    \"简体中文\",
    \"繁體中文\",
    \"日本語\"
    }** **readonly** True **C++ defination code**: ```cpp const static std::vector names { \"English\", \"简体中文\", \"繁體中文\", \"日本語\" } ``` ## Function ### get\\_locale item doc **brief** Get system config of locale. **return** language locale, e.g. en, zh, zh_CN, zh_TW, etc. **C++ defination code**: ```cpp string get_locale() ``` ### get\\_language\\_name item doc **brief** Get system config of language name. **return** language name, e.g. English, 简体中文, 繁體中文, etc. **C++ defination code**: ```cpp string get_language_name() ``` ## Class ### Trans item doc **brief** Translate helper class. **C++ defination code**: ```cpp class Trans ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Translate helper class constructor.\\nBy default locale is get by `i18n.get_locale()` function which set by system settings.\\nBut you can also manually set by `set_locale` function temporarily. **param** **locales_dict**: locales dict, e.g. {\"zh\": {\"Confirm\": \"确认\", \"OK\": \"好的\"}, \"en\": {\"Confirm\": \"Confirm\", \"OK\": \"OK\"}}
    **static** False **C++ defination code**: ```cpp Trans(const std::map> &locales_dict) ``` #### tr item doc **type** func **brief** Translate string by key. **param** **key**: string key, e.g. \"Confirm\"
    **locale**: locale name, if not assign, use default locale set by system settings or set_locale function.
    **return** translated string, if find translation, return it, or return key, e.g. \"确认\", \"Confirm\", etc. **static** False **C++ defination code**: ```cpp string tr(const string &key, const string locale \"\") ``` #### set\\_locale item doc **type** func **brief** Set locale temporarily, will not affect system settings. **param** **locale**: locale name, e.g. \"zh\", \"en\", etc. @see maix.i18n.locales
    **static** False **C++ defination code**: ```cpp void set_locale(const string &locale) ``` #### get\\_locale item doc **type** func **brief** Get current locale. **return** locale name, e.g. \"zh\", \"en\", etc. @see maix.i18n.locales **static** False **C++ defination code**: ```cpp string get_locale() ```"},"/maixpy/api/maix/example.html":{"title":"maix.example","content":" title: maix.example example module, this will be maix.example module in MaixPy, maix::example namespace in MaixCDK > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.example` to access this module. ## Module No module ## Enum ### Kind item doc **brief** Example enum **values** **KIND_NONE**: Kind none, value always 0, other enum value will auto increase
    **KIND_DOG**: Kind dog
    **KIND_CAT**: Kind cat, value is auto generated according to KING_DOG
    **KIND_BIRD**:
    **KIND_MAX**: Max Kind quantity
    You can get max Kind value by KIND_MAX 1
    **C++ defination code**: ```cpp enum Kind { KIND_NONE 0, /** Kind none, value always 0, other enum value will auto increase */ KIND_DOG, /** Kind dog*/ KIND_CAT, // Kind cat, value is auto generated according to KING_DOG KIND_BIRD, KIND_MAX /* Max Kind quantity, You can get max Kind value by KIND_MAX 1 */ } ``` ## Variable ### var1 item doc **brief** Example module variable **attention** It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake. **value** **\"Sipeed\"** **readonly** True **C++ defination code**: ```cpp const std::string var1 \"Sipeed\" ``` ### list\\_var item doc **brief** Tensor data type size in bytes **attention** **1**. DO NOT use C/C++ array directly for python API, the python wrapper not support it.
    Use std::vector instead.
    **2**. It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake.
    **value** **{
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9}** **readonly** True **C++ defination code**: ```cpp const std::vector list_var { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} ``` ### test\\_var item doc **brief** Example module variable test_var **attention** It's a copy of this variable in MaixPy, so if you change it in C++, it will not take effect in MaixPy.
    And change it in MaixPy will not take effect in C++ as well !!!
    If you want to use vars shared between C++ and MaixPy, you can create a class and use its member. **value** **100** **readonly** False **C++ defination code**: ```cpp int test_var 100 ``` ## Function ### hello item doc **brief** say hello to someone **param** **name**: direction [in], name of someone, string type
    **return** string type, content is hello + name **C++ defination code**: ```cpp std::string hello(std::string name) ``` ### change\\_arg\\_name item doc **brief** Change arg name example **param** **e**: Example object
    **return** same as arg **C++ defination code**: ```cpp example::Example *change_arg_name(example::Example *e) ``` ### change\\_arg\\_name2 item doc **brief** Change arg name example **param** **e**: Example object
    **C++ defination code**: ```cpp void change_arg_name2(example::Example &e) ``` ## Class ### Test item doc **brief** Test class **C++ defination code**: ```cpp class Test ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Test constructor **static** False **C++ defination code**: ```cpp Test() ``` ### Example item doc **brief** Example class\\nthis class will be export to MaixPy as maix.example.Example **C++ defination code**: ```cpp class Example ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Example constructor\\nthis constructor will be export to MaixPy as maix.example.Example.__init__ **param** **name**: direction [in], name of Example, string type
    **age**: direction [in], age of Example, int type, default is 18, value range is [0, 100]
    **attention** to make auto generate code work, param Kind should with full namespace name `example::Kind` instead of `Kind`,
    namespace `maix` can be ignored. **static** False **C++ defination code**: ```cpp Example(std::string &name, int age 18, example::Kind pet example::KIND_NONE) ``` #### get\\_name item doc **type** func **brief** get name of Example\\nyou can also get name by property `name`. **return** name of Example, string type **static** False **C++ defination code**: ```cpp std::string get_name() ``` #### get\\_age item doc **type** func **brief** get age of Example **return** age of Example, int type, value range is [0, 100] **static** False **C++ defination code**: ```cpp int get_age() ``` #### set\\_name item doc **type** func **brief** set name of Example **param** **name**: name of Example, string type
    **static** False **C++ defination code**: ```cpp void set_name(std::string name) ``` #### set\\_age item doc **type** func **brief** set age of Example **param** **age**: age of Example, int type, value range is [0, 100]
    **static** False **C++ defination code**: ```cpp void set_age(int age) ``` #### set\\_pet item doc **type** func **brief** Example enum member **attention** **static** False **C++ defination code**: ```cpp void set_pet(example::Kind pet) ``` #### get\\_pet item doc **type** func **brief** Example enum member **static** False **C++ defination code**: ```cpp example::Kind get_pet() ``` #### get\\_list item doc **type** func **brief** get list example **param** **in**: direction [in], input list, items are int type.
    In MaixPy, you can pass list or tuple to this API
    **return** list, items are int type, content is [1, 2, 3] + in. Alloc item, del in MaixPy will auto free memory. **static** False **C++ defination code**: ```cpp std::vector *get_list(std::vector in) ``` #### get\\_dict item doc **type** func **brief** Example dict API **param** **in**: direction [in], input dict, key is string type, value is int type.
    In MaixPy, you can pass `dict` to this API
    **return** dict, key is string type, value is int type, content is {\"a\": 1} + in
    In MaixPy, return type is `dict` object **static** False **C++ defination code**: ```cpp std::map get_dict(std::map &in) ``` #### hello item doc **type** func **brief** say hello to someone **param** **name**: name of someone, string type
    **return** string type, content is Example::hello_str + name **static** True **C++ defination code**: ```cpp static std::string hello(std::string name) ``` #### hello\\_bytes item doc **type** func **brief** param is bytes example **param** **bytes**: bytes type param
    **return** bytes type, return value is bytes changed value **static** True **C++ defination code**: ```cpp static Bytes *hello_bytes(Bytes &bytes) ``` #### callback item doc **type** func **brief** Callback example **param** **cb**: callback function, param is two int type, return is int type
    **return** int type, return value is cb(1, 2) **static** True **C++ defination code**: ```cpp static int callback(std::function cb) ``` #### hello\\_dict item doc **type** func **brief** Dict param example **param** **dict**: dict type param, key is string type, value is int type
    **static** True **C++ defination code**: ```cpp static std::map *hello_dict(std::map *dict) ``` #### name item doc **type** var **brief** name member of Example **static** False **readonly** False **C++ defination code**: ```cpp std::string name ``` #### age item doc **type** var **brief** age member of Example, value range should be [0, 100] **static** False **readonly** False **C++ defination code**: ```cpp int age ``` #### hello\\_str item doc **type** var **brief** hello_str member of Example, default value is \\\"hello \\\" **static** True **readonly** False **C++ defination code**: ```cpp static std::string hello_str ``` #### var1 item doc **type** var **brief** Example module readonly variable **static** False **readonly** True **C++ defination code**: ```cpp const std::string var1 \"Example.var1\" ``` #### var2 item doc **type** var **brief** Example module readonly variable **static** False **readonly** True **C++ defination code**: ```cpp std::string var2 \"Example.var2\" ``` #### dict\\_test item doc **type** func **brief** dict_test, return dict type, and element is pointer type(alloc in C++).\\nHere when the returned Tensor object will auto delete by Python GC. **static** True **C++ defination code**: ```cpp static std::map *dict_test() ```"},"/maixpy/api/maix/thread.html":{"title":"maix.thread","content":" title: maix.thread maix.thread module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.thread` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### Thread item doc **brief** thread class **C++ defination code**: ```cpp class Thread ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** create thread **param** **func**: direction [in], thread function, one `args` parameter, void* type, no return value
    **args**: direction [in], thread function parameter
    **static** False **C++ defination code**: ```cpp Thread(std::function func, void *args nullptr) ``` #### join item doc **type** func **brief** wait thread exit **static** False **C++ defination code**: ```cpp void join() ``` #### detach item doc **type** func **brief** detach thread **static** False **C++ defination code**: ```cpp void detach() ``` #### joinable item doc **type** func **brief** Check if thread is joinable **return** true if thread is joinable **static** False **C++ defination code**: ```cpp bool joinable() ```"},"/maixpy/api/maix/err.html":{"title":"maix.err","content":" title: maix.err maix.err module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.err` to access this module. ## Module No module ## Enum ### Err item doc **brief** Maix Error code **values** **ERR_NONE**: No error
    **ERR_ARGS**: Invalid arguments
    **ERR_NO_MEM**: No memory
    **ERR_NOT_IMPL**: Not implemented
    **ERR_NOT_READY**: Not ready
    **ERR_NOT_INIT**: Not initialized
    **ERR_NOT_OPEN**: Not opened
    **ERR_NOT_PERMIT**: Not permitted
    **ERR_REOPEN**: Re open
    **ERR_BUSY**: Busy
    **ERR_READ**: Read error
    **ERR_WRITE**: Write error
    **ERR_TIMEOUT**: Timeout
    **ERR_RUNTIME**: Runtime error
    **ERR_IO**: IO error
    **ERR_NOT_FOUND**: Not found
    **ERR_ALREAY_EXIST**: Already exist
    **ERR_BUFF_FULL**: Buffer full
    **ERR_BUFF_EMPTY**: Buffer empty
    **ERR_CANCEL**: Cancel
    **ERR_OVERFLOW**: Overflow
    **ERR_MAX**:
    **C++ defination code**: ```cpp enum Err { // !!! fixed error code, DO NOT change number already defined, only append new error code ERR_NONE 0, // No error ERR_ARGS , // Invalid arguments ERR_NO_MEM , // No memory ERR_NOT_IMPL , // Not implemented ERR_NOT_READY , // Not ready ERR_NOT_INIT , // Not initialized ERR_NOT_OPEN , // Not opened ERR_NOT_PERMIT , // Not permitted ERR_REOPEN , // Re open ERR_BUSY , // Busy ERR_READ , // Read error ERR_WRITE , // Write error ERR_TIMEOUT , // Timeout ERR_RUNTIME , // Runtime error ERR_IO , // IO error ERR_NOT_FOUND , // Not found ERR_ALREAY_EXIST , // Already exist ERR_BUFF_FULL , // Buffer full ERR_BUFF_EMPTY , // Buffer empty ERR_CANCEL , // Cancel ERR_OVERFLOW , // Overflow ERR_MAX, } ``` ## Variable ## Function ### to\\_str item doc **brief** Error code to string **param** **e**: direction [in], error code, err::Err type
    **return** error string **C++ defination code**: ```cpp std::string to_str(err::Err e) ``` ### get\\_error item doc **brief** get last error string **return** error string **C++ defination code**: ```cpp std::string& get_error() ``` ### set\\_error item doc **brief** set last error string **param** **str**: direction [in], error string
    **C++ defination code**: ```cpp void set_error(const std::string &str) ``` ### check\\_raise item doc **brief** Check error code, if not ERR_NONE, raise err.Exception **param** **e**: direction [in], error code, err::Err type
    **msg**: direction [in], error message
    **C++ defination code**: ```cpp void check_raise(err::Err e, const std::string &msg \"\") ``` ### check\\_bool\\_raise item doc **brief** Check condition, if false, raise err.Exception **param** **ok**: direction [in], condition, if true, do nothing, if false, raise err.Exception
    **msg**: direction [in], error message
    **C++ defination code**: ```cpp void check_bool_raise(bool ok, const std::string &msg \"\") ``` ### check\\_null\\_raise item doc **brief** Check NULL pointer, if NULL, raise exception **param** **ptr**: direction [in], pointer
    **msg**: direction [in], error message
    **C++ defination code**: ```cpp void check_null_raise(void *ptr, const std::string &msg \"\") ``` ## Class ### Exception item doc **brief** Maix Exception **C++ defination code**: ```cpp class Exception : public std::exception ```"},"/maixpy/api/maix/touchscreen.html":{"title":"maix.touchscreen","content":" title: maix.touchscreen maix.touchscreen module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.touchscreen` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### TouchScreen item doc **brief** TouchScreen class **C++ defination code**: ```cpp class TouchScreen ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new TouchScreen object **param** **device**: touchscreen device path, you can get devices by list_devices method, by default(value is NULL(None in MaixPy)) means the first device
    **open**: If true, touchscreen will automatically call open() after creation. default is true.
    **static** False **C++ defination code**: ```cpp TouchScreen(const std::string &device \"\", bool open true) ``` #### open item doc **type** func **brief** open touchscreen device **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err open() ``` #### close item doc **type** func **brief** close touchscreen device **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err close() ``` #### read item doc **type** func **brief** read touchscreen device **attention** This method will discard same event in buffer, that is:
    if too many move event in buffer when call this method, it will only return the last one,
    and if read pressed or released event, it will return immediately. **return** Returns a list include x, y, pressed state **static** False **C++ defination code**: ```cpp std::vector read() ``` #### read (overload 1) item doc **type** func **brief** read touchscreen device **attention** This method will return immediately if have event, so it's better to use available() to check if have more event in buffer,
    or too much event in buffer when your program call this read() interval is too long will make your program slow. **return** Returns a list include x, y, pressed state **static** False **C++ defination code**: ```cpp std::vector read0() ``` #### available item doc **type** func **brief** If we need to read from touchscreen, for event driven touchscreen means have event or not **param** **timeout**: 1 means block, 0 means no block, >0 means timeout, default is 0, unit is ms.
    **return** true if need to read(have event), false if not **static** False **C++ defination code**: ```cpp bool available(int timeout 0) ``` #### is\\_opened item doc **type** func **brief** Check if touchscreen is opened **return** true if touchscreen is opened, false if not **static** False **C++ defination code**: ```cpp bool is_opened() ```"},"/maixpy/api/maix/peripheral/wdt.html":{"title":"maix.peripheral.wdt","content":" title: maix.peripheral.wdt maix.peripheral.wdt module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.wdt` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### WDT item doc **brief** Peripheral wdt class **C++ defination code**: ```cpp class WDT ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** WDT constructor **param** **id**: direction [in], id of wdt, int type
    **feed_ms**: direction [in], feed ms of wdt, int type
    **static** False **C++ defination code**: ```cpp WDT(int id, int feed_ms) ``` #### feed item doc **type** func **brief** feed wdt **return** error code, if feed success, return err::ERR_NONE **static** False **C++ defination code**: ```cpp int feed() ``` #### stop item doc **type** func **brief** stop wdt **static** False **C++ defination code**: ```cpp int stop() ``` #### restart item doc **type** func **brief** restart wdt **attention** restart WDT after stop it **static** False **C++ defination code**: ```cpp int restart() ```"},"/maixpy/api/maix/peripheral/spi.html":{"title":"maix.peripheral.spi","content":" title: maix.peripheral.spi maix.peripheral.spi module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.spi` to access this module. ## Module No module ## Enum ## Variable ### MASTER\\_MODE item doc **brief** spi master mode **value** **0x1** **readonly** True **C++ defination code**: ```cpp const int MASTER_MODE 0x1 ``` ### SLAVE\\_MODE item doc **brief** spi slave mode **value** **0x2** **readonly** True **C++ defination code**: ```cpp const int SLAVE_MODE 0x2 ``` ### CLOCK\\_MODE\\_0 item doc **brief** clock mode 0 **attention** CPOL 0, CPHA 0
    means the idle level of the clock is low, data is captured on the first edge of the SPI clock cycle **value** **0x0** **readonly** True **C++ defination code**: ```cpp const int CLOCK_MODE_0 0x0 ``` ### CLOCK\\_MODE\\_1 item doc **brief** clock mode 1 **attention** CPOL 0, CPHA 1
    means the idle level of the clock is low, data is captured on the second edge of the SPI clock cycle **value** **0x1** **readonly** True **C++ defination code**: ```cpp const int CLOCK_MODE_1 0x1 ``` ### CLOCK\\_MODE\\_2 item doc **brief** clock mode 2 **attention** CPOL 1, CPHA 0
    means the idle level of the clock is high, data is captured on the first edge of the SPI clock cycle **value** **0x2** **readonly** True **C++ defination code**: ```cpp const int CLOCK_MODE_2 0x2 ``` ### CLOCK\\_MODE\\_3 item doc **brief** clock mode 3 **attention** CPOL 1, CPHA 1
    means the idle level of the clock is high, data is captured on the second edge of the SPI clock cycle **value** **0x3** **readonly** True **C++ defination code**: ```cpp const int CLOCK_MODE_3 0x3 ``` ## Function ## Class ### SPI item doc **brief** Peripheral spi class **C++ defination code**: ```cpp class SPI ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** SPI constructor **param** **id**: direction [in], id of spi, int type
    **sclk**: direction [in], sclk pin of spi, int type
    **mosi**: direction [in], mosi pin of spi, int type
    **miso**: direction [in], miso pin of spi, int type
    **cs**: direction [in], cs pin of spi, int type
    **freq**: direction [in], freq of spi, int type
    **use_soft_cs**: direction [in], use_soft_cs of spi, int type
    this param is valid in master mode, when use_soft_cs 1, the
    cs pin must be operated manually when sending data. default is 1, means use hardware cs
    **mode**: direction [in], mode of spi, int type
    option:
    mode spi.MASTER, means use master mode
    mode spi.SLAVE, means use slave mode
    defualt is 1, means use spi.MASTER mode
    **clock_mode**: direction [in], clock_mode of spi, int type,default is 1
    option:
    clock_mode spi.CLOCK_MODE_0, @see CLOCK_MODE_0
    clock_mode spi.CLOCK_MODE_1, @see CLOCK_MODE_1
    clock_mode spi.CLOCK_MODE_2, @see CLOCK_MODE_2
    clock_mode spi.CLOCK_MODE_3, @see CLOCK_MODE_3
    default is 1, means use CLOCK_MODE_0
    **static** False **C++ defination code**: ```cpp SPI(int id, int sclk, int mosi, int miso, int cs, int freq, int use_soft_cs 1, int mode 1, int clock_mode 1) ``` #### cs\\_high item doc **type** func **brief** set cs pin to high level **static** False **C++ defination code**: ```cpp int cs_high() ``` #### cs\\_low item doc **type** func **brief** set cs pin to low level **static** False **C++ defination code**: ```cpp int cs_low() ``` #### read item doc **type** func **brief** read data from spi **param** **read_len**: direction [in], read length, int type
    **return** read data, vector type **static** False **C++ defination code**: ```cpp std::vector read(int read_len) ``` #### write item doc **type** func **brief** write data to spi **param** **write_data**: direction [in], write data, vector type
    the member range of the list is [0,255]
    **return** error code, if write success, return err::ERR_NONE **static** False **C++ defination code**: ```cpp int write(std::vector write_data std::vector{}) ``` #### read\\_write item doc **type** func **brief** set spi status to high level or low level **param** **write_data**: direction [in], write data, vector type
    the member range of the list is [0,255]
    **read_len**: direction [in], read length, int type
    default is 1, means read_len write_data.size()
    **return** read data, vector type **static** False **C++ defination code**: ```cpp std::vector read_write( std::vector write_data std::vector{}, int read_len 1) ``` #### is\\_busy item doc **type** func **brief** get busy status of spi **return** busy status, bool type **static** False **C++ defination code**: ```cpp bool is_busy() ```"},"/maixpy/api/maix/comm.html":{"title":"maix.comm","content":" title: maix.comm maix.comm module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.comm` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### CommProtocol item doc **brief** Class for communication protocol **C++ defination code**: ```cpp class CommProtocol ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new CommProtocol object **param** **buff_size**: buffer size, default to 1024 bytes
    **static** False **C++ defination code**: ```cpp CommProtocol(int buff_size 1024) ``` #### get\\_msg item doc **type** func **brief** Read data to buffer, and try to decode it as maix.protocol.MSG object **return** decoded data, if nullptr, means no valid frame found.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp protocol::MSG *get_msg() ``` #### resp\\_ok item doc **type** func **brief** Send response ok(success) message **param** **cmd**: CMD value
    **body**: response body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp err::Err resp_ok(uint8_t cmd, Bytes *body nullptr) ``` #### report item doc **type** func **brief** Send report message **param** **cmd**: CMD value
    **body**: report body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp err::Err report(uint8_t cmd, Bytes *body nullptr) ``` #### resp\\_err item doc **type** func **brief** Encode response error message to buffer **param** **cmd**: CMD value
    **code**: error code
    **msg**: error message
    **return** encoded data, if nullptr, means error, and the error code is err.Err.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp err::Err resp_err(uint8_t cmd, err::Err code, const std::string &msg) ```"},"/maixpy/api/maix/sys.html":{"title":"maix.sys","content":" title: maix.sys maix.sys module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.sys` to access this module. ## Module No module ## Enum ## Variable ## Function ### os\\_version() item doc **brief** Get system version **return** version string, e.g. \"2024.4.1 13af4b\" **C++ defination code**: ```cpp std::string os_version() ``` ### device\\_name() item doc **brief** Get device name **return** device name, e.g. \"MaixCAM\" **C++ defination code**: ```cpp std::string device_name() ``` ### host\\_name() item doc **brief** Get host name **return** host name, e.g. \"maixcam 2f9f\" **C++ defination code**: ```cpp std::string host_name() ``` ### host\\_domain() item doc **brief** Get host domain **return** host domain, e.g. \"maixcam 2f9f.local\" **C++ defination code**: ```cpp std::string host_domain() ``` ### ip\\_address() item doc **brief** Get ip address **return** ip address, dict type, e.g. {\"eth0\": \"192.168.0.195\", \"wlan0\": \"192.168.0.123\", \"usb0\": \"10.47.159.1\"} **C++ defination code**: ```cpp std::map ip_address() ``` ### mac\\_address() item doc **brief** Get mac address **return** mac address, dict type, e.g. {\"eth0\": \"00:0c:29:2f:9f:00\", \"wlan0\": \"00:0c:29:2f:9f:01\", \"usb0\": \"00:0c:29:2f:9f:02\"} **C++ defination code**: ```cpp std::map mac_address() ``` ### device\\_key() item doc **brief** Get device key, can be unique id of device **return** device key, 32 bytes hex string, e.g. \"1234567890abcdef1234567890abcdef\" **C++ defination code**: ```cpp std::string device_key() ``` ### memory\\_info() item doc **brief** Get memory info **return** memory info, dict type, e.g. {\"total\": 1024, \"used\": 512, \"hw_total\": 256*1024*1024}
    total: total memory size in Byte.
    used: used memory size in Byte.
    hw_total: total memory size in Byte of hardware, the total < hw_total,
    OS kernel may reserve some memory for some hardware like camera, npu, display etc. **C++ defination code**: ```cpp std::map memory_info() ``` ### bytes\\_to\\_human(1234) item doc **brief** Bytes to human readable string **param** **bytes:**: bytes size,e.g. 1234B 1234/1024 1.205 KB
    **precision:**: decimal precision, default 2
    **base:**: base number, default 1024
    **unit:**: unit string, e.g. \"B\"
    **sep:**: separator string, e.g. \" \"
    **return** human readable string, e.g. \"1.21 KB\" **C++ defination code**: ```cpp std::string bytes_to_human(unsigned long long bytes, int precision 2, int base 1024, const std::string &unit \"B\", const std::string &sep \" \") ``` ### cpu\\_freq() item doc **brief** Get CPU frequency **return** CPU frequency, dict type, e.g. {\"cpu0\": 1000000000, \"cpu1\": 1000000000} **C++ defination code**: ```cpp std::map cpu_freq() ``` ### cpu\\_temp() item doc **brief** Get CPU temperature **return** CPU temperature, unit dgree, dict type, e.g. {\"cpu\": 50.0, \"cpu0\": 50, \"cpu1\": 50} **C++ defination code**: ```cpp std::map cpu_temp() ``` ### cpu\\_usage() item doc **brief** Get CPU usage **return** CPU usage, dict type, e.g. {\"cpu\": 50.0, \"cpu0\": 50, \"cpu1\": 50} **C++ defination code**: ```cpp std::map cpu_usage() ``` ### npu\\_freq() item doc **brief** Get NPU frequency **return** NPU frequency, dict type, e.g. {\"npu0\": 500000000} **C++ defination code**: ```cpp std::map npu_freq() ``` ### disk\\_usage() item doc **brief** Get disk usage **param** **path:**: disk path, default \"/\"
    **return** disk usage, dict type, e.g. {\"total\": 1024, \"used\": 512} **C++ defination code**: ```cpp std::map disk_usage(const std::string &path \"/\") ``` ### disk\\_partitions() item doc **brief** Get disk partition and mount point info **param** **only_disk**: only return real disk, tempfs sysfs etc. not return, default true.
    **return** disk partition and mount point info, list type, e.g. [{\"device\": \"/dev/mmcblk0p1\", \"mountpoint\": \"/mnt/sdcard\", \"fstype\": \"vfat\"}] **C++ defination code**: ```cpp std::vector> disk_partitions(bool only_disk true) ``` ## Class"},"/maixpy/api/maix/display.html":{"title":"maix.display","content":" title: maix.display maix.display module, control display device and show image on it > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.display` to access this module. ## Module No module ## Enum ## Variable ## Function ### send\\_to\\_maixvision item doc **brief** Send image to MaixVision work station if connected.\\nIf you want to debug your program an don't want to initialize display, use this method. **param** **img**: image to send, image.Image object
    **C++ defination code**: ```cpp void send_to_maixvision(image::Image &img) ``` ## Class ### Display item doc **brief** Display class **C++ defination code**: ```cpp class Display ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Display object **param** **width**: display width, by default(value is 1) means auto detect,
    if width > max device supported width, will auto set to max device supported width
    **height**: display height, by default(value is 1) means auto detect,
    if height > max device supported height, will auto set to max device supported height
    **device**: display device name, you can get devices by list_devices method, by default(value is NULL(None in MaixPy)) means the first device
    **open**: If true, display will automatically call open() after creation. default is true.
    **static** False **C++ defination code**: ```cpp Display(int width 1, int height 1, image::Format format image::FMT_RGB888, const char *device nullptr, bool open true) ``` #### width item doc **type** func **brief** Get display width **return** width **static** False **C++ defination code**: ```cpp int width() ``` #### height item doc **type** func **brief** Get display height **param** **ch**: channel to get, by default(value is 0) means the first channel
    **return** height **static** False **C++ defination code**: ```cpp int height() ``` #### size item doc **type** func **brief** Get display size **param** **ch**: channel to get, by default(value is 0) means the first channel
    **return** size A list type in MaixPy, [width, height] **static** False **C++ defination code**: ```cpp std::vector size() ``` #### format item doc **type** func **brief** Get display format **return** format **static** False **C++ defination code**: ```cpp image::Format format() ``` #### open item doc **type** func **brief** open display device, if already opened, will return err.ERR_NONE. **param** **width**: display width, default is 1, means auto, mostly means max width of display support
    **height**: display height, default is 1, means auto, mostly means max height of display support
    **format**: display output format, default is RGB888
    **return** error code **static** False **C++ defination code**: ```cpp err::Err open(int width 1, int height 1, image::Format format image::FMT_INVALID) ``` #### close item doc **type** func **brief** close display device **return** error code **static** False **C++ defination code**: ```cpp err::Err close() ``` #### add\\_channel item doc **type** func **brief** Add a new channel and return a new Display object, you can use close() to close this channel. **param** **width**: display width, default is 1, means auto, mostly means max width of display support
    **height**: display height, default is 1, means auto, mostly means max height of display support
    **format**: display output format, default is RGB888
    **open**: If true, display will automatically call open() after creation. default is true.
    **return** new Display object **static** False **C++ defination code**: ```cpp display::Display *add_channel(int width 1, int height 1, image::Format format image::FMT_RGB888, bool open true) ``` #### is\\_opened item doc **type** func **brief** check display device is opened or not **return** opened or not, bool type **static** False **C++ defination code**: ```cpp bool is_opened() ``` #### is\\_closed item doc **type** func **brief** check display device is closed or not **return** closed or not, bool type **static** False **C++ defination code**: ```cpp bool is_closed() ``` #### show item doc **type** func **brief** show image on display device, and will also send to MaixVision work station if connected. **param** **img**: image to show, image.Image object,
    if the size of image smaller than display size, will show in the center of display;
    if the size of image bigger than display size, will auto resize to display size and keep ratio, fill blank with black color.
    **fit**: image in screen fit mode, by default(value is image.FIT_CONTAIN), @see image.Fit for more details
    e.g. image.FIT_CONTAIN means resize image to fit display size and keep ratio, fill blank with black color.
    **return** error code **static** False **C++ defination code**: ```cpp err::Err show(image::Image &img, image::Fit fit image::FIT_CONTAIN) ``` #### device item doc **type** func **brief** Get display device path **return** display device path **static** False **C++ defination code**: ```cpp std::string device() ```"},"/maixpy/api/maix/peripheral/timer.html":{"title":"maix.peripheral.timer","content":" title: maix.peripheral.timer maix.peripheral.timer module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.timer` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### TIMER item doc **brief** Peripheral timer class **C++ defination code**: ```cpp class TIMER ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** TIMER constructor **static** False **C++ defination code**: ```cpp TIMER() ```"},"/maixpy/api/maix/peripheral/i2c.html":{"title":"maix.peripheral.i2c","content":" title: maix.peripheral.i2c maix.peripheral.i2c module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.i2c` to access this module. ## Module No module ## Enum ## Variable ### SEVEN\\_BIT item doc **brief** 7 bit address mode **value** **0x1** **readonly** True **C++ defination code**: ```cpp const int SEVEN_BIT 0x1 ``` ### TEN\\_BIT item doc **brief** 10 bit address mode **value** **0x2** **readonly** True **C++ defination code**: ```cpp const int TEN_BIT 0x2 ``` ### MASTER item doc **brief** master mode **value** **0x4** **readonly** True **C++ defination code**: ```cpp const int MASTER 0x4 ``` ### SLAVE item doc **brief** slave mode **value** **0x8** **readonly** True **C++ defination code**: ```cpp const int SLAVE 0x8 ``` ### STANDARD\\_SPEED item doc **brief** standard speed mode **value** **0x10** **readonly** True **C++ defination code**: ```cpp const int STANDARD_SPEED 0x10 ``` ### FAST\\_SPEED item doc **brief** fast speed mode **value** **0x20** **readonly** True **C++ defination code**: ```cpp const int FAST_SPEED 0x20 ``` ## Function ## Class ### I2C item doc **brief** Peripheral i2c class **C++ defination code**: ```cpp class I2C ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** I2C Device constructor\\nthis constructor will be export to MaixPy as _maix.example.Example.__init__ **param** **id**: direction [in], i2c index, int type
    **scl**: direction [in], sck pin of i2c, int type
    **sda**: direction [in], sda pin of i2c, int type
    **freq**: direction [in], i2c clock, int type
    option:
    in the i2c.STANDARD_SPEED mode, range is [0, 100000]
    in the i2c.FAST_SPEED mode, range is [0, 400000]
    default clock is 1, means use max clock
    **mode**: direction [in], mode of i2c, int type.
    option:
    mode i2c.MASTER, means master mode
    mode i2c.SLAVE, means slave mode
    **bit**: direction [in], address length of i2c, int type.
    option:
    bit i2c.SEVEN_BIT, means 7 bit address mode
    bit i2c.TEN_BIT, means 10 bit address mode
    **speed_mode**: direction [in], speed mode of i2c, int type.
    option:
    speed_mode i2c.STANDARD_SPEED, means standard speed mode, up to 100kbit/s
    speed_mode i2c.FAST_SPEED, means fast speed mode, up to 400kbit/s
    **static** False **C++ defination code**: ```cpp I2C(int id, int scl, int sda, int freq 1, int mode 1, int bit 1, int speed_mode 1) ``` #### writeto item doc **type** func **brief** write data to i2c slave **param** **addr**: direction [in], i2c slave address, int type
    **data**: direction [in], data to write, vector type.
    Note: The member range of the list is [0,255]
    **return** if success, return 0, else return 1 **static** False **C++ defination code**: ```cpp int writeto(int addr, std::vector data) ``` #### readfrom item doc **type** func **brief** read data from i2c slave **param** **addr**: direction [in], i2c slave address, int type
    **len**: direction [in], data length to read, int type
    **return** the list of data read from i2c slave, vector type **static** False **C++ defination code**: ```cpp std::vector readfrom(int addr, int len) ``` #### scan item doc **type** func **brief** scan all i2c address **return** the list of i2c address, vector type **static** False **C++ defination code**: ```cpp std::vector scan() ``` #### writeto\\_mem item doc **type** func **brief** write data to i2c slave **param** **addr**: direction [in], i2c slave address, int type
    **start_addr**: direction [in], start address of i2c slave, int type
    **data**: direction [in], data to write, vector type.
    Note: The member range of the list is [0,255]
    **return** if success, return 0, else return 1 **static** False **C++ defination code**: ```cpp int writeto_mem(int addr, int start_addr, std::vector data) ``` #### readfrom\\_mem item doc **type** func **brief** read data from i2c slave **param** **addr**: direction [in], i2c slave address, int type
    **start_addr**: direction [in], start address of i2c slave, int type
    **len**: direction [in], data length to read, int type
    **return** the list of data read from i2c slave, vector type **static** False **C++ defination code**: ```cpp std::vector readfrom_mem(int addr, int start_addr, int len) ```"},"/maixpy/api/maix/peripheral/gpio.html":{"title":"maix.peripheral.gpio","content":" title: maix.peripheral.gpio maix.peripheral.gpio module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.gpio` to access this module. ## Module No module ## Enum ## Variable ### IN item doc **brief** GPIO input mode **value** **0x01** **readonly** True **C++ defination code**: ```cpp const int IN 0x01 ``` ### OUT item doc **brief** GPIO output mode **value** **0x2** **readonly** True **C++ defination code**: ```cpp const int OUT 0x2 ``` ### OUT\\_OD item doc **brief** GPIO output open drain mode **value** **0x3** **readonly** True **C++ defination code**: ```cpp const int OUT_OD 0x3 ``` ### PULL\\_NONE item doc **brief** GPIO pull none mode **value** **0x4** **readonly** True **C++ defination code**: ```cpp const int PULL_NONE 0x4 ``` ### PULL\\_UP item doc **brief** GPIO pull up mode **value** **0x5** **readonly** True **C++ defination code**: ```cpp const int PULL_UP 0x5 ``` ### PULL\\_DOWN item doc **brief** GPIO pull down mode **value** **0x6** **readonly** True **C++ defination code**: ```cpp const int PULL_DOWN 0x6 ``` ### OFF item doc **brief** GPIO off **value** **0x0** **readonly** True **C++ defination code**: ```cpp const int OFF 0x0 ``` ### ON item doc **brief** GPIO on **value** **0x1** **readonly** True **C++ defination code**: ```cpp const int ON 0x1 ``` ## Function ## Class ### GPIO item doc **brief** Peripheral gpio class **C++ defination code**: ```cpp class GPIO ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** GPIO constructor **param** **pin**: direction [in], gpio pin. int type.
    **mode**: direction [in], gpio mode. int type. default is 1, means gpio.IN
    option:
    mode gpio.IN, means input mode
    mode gpio.OUT, means output mode
    mode gpio.OUT_OD, means output open drain mode
    **pull**: direction [in], gpio pull. int type. default is determined by actual board.
    option:
    pull gpio.PULL_NONE, means pull none mode
    pull gpio.PULL_UP, means pull up mode
    pull gpio.PULL_DOWN, means pull down mode
    **static** False **C++ defination code**: ```cpp GPIO(int pin, int mode 1, int pull 1) ``` #### value item doc **type** func **brief** write/read gpio value **param** **value**: direction [in], gpio value. int type.
    value 0, means write gpio to low level
    value 1, means write gpio to high level
    **return** int type
    if success, return 0; else return 1 **static** False **C++ defination code**: ```cpp int value(int value 1) ``` #### write item doc **type** func **brief** get gpio write **param** **value**: direction [in], gpio value. int type.
    value 0, means write gpio to low level
    value 1, means write gpio to high level
    value 1 or not set, means read gpio value
    **return** int type
    when read gpio value, return gpio value
    when write gpio value, if success, return 0; else return 1 **static** False **C++ defination code**: ```cpp int write(int value) ``` #### read item doc **type** func **brief** get gpio read **return** int type
    return 0, means gpio is low level
    return 1, means gpio is high level
    return other, means error **static** False **C++ defination code**: ```cpp int read() ``` #### on item doc **type** func **brief** set gpio on **static** False **C++ defination code**: ```cpp void on() ``` #### off item doc **type** func **brief** set gpio off **static** False **C++ defination code**: ```cpp void off() ``` #### high item doc **type** func **brief** set gpio high **static** False **C++ defination code**: ```cpp void high() ``` #### low item doc **type** func **brief** set gpio low **static** False **C++ defination code**: ```cpp void low() ``` #### toggle item doc **type** func **brief** gpio toggle **static** False **C++ defination code**: ```cpp void toggle() ```"},"/maixpy/api/maix/peripheral/uart.html":{"title":"maix.peripheral.uart","content":" title: maix.peripheral.uart maix uart peripheral driver > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.uart` to access this module. ## Module No module ## Enum ### PARITY item doc **brief** uart parity enum **values** **PARITY_NONE**: no parity
    **PARITY_ODD**: odd parity
    **PARITY_EVEN**: even parity
    **PARITY_MAX**:
    **C++ defination code**: ```cpp enum PARITY { PARITY_NONE 0x00, // no parity PARITY_ODD 0x01, // odd parity PARITY_EVEN 0x02, // even parity PARITY_MAX } ``` ### STOP item doc **brief** uart stop bits **values** **STOP_1**: 1 stop bit
    **STOP_2**: 2 stop bits
    **STOP_1_5**: 1.5 stop bits
    **STOP_MAX**:
    **C++ defination code**: ```cpp enum STOP { STOP_1 0x01, // 1 stop bit STOP_2 0x02, // 2 stop bits STOP_1_5 0x03, // 1.5 stop bits STOP_MAX } ``` ### BITS item doc **brief** uart stop bits **values** **BITS_5**: 5 data bits
    **BITS_6**: 6 data bits
    **BITS_7**: 7 data bits
    **BITS_8**: 8 data bits
    **BITS_MAX**:
    **C++ defination code**: ```cpp enum BITS { BITS_5 5, // 5 data bits BITS_6 6, // 6 data bits BITS_7 7, // 7 data bits BITS_8 8, // 8 data bits BITS_MAX } ``` ### FLOW\\_CTRL item doc **brief** uart flow control **values** **FLOW_CTRL_NONE**: no flow control
    **FLOW_CTRL_HW**: hardware flow control
    **FLOW_CTRL_MAX**:
    **C++ defination code**: ```cpp enum FLOW_CTRL { FLOW_CTRL_NONE 0, // no flow control FLOW_CTRL_HW 1, // hardware flow control FLOW_CTRL_MAX } ``` ## Variable ## Function ### list\\_ports item doc **brief** Get supported uart ports. **return** uart ports list, string type. **C++ defination code**: ```cpp std::vector list_ports() ``` ## Class ### UART item doc **brief** maix uart peripheral driver **C++ defination code**: ```cpp class UART : public comm::CommBase ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** UART constructor. You need to call open() to open the device. **param** **port**: uart port. string type, can get it by uart.list_ports().
    If empty, will not open device in constructor, default empty.
    if not empty, will auto open device in constructor, open fail will throw err.Exception.
    **baudrate**: baudrate of uart. int type, default 115200.
    **databits**: databits, values @see uart.DATA_BITS
    **parity**: parity, values @see uart.PARITY
    **stopbits**: stopbits, values @see uart.STOP_BITS
    **flow_control**: flow_control, values @see uart.FLOW_CTRL
    **static** False **C++ defination code**: ```cpp UART(const std::string &port \"\", int baudrate 115200, uart::BITS databits uart::BITS_8, uart::PARITY parity uart::PARITY_NONE, uart::STOP stopbits uart::STOP_1, uart::FLOW_CTRL flow_ctrl uart::FLOW_CTRL_NONE) ``` #### set\\_port item doc **type** func **brief** Set port **param** **port**: uart port. string type, can get it by uart.list_ports().
    **return** set port error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err set_port(const std::string &port) ``` #### get\\_port item doc **type** func **brief** Get port **return** uart port, string type. **static** False **C++ defination code**: ```cpp std::string get_port() ``` #### set\\_baudrate item doc **type** func **brief** Set baud rate **param** **baudrate**: baudrate of uart. int type, default 115200.
    **return** set baud rate error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err set_baudrate(int baudrate) ``` #### get\\_baudrate item doc **type** func **brief** Get baud rate **return** baud rate, int type. **static** False **C++ defination code**: ```cpp int get_baudrate() ``` #### open item doc **type** func **brief** Open uart device, before open, port must be set in constructor or by set_port().\\nIf already opened, do nothing and return err.ERR_NONE. **return** open device error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err open() ``` #### is\\_open item doc **type** func **brief** Check if device is opened. **return** true if opened, false if not opened. **static** False **C++ defination code**: ```cpp bool is_open() ``` #### close item doc **type** func **brief** Close uart device, if already closed, do nothing and return err.ERR_NONE. **return** close device error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err close() ``` #### write\\_str item doc **type** func **brief** Send string data **param** **str**: string data
    **return** sent data length, < 0 means error, value is err.Err. **static** False **C++ defination code**: ```cpp int write_str(const std::string &str) ``` #### write item doc **type** func **brief** Send data to uart **param** **data**: direction [in], data to send, bytes type. If you want to send str type, use str.encode() to convert.
    **return** sent length, int type, if < 0 means error, value is err.Err. **static** False **C++ defination code**: ```cpp int write(Bytes &data) ``` #### available item doc **type** func **brief** Check if data available or wait data available. **param** **timeout**: unit ms, timeout to wait data, default 0.
    0 means check data available and return immediately,
    > 0 means wait until data available or timeout.
    1 means wait until data available.
    **return** available data number, 0 if timeout or no data, <0 if error, value is err.Err, can be err::ERR_IO, err::ERR_CANCEL, err::ERR_NOT_OPEN. **throw** err.Exception if fatal error. **static** False **C++ defination code**: ```cpp int available(int timeout 0) ``` #### read item doc **type** func **brief** Recv data from uart **param** **len**: max data length want to receive, default 1.
    1 means read data in uart receive buffer.
    >0 means read len data want to receive.
    other values is invalid.
    **timeout**: unit ms, timeout to receive data, default 0.
    0 means read data in uart receive buffer and return immediately,
    1 means block until read len data,
    >0 means block until read len data or timeout.
    **return** received data, bytes type.
    Attention, you need to delete the returned object yourself in C++. **static** False **C++ defination code**: ```cpp Bytes *read(int len 1, int timeout 0) ``` #### readline item doc **type** func **brief** Read line from uart, that is read until '\\n' or '\\r\\n'. **param** **timeout**: unit ms, timeout to receive data, default 1 means block until read '\\n' or '\\r\\n'.
    > 0 means block until read '\\n' or '\\r\\n' or timeout.
    **return** received data, bytes type. If timeout will return the current received data despite not read '\\n' or '\\r\\n'.
    e.g. If we want to read b'123\\n', but when we only read b'12', timeout, then return b'12'. **static** False **C++ defination code**: ```cpp Bytes *readline(int timeout 1) ```"},"/maixpy/api/maix/peripheral/key.html":{"title":"maix.peripheral.key","content":" title: maix.peripheral.key maix.peripheral.key module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.key` to access this module. ## Module No module ## Enum ### Keys item doc **brief** Keys enum, id the same as linux input.h(input event codes.h) **values** **KEY_NONE**:
    **KEY_ESC**:
    **KEY_OK**:
    **KEY_OPTION**:
    **KEY_NEXT**:
    **KEY_PREV**:
    **C++ defination code**: ```cpp enum Keys{ KEY_NONE 0x000, KEY_ESC 0x001, KEY_OK 0x160, KEY_OPTION 0x165, KEY_NEXT 0x197, KEY_PREV 0x19c } ``` ### State item doc **brief** Key state enum **values** **KEY_RELEASED**:
    **KEY_PRESSED**:
    **C++ defination code**: ```cpp enum State{ KEY_RELEASED 0, KEY_PRESSED 1, } ``` ## Variable ## Function ### add\\_default\\_listener item doc **brief** Add default listener, if you want to exit app when press ok button, you can just call this function.\\nThis function is auto called in MaixPy' startup code, so you don't need to call it in MaixPy.\\nCreate Key object will auto call rm_default_listener() to cancel the default ok button function.\\nWhen ok button pressed, a SIGINT signal will be raise and call app.set_exit_flag(True). **C++ defination code**: ```cpp void add_default_listener() ``` ### rm\\_default\\_listener item doc **brief** Remove default listener, if you want to cancel the default ok button function(exit app), you can just call this function. **C++ defination code**: ```cpp void rm_default_listener() ``` ## Class ### Key item doc **brief** Key input class **C++ defination code**: ```cpp class Key ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Key Device constructor **param** **callback**: When key triggered and callback is not empty(empty In MaixPy is None, in C++ is nullptr),
    callback will be called with args key(key.Keys) and value(key.State).
    If set to null, you can get key value by read() function.
    This callback called in a standalone thread, so you can block a while in callback, and you should be carefully when operate shared data.
    **open**: auto open device in constructor, if false, you need call open() to open device
    **static** False **C++ defination code**: ```cpp Key(std::function callback nullptr, bool open true) ``` #### open item doc **type** func **brief** Open(Initialize) key device, if already opened, will close first and then open. **return** err::Err type, err.Err.ERR_NONE means success **static** False **C++ defination code**: ```cpp err::Err open() ``` #### close item doc **type** func **brief** Close key device **return** err::Err type, err.Err.ERR_NONE means success **static** False **C++ defination code**: ```cpp err::Err close() ``` #### is\\_opened item doc **type** func **brief** Check key device is opened **return** bool type, true means opened, false means closed **static** False **C++ defination code**: ```cpp bool is_opened() ``` #### read item doc **type** func **brief** Read key input, and return key and value, if callback is set, DO NOT call this function manually. **return** list type, first is key(maix.key.Keys), second is value(maix.key.State), if no key input, return [0, 0] **throw** If read failed, will throw maix.err.Exception. **static** False **C++ defination code**: ```cpp std::pair read() ```"},"/maixpy/api/maix/peripheral/adc.html":{"title":"maix.peripheral.adc","content":" title: maix.peripheral.adc maix.peripheral.adc module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.adc` to access this module. ## Module No module ## Enum ## Variable ### RES\\_BIT\\_8 item doc **brief** 8 bit resolution, supported by the actual hardware **value** **0x1** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_8 0x1 ``` ### RES\\_BIT\\_10 item doc **brief** 10 bit resolution, supported by the actual hardware **value** **0x2** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_10 0x2 ``` ### RES\\_BIT\\_12 item doc **brief** 12 bit resolution, supported by the actual hardware **value** **0x3** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_12 0x3 ``` ### RES\\_BIT\\_16 item doc **brief** 16 bit resolution, supported by the actual hardware **value** **0x4** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_16 0x4 ``` ## Function ## Class ### ADC item doc **brief** Peripheral adc class **C++ defination code**: ```cpp class ADC ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** ADC constructor **param** **pin**: direction [in], adc pin, int type
    **resolution**: direction [in], adc resolution. default is 1, means use default resolution
    option:
    resolution adc.RES_BIT_8, means 8 bit resolution
    resolution adc.RES_BIT_10, means 10 bit resolution
    resolution adc.RES_BIT_12, means 12 bit resolution
    resolution adc.RES_BIT_16, means 16 bit resolution
    the default resolution is determined by actual hardware.
    **vref**: direction [in], adc refer voltage. default is 1, means use default refer voltage.
    the default vref is determined by actual hardware. range: [0.0, 10.0]
    **static** False **C++ defination code**: ```cpp ADC(int pin, int resolution 1, float vref 1) ``` #### read item doc **type** func **brief** read adc value **return** adc data, int type
    if resolution is 8 bit, return value range is [0, 255]
    if resolution is 10 bit, return value range is [0, 1023]
    if resolution is 12 bit, return value range is [0, 4095]
    if resolution is 16 bit, return value range is [0, 65535] **static** False **C++ defination code**: ```cpp int read() ``` #### read\\_vol item doc **type** func **brief** read adc voltage **return** adc voltage, float type。the range is [0.0, vref] **static** False **C++ defination code**: ```cpp float read_vol() ```"},"/maixpy/api/maix/peripheral/pwm.html":{"title":"maix.peripheral.pwm","content":" title: maix.peripheral.pwm maix.peripheral.pwm module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.pwm` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### PWM item doc **brief** Peripheral pwm class **C++ defination code**: ```cpp class PWM ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** PWM constructor **param** **pin**: direction [in], pwm pin. int type.
    **freq**: direction [in], pwm frequency, unit: Hz. int type. default is 1000
    **duty**: direction [in], pwm duty. int type. range is [0, 100], default is 1, means set duty to 50
    note: you can not set duty and duty_val at the same time
    **duty_val**: direction [in], pwm duty value, unit: us. int type. default is 1, means set duty_val to (1000000000 / freq) * 0.5
    note: you can not set duty and duty_val at the same time
    **align**: direction [in], pwm align. int type. default is 1
    **sync**: direction [in], pwm sync. int type. default is false
    **static** False **C++ defination code**: ```cpp PWM(int pin, int freq 1000, int duty 1, int duty_val 1, int align 1, bool sync false) ``` #### duty item doc **type** func **brief** set pwm duty **param** **duty**: direction [in], pwm duty. int type. default is 1
    duty [0, 100], set duty
    duty 1 or not set, return current duty
    **return** int type
    when get duty, return current duty
    when set duty, if success, return 0; else return 1 **static** False **C++ defination code**: ```cpp int duty(int duty 1) ``` #### duty\\_val item doc **type** func **brief** set pwm duty value **param** **duty_val**: direction [in], pwm duty value. int type. default is 1
    duty_val [0, 65535], set duty_val
    duty_val 1 or not set, return current duty_val
    **return** int type
    when get duty_val, return current duty_val
    when set duty_val, if success, return 0; else return 1 **static** False **C++ defination code**: ```cpp int duty_val(int duty_val 1) ``` #### freq item doc **type** func **brief** set pwm frequency **param** **freq**: direction [in], pwm frequency. int type. default is 1
    freq > 0, set freq
    freq 1 or not set, return current freq
    **return** int type
    when get freq, return current freq
    when set freq, if success, return 0; else return 1 **static** False **C++ defination code**: ```cpp int freq(int freq 1) ``` #### enable item doc **type** func **brief** set pwm enable **param** **enable**: direction [in], pwm enable. int type. default is 1
    enable 0, disable pwm
    enable 1, enable pwm
    enable 1 or not set, return current enable value
    **return** int type
    when get enable, return current enable value
    when set enable, if success, return 0; else return 1 **static** False **C++ defination code**: ```cpp int enable(int enable 1) ```"},"/maixpy/api/maix/time.html":{"title":"maix.time","content":" title: maix.time maix.time module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.time` to access this module. ## Module No module ## Enum ## Variable ## Function ### time item doc **brief** Get current time in s **return** current time in s, double type **C++ defination code**: ```cpp double time() ``` ### time\\_ms item doc **brief** Get current time in ms **return** current time in ms, uint64_t type **C++ defination code**: ```cpp uint64_t time_ms() ``` ### time\\_s item doc **brief** Get current time in s **return** current time in s, uint64_t type **C++ defination code**: ```cpp uint64_t time_s() ``` ### time\\_us item doc **brief** Get current time in us **return** current time in us, uint64_t type **C++ defination code**: ```cpp uint64_t time_us() ``` ### time\\_diff item doc **brief** Calculate time difference **param** **last**: last time
    **now**: current time
    **return** time difference **C++ defination code**: ```cpp double time_diff(double last, double now 1) ``` ### sleep item doc **brief** Sleep seconds **param** **s**: seconds, double type
    **C++ defination code**: ```cpp void sleep(double s) ``` ### sleep\\_ms item doc **brief** Sleep milliseconds **param** **ms**: milliseconds, uint64_t type
    **C++ defination code**: ```cpp void sleep_ms(uint64_t ms) ``` ### sleep\\_us item doc **brief** Sleep microseconds **param** **us**: microseconds, uint64_t type
    **C++ defination code**: ```cpp void sleep_us(uint64_t us) ``` ### now item doc **brief** Get current UTC date and time **return** current date and time, DateTime type **C++ defination code**: ```cpp time::DateTime *now() ``` ### localtime item doc **brief** Get local time **return** local time, DateTime type **C++ defination code**: ```cpp time::DateTime *localtime() ``` ### strptime item doc **brief** DateTime from string **param** **str**: date time string
    **format**: date time format
    **return** DateTime **C++ defination code**: ```cpp time::DateTime *strptime(const std::string &str, const std::string &format) ``` ### gmtime item doc **brief** timestamp to DateTime(time zone is UTC (value 0)) **param** **timestamp**: double timestamp
    **return** DateTime **C++ defination code**: ```cpp time::DateTime *gmtime(double timestamp) ``` ## Class ### DateTime item doc **brief** Date and time class **C++ defination code**: ```cpp class DateTime ``` #### year item doc **type** var **brief** Year **static** False **readonly** False **C++ defination code**: ```cpp int year ``` #### month item doc **type** var **brief** Month, 1~12 **static** False **readonly** False **C++ defination code**: ```cpp int month ``` #### day item doc **type** var **brief** Day **static** False **readonly** False **C++ defination code**: ```cpp int day ``` #### hour item doc **type** var **brief** Hour **static** False **readonly** False **C++ defination code**: ```cpp int hour ``` #### minute item doc **type** var **brief** Minute **static** False **readonly** False **C++ defination code**: ```cpp int minute ``` #### second item doc **type** var **brief** Second **static** False **readonly** False **C++ defination code**: ```cpp int second ``` #### microsecond item doc **type** var **brief** Microsecond **static** False **readonly** False **C++ defination code**: ```cpp int microsecond ``` #### yearday item doc **type** var **brief** Year day **static** False **readonly** False **C++ defination code**: ```cpp int yearday ``` #### weekday item doc **type** var **brief** Weekday, 0 is Monday, 6 is Sunday **static** False **readonly** False **C++ defination code**: ```cpp int weekday ``` #### zone item doc **type** var **brief** Time zone **static** False **readonly** False **C++ defination code**: ```cpp float zone ``` #### zone\\_name item doc **type** var **brief** Time zone name **static** False **readonly** False **C++ defination code**: ```cpp std::string zone_name ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor **param** **year**: year
    **month**: month
    **day**: day
    **hour**: hour
    **minute**: minute
    **second**: second
    **microsecond**: microsecond
    **yearday**: year day
    **weekday**: weekday
    **zone**: time zone
    **static** False **C++ defination code**: ```cpp DateTime(int year 0, int month 0, int day 0, int hour 0, int minute 0, int second 0, int microsecond 0, int yearday 0, int weekday 0, int zone 0) ``` #### strftime item doc **type** func **brief** Convert to string **return** date time string **static** False **C++ defination code**: ```cpp std::string strftime(const std::string &format) ``` #### timestamp item doc **type** func **brief** Convert to float timestamp **return** float timestamp **static** False **C++ defination code**: ```cpp double timestamp() ```"},"/maixpy/api/maix/fs.html":{"title":"maix.fs","content":" title: maix.fs maix.fs module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.fs` to access this module. ## Module No module ## Enum ### SEEK item doc **brief** SEEK enums **values** **SEEK_SET**: Seek from beginning of file.
    **SEEK_CUR**: Seek from current position.
    **SEEK_END**: Seek from end of file.
    **C++ defination code**: ```cpp enum SEEK { SEEK_SET 0, // Seek from beginning of file. SEEK_CUR 1, // Seek from current position. SEEK_END 2, // Seek from end of file. } ``` ## Variable ## Function ### isabs item doc **brief** Check if the path is absolute path **param** **path**: path to check
    **return** true if path is absolute path **C++ defination code**: ```cpp bool isabs(const std::string &path) ``` ### isdir item doc **brief** Check if the path is a directory, if not exist, throw exception **param** **path**: path to check
    **return** true if path is a directory **C++ defination code**: ```cpp bool isdir(const std::string &path) ``` ### isfile item doc **brief** Check if the path is a file, if not exist, throw exception **param** **path**: path to check
    **return** true if path is a file **C++ defination code**: ```cpp bool isfile(const std::string &path) ``` ### islink item doc **brief** Check if the path is a link, if not exist, throw exception **param** **path**: path to check
    **return** true if path is a link **C++ defination code**: ```cpp bool islink(const std::string &path) ``` ### exists item doc **brief** Check if the path exists **param** **path**: path to check
    **return** true if path exists **C++ defination code**: ```cpp bool exists(const std::string &path) ``` ### mkdir item doc **brief** Create a directory recursively **param** **path**: path to create
    **exist_ok**: if true, also return true if directory already exists
    **recursive**: if true, create directory recursively, otherwise, only create one directory, default is true
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err mkdir(const std::string &path, bool exist_ok true, bool recursive true) ``` ### rmdir item doc **brief** Remove a directory **param** **path**: path to remove
    **recursive**: if true, remove directory recursively, otherwise, only remove empty directory, default is false
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err rmdir(const std::string &path, bool recursive false) ``` ### remove item doc **brief** Remove a file **param** **path**: path to remove
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err remove(const std::string &path) ``` ### rename item doc **brief** Rename a file or directory **param** **src**: source path
    **dst**: destination path, if destination dirs not exist, will auto create
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err rename(const std::string &src, const std::string &dst) ``` ### getsize item doc **brief** Get file size **param** **path**: path to get size
    **return** file size if success, err::Err code if failed **C++ defination code**: ```cpp int getsize(const std::string &path) ``` ### dirname item doc **brief** Get directory name of path **param** **path**: path to get dirname
    **return** dirname if success, empty string if failed **C++ defination code**: ```cpp std::string dirname(const std::string &path) ``` ### basename item doc **brief** Get base name of path **param** **path**: path to get basename
    **return** basename if success, empty string if failed **C++ defination code**: ```cpp std::string basename(const std::string &path) ``` ### abspath item doc **brief** Get absolute path **param** **path**: path to get absolute path
    **return** absolute path if success, empty string if failed **C++ defination code**: ```cpp std::string abspath(const std::string &path) ``` ### getcwd item doc **brief** Get current working directory **return** current working directory absolute path **C++ defination code**: ```cpp std::string getcwd() ``` ### realpath item doc **brief** Get realpath of path **param** **path**: path to get realpath
    **return** realpath if success, empty string if failed **C++ defination code**: ```cpp std::string realpath(const std::string &path) ``` ### splitext item doc **brief** Get file extension **param** **path**: path to get extension
    **return** extension if success, empty string if failed **C++ defination code**: ```cpp std::string splitext(const std::string &path) ``` ### listdir item doc **brief** List files in directory **param** **path**: path to list
    **recursive**: if true, list recursively, otherwise, only list current directory, default is false
    **full_path**: if true, return full path, otherwise, only return basename, default is false
    **return** files list if success, nullptr if failed **C++ defination code**: ```cpp std::vector *listdir(const std::string &path, bool recursive false, bool full_path false) ``` ### open item doc **brief** Open a file, and return a File object **param** **path**: path to open
    **mode**: open mode, support \"r\", \"w\", \"a\", \"r+\", \"w+\", \"a+\", \"rb\", \"wb\", \"ab\", \"rb+\", \"wb+\", \"ab+\"
    **return** File object if success(need to delete object manually in C/C++), nullptr if failed **C++ defination code**: ```cpp fs::File *open(const std::string &path, const std::string &mode) ``` ### tempdir item doc **brief** Get temp files directory **return** temp files directory **C++ defination code**: ```cpp std::string tempdir() ``` ## Class ### File item doc **brief** File read write ops **C++ defination code**: ```cpp class File ``` #### open item doc **type** func **brief** Open a file **param** **path**: path to open
    **mode**: open mode, support \"r\", \"w\", \"a\", \"r+\", \"w+\", \"a+\", \"rb\", \"wb\", \"ab\", \"rb+\", \"wb+\", \"ab+\"
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **static** False **C++ defination code**: ```cpp err::Err open(const std::string &path, const std::string &mode) ``` #### close item doc **type** func **brief** Close a file **static** False **C++ defination code**: ```cpp void close() ``` #### read item doc **type** func **brief** Read data from file API2 **param** **size**: max read size
    **return** bytes data if success(need delete manually in C/C++), nullptr if failed **static** False **C++ defination code**: ```cpp std::vector *read(int size) ``` #### readline item doc **type** func **brief** Read line from file **return** line if success, empty string if failed. You need to delete the returned object manually in C/C++. **static** False **C++ defination code**: ```cpp std::string *readline() ``` #### write item doc **type** func **brief** Write data to file API2 **param** **buf**: buffer to write
    **return** write size if success, err::Err code if failed **static** False **C++ defination code**: ```cpp int write(const std::vector &buf) ``` #### seek item doc **type** func **brief** Seek file position **param** **offset**: offset to seek
    **whence**: @see maix.fs.SEEK
    **return** new position if success, err::Err code if failed **static** False **C++ defination code**: ```cpp int seek(int offset, int whence) ``` #### tell item doc **type** func **brief** Get file position **return** file position if success, err::Err code if failed **static** False **C++ defination code**: ```cpp int tell() ``` #### flush item doc **type** func **brief** Flush file **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **static** False **C++ defination code**: ```cpp err::Err flush() ```"},"/maixpy/api/maix/camera.html":{"title":"maix.camera","content":" title: maix.camera maix.camera module, access camera device and get image from it > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.camera` to access this module. ## Module No module ## Enum ## Variable ## Function ### list\\_devices item doc **brief** List all supported camera devices. **return** Returns the path to the camera device. **C++ defination code**: ```cpp std::vector list_devices() ``` ### set\\_regs\\_enable item doc **brief** Enable set camera registers, default is false, if set to true, will not set camera registers, you can manually set registers by write_reg API. **param** **enable**: enable/disable set camera registers
    **C++ defination code**: ```cpp void set_regs_enable(bool enable true) ``` ## Class ### Camera item doc **brief** Camera class **C++ defination code**: ```cpp class Camera ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Camera object **param** **width**: camera width, default is 1, means auto, mostly means max width of camera support
    **height**: camera height, default is 1, means auto, mostly means max height of camera support
    **format**: camera output format, default is image.Format.FMT_RGB888
    **device**: camera device path, you can get devices by list_devices method, by default(value is NULL(None in MaixPy)) means the first device
    **fps**: camera fps, default is 1, means auto, mostly means max fps of camera support
    **buff_num**: camera buffer number, default is 3, means 3 buffer, one used by user, one used for cache the next frame,
    more than one buffer will accelerate image read speed, but will cost more memory.
    **open**: If true, camera will automatically call open() after creation. default is true.
    **static** False **C++ defination code**: ```cpp Camera(int width 1, int height 1, image::Format format image::FMT_RGB888, const char *device nullptr, int fps 1, int buff_num 3, bool open true) ``` #### get\\_ch\\_nums item doc **type** func **brief** Get the number of channels supported by the camera. **return** Returns the maximum number of channels. **static** False **C++ defination code**: ```cpp int get_ch_nums() ``` #### open item doc **type** func **brief** Open camera and run **param** **width**: camera width, default is 1, means auto, mostly means max width of camera support
    **height**: camera height, default is 1, means auto, mostly means max height of camera support
    **format**: camera output format, default same as the constructor's format argument
    **fps**: camera fps, default is 1, means auto, mostly means max fps of camera support
    **buff_num**: camera buffer number, default is 3, means 3 buffer, one used by user, one used for cache the next frame,
    more than one buffer will accelerate image read speed, but will cost more memory.
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err open(int width 1, int height 1, image::Format format image::FMT_INVALID, int fps 1, int buff_num 1) ``` #### read item doc **type** func **brief** Get one frame image from camera buffer, must call open method before read.\\nIf open method not called, will call it automatically, if open failed, will throw exception!\\nSo call open method before read is recommended. **param** **buff**: buffer to store image data, if buff is nullptr, will alloc memory automatically.
    In MaixPy, default to None, you can create a image.Image object, then pass img.data() to buff.
    **block**: block read, default is true, means block util read image successfully,
    if set to false, will return nullptr if no image in buffer
    **return** image::Image object, if failed, return nullptr, you should delete if manually in C++ **static** False **C++ defination code**: ```cpp image::Image *read(void *buff nullptr, size_t buff_size 0, bool block true) ``` #### clear\\_buff item doc **type** func **brief** Clear buff to ensure the next read image is the latest image **static** False **C++ defination code**: ```cpp void clear_buff() ``` #### skip\\_frames item doc **type** func **brief** Read some frames and drop, this is usually used avoid read not stable image when camera just opened. **param** **num**: number of frames to read and drop
    **static** False **C++ defination code**: ```cpp void skip_frames(int num) ``` #### close item doc **type** func **brief** Close camera **static** False **C++ defination code**: ```cpp void close() ``` #### add\\_channel item doc **type** func **brief** Add a new channel and return a new Camera object, you can use close() to close this channel. **param** **width**: camera width, default is 1, means auto, mostly means max width of camera support
    **height**: camera height, default is 1, means auto, mostly means max height of camera support
    **format**: camera output format, default is RGB888
    **fps**: camera fps, default is 1, means auto, mostly means max fps of camera support
    **buff_num**: camera buffer number, default is 3, means 3 buffer, one used by user, one used for cache the next frame,
    more than one buffer will accelerate image read speed, but will cost more memory.
    **open**: If true, camera will automatically call open() after creation. default is true.
    **return** new Camera object **static** False **C++ defination code**: ```cpp camera::Camera *add_channel(int width 1, int height 1, image::Format format image::FMT_RGB888, int fps 1, int buff_num 3, bool open true) ``` #### is\\_opened item doc **type** func **brief** Check if camera is opened **return** true if camera is opened, false if not **static** False **C++ defination code**: ```cpp bool is_opened() ``` #### is\\_closed item doc **type** func **brief** check camera device is closed or not **return** closed or not, bool type **static** False **C++ defination code**: ```cpp bool is_closed() ``` #### width item doc **type** func **brief** Get camera width **return** camera width **static** False **C++ defination code**: ```cpp int width() ``` #### height item doc **type** func **brief** Get camera height **return** camera height **static** False **C++ defination code**: ```cpp int height() ``` #### fps item doc **type** func **brief** Get camera fps **return** camera fps **static** False **C++ defination code**: ```cpp int fps() ``` #### format item doc **type** func **brief** Get camera output format **return** camera output format, image::Format object **static** False **C++ defination code**: ```cpp image::Format format() ``` #### buff\\_num item doc **type** func **brief** Get camera buffer number **return** camera buffer number **static** False **C++ defination code**: ```cpp int buff_num() ``` #### hmirror item doc **type** func **brief** Get camera horizontal mirror **return** camera horizontal mirror **static** False **C++ defination code**: ```cpp int hmirror(int value 1) ``` #### vflip item doc **type** func **brief** Get camera vertical flip **return** camera vertical flip **static** False **C++ defination code**: ```cpp int vflip(int value 1) ``` #### exposure item doc **type** func **brief** Get camera exposure **return** camera exposure **static** False **C++ defination code**: ```cpp float exposure(int value 1) ``` #### gain item doc **type** func **brief** Get camera gain **return** camera gain **static** False **C++ defination code**: ```cpp float gain(int value 1) ``` #### device item doc **type** func **brief** Get camera device path **return** camera device path **static** False **C++ defination code**: ```cpp std::string device() ``` #### write\\_reg item doc **type** func **brief** Write camera register **param** **addr**: register address
    **data**: register data
    **bit_width**: register data bit width, default is 8
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err write_reg(int addr, int data, int bit_width 8) ``` #### read\\_reg item doc **type** func **brief** Read camera register **param** **addr**: register address
    **bit_width**: register data bit width, default is 8
    **return** register data, 1 means failed **static** False **C++ defination code**: ```cpp int read_reg(int addr, int bit_width 8) ``` #### show\\_colorbar item doc **type** func **brief** Camera output color bar image for test **param** **enable**: enable/disable color bar
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err show_colorbar(bool enable) ```"},"/maixpy/api/maix/nn.html":{"title":"maix.nn","content":" title: maix.nn maix.nn module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.nn` to access this module. ## Module module brief [F](./nn/F.html) maix.nn.F module ## Enum ## Variable ## Function ## Class ### YOLOv5 item doc **brief** YOLOv5 class **C++ defination code**: ```cpp class YOLOv5 ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor of YOLOv5 class **param** **model**: model path, default empty, you can load model later by load function.
    **throw** If model arg is not empty and load failed, will throw err::Exception. **static** False **C++ defination code**: ```cpp YOLOv5(const string &model \"\") ``` #### load item doc **type** func **brief** Load model from file **param** **model**: Model path want to load
    **return** err::Err **static** False **C++ defination code**: ```cpp err::Err load(const string &model) ``` #### detect item doc **type** func **brief** Detect objects from image **param** **img**: Image want to detect, if image's size not match model input's, will auto resize with fit method.
    **conf_th**: Confidence threshold, default 0.5.
    **iou_th**: IoU threshold, default 0.45.
    **fit**: Resize method, default image.Fit.FIT_CONTAIN.
    **throw** If image format not match model input format, will throw err::Exception. **return** Object list. In C++, you should delete it after use. **static** False **C++ defination code**: ```cpp std::vector *detect(image::Image &img, float conf_th 0.5, float iou_th 0.45, maix::image::Fit fit maix::image::FIT_CONTAIN) ``` #### input\\_size item doc **type** func **brief** Get model input size **return** model input size **static** False **C++ defination code**: ```cpp image::Size input_size() ``` #### input\\_width item doc **type** func **brief** Get model input width **return** model input size of width **static** False **C++ defination code**: ```cpp int input_width() ``` #### input\\_height item doc **type** func **brief** Get model input height **return** model input size of height **static** False **C++ defination code**: ```cpp int input_height() ``` #### input\\_format item doc **type** func **brief** Get input image format **return** input image format, image::Format type. **static** False **C++ defination code**: ```cpp image::Format input_format() ``` #### labels item doc **type** var **brief** Labels list **static** False **readonly** False **C++ defination code**: ```cpp std::vector labels ``` #### label\\_path item doc **type** var **brief** Label file path **static** False **readonly** False **C++ defination code**: ```cpp std::string label_path ``` #### mean item doc **type** var **brief** Get mean value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector mean ``` #### scale item doc **type** var **brief** Get scale value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector scale ``` #### anchors item doc **type** var **brief** Get anchors **static** False **readonly** False **C++ defination code**: ```cpp std::vector anchors ``` ### Classifier item doc **brief** Classifier **C++ defination code**: ```cpp class Classifier ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Classifier object **param** **model**: MUD model path, if empty, will not load model, you can call load() later.
    if not empty, will load model and will raise err::Exception if load failed.
    **static** False **C++ defination code**: ```cpp Classifier(const string &model \"\") ``` #### load item doc **type** func **brief** Load model from file, model format is .mud,\\nMUD file should contain [extra] section, have key values:\\n model_type: classifier\\n input_type: rgb or bgr\\n mean: 123.675, 116.28, 103.53\\n scale: 0.017124753831663668, 0.01750700280112045, 0.017429193899782137\\n labels: imagenet_classes.txt **param** **model**: MUD model path
    **return** error code, if load failed, return error code **static** False **C++ defination code**: ```cpp err::Err load(const string &model) ``` #### classify item doc **type** func **brief** Forward image to model, get result. Only for image input, use classify_raw for tensor input. **param** **img**: image, format should match model input_type, or will raise err.Exception
    **softmax**: if true, will do softmax to result, or will return raw value
    **throw** If error occurred, will raise err::Exception, you can find reason in log, mostly caused by args error or hardware error. **return** result, a list of (label, score). In C++, you need to delete it after use. **static** False **C++ defination code**: ```cpp std::vector> *classify(image::Image &img, bool softmax true) ``` #### classify\\_raw item doc **type** func **brief** Forward tensor data to model, get result **param** **data**: tensor data, format should match model input_type, or will raise err.Excetion
    **softmax**: if true, will do softmax to result, or will return raw value
    **throw** If error occurred, will raise err::Exception, you can find reason in log, mostly caused by args error or hardware error. **return** result, a list of (label, score). In C++, you need to delete it after use. **static** False **C++ defination code**: ```cpp std::vector> *classify_raw(tensor::Tensor &data, bool softmax true) ``` #### input\\_size item doc **type** func **brief** Get model input size, only for image input **return** model input size **static** False **C++ defination code**: ```cpp image::Size input_size() ``` #### input\\_width item doc **type** func **brief** Get model input width, only for image input **return** model input size of width **static** False **C++ defination code**: ```cpp int input_width() ``` #### input\\_height item doc **type** func **brief** Get model input height, only for image input **return** model input size of height **static** False **C++ defination code**: ```cpp int input_height() ``` #### input\\_format item doc **type** func **brief** Get input image format, only for image input **return** input image format, image::Format type. **static** False **C++ defination code**: ```cpp image::Format input_format() ``` #### input\\_shape item doc **type** func **brief** Get input shape, if have multiple input, only return first input shape **return** input shape, list type **static** False **C++ defination code**: ```cpp std::vector input_shape() ``` #### labels item doc **type** var **brief** Labels list **static** False **readonly** False **C++ defination code**: ```cpp std::vector labels ``` #### label\\_path item doc **type** var **brief** Label file path **static** False **readonly** False **C++ defination code**: ```cpp std::string label_path ``` #### mean item doc **type** var **brief** Get mean value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector mean ``` #### scale item doc **type** var **brief** Get scale value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector scale ``` ### MUD item doc **brief** MUD(model universal describe file) class **C++ defination code**: ```cpp class MUD ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** MUD constructor **param** **model_path**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    If model_path set, will load model from file, load failed will raise err.Exception.
    If model_path not set, you can load model later by load function.
    **static** False **C++ defination code**: ```cpp MUD(const char *model_path nullptr) ``` #### load item doc **type** func **brief** Load model from file **param** **model_path**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    **return** error code, if load success, return err::ERR_NONE **static** False **C++ defination code**: ```cpp err::Err load(const std::string &model_path) ``` #### type item doc **type** var **brief** Model type, string type **static** False **readonly** False **C++ defination code**: ```cpp std::string type ``` #### items item doc **type** var **brief** Model config items, different model type has different config items **static** False **readonly** False **C++ defination code**: ```cpp std::map> items ``` ### LayerInfo item doc **brief** NN model layer info **C++ defination code**: ```cpp class LayerInfo ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** LayerInfo constructor **param** **name**: direction [in], layer name
    **dtype**: direction [in], layer data type
    **shape**: direction [in], layer shape
    **static** False **C++ defination code**: ```cpp LayerInfo(const std::string &name \"\", tensor::DType dtype tensor::DType::FLOAT32, std::vector shape std::vector()) ``` #### name item doc **type** var **brief** Layer name **static** False **readonly** False **C++ defination code**: ```cpp std::string name ``` #### dtype item doc **type** var **brief** Layer data type **attention** If model is quantized, this is the real quantized data type like int8 float16,
    in most scene, inputs and outputs we actually use float32 in API like forward. **static** False **readonly** False **C++ defination code**: ```cpp tensor::DType dtype ``` #### shape item doc **type** var **brief** Layer shape **static** False **readonly** False **C++ defination code**: ```cpp std::vector shape ``` #### to\\_str item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string __str__() ``` ### NN item doc **brief** Neural network class **C++ defination code**: ```cpp class NN ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Neural network constructor **param** **model**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    If model_path set, will load model from file, load failed will raise err.Exception.
    If model_path not set, you can load model later by load function.
    **static** False **C++ defination code**: ```cpp NN(const std::string &model \"\") ``` #### load item doc **type** func **brief** Load model from file **param** **model**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    **return** error code, if load success, return err::ERR_NONE **static** False **C++ defination code**: ```cpp err::Err load(const std::string &model) ``` #### loaded item doc **type** func **brief** Is model loaded **return** true if model loaded, else false **static** False **C++ defination code**: ```cpp bool loaded() ``` #### inputs\\_info item doc **type** func **brief** Get model input layer info **return** input layer info **static** False **C++ defination code**: ```cpp std::vector inputs_info() ``` #### outputs\\_info item doc **type** func **brief** Get model output layer info **return** output layer info **static** False **C++ defination code**: ```cpp std::vector outputs_info() ``` #### extra\\_info item doc **type** func **brief** Get model extra info define in MUD file **return** extra info, dict type, key value object, attention: key and value are all string type. **static** False **C++ defination code**: ```cpp std::map extra_info() ``` #### forward item doc **type** func **brief** forward run model, get output of model,\\nthis is specially for MaixPy, not efficient, but easy to use in MaixPy **param** **input**: direction [in], input tensor
    **return** output tensor. In C++, you should manually delete tensors in return value and return value. **static** False **C++ defination code**: ```cpp tensor::Tensors *forward(tensor::Tensors &inputs) ``` #### forward\\_image item doc **type** func **brief** forward model, param is image **param** **img**: input image
    **mean**: mean value, a list type, e.g. [0.485, 0.456, 0.406], default is empty list means not normalize.
    **scale**: scale value, a list type, e.g. [1/0.229, 1/0.224, 1/0.225], default is empty list means not normalize.
    **fit**: fit mode, if the image size of input not equal to model's input, it will auto resize use this fit method,
    default is image.Fit.FIT_FILL for easy coordinate calculation, but for more accurate result, use image.Fit.FIT_CONTAIN is better.
    **return** output tensor. In C++, you should manually delete tensors in return value and return value. **static** False **C++ defination code**: ```cpp tensor::Tensors *forward_image(image::Image &img, std::vector mean std::vector(), std::vector scale std::vector(), image::Fit fit image::Fit::FIT_FILL) ``` ### Object item doc **brief** Object for detect result **C++ defination code**: ```cpp class Object ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor of Object for detect result **param** **x**: left top x
    **y**: left top y
    **w**: width
    **h**: height
    **class_id**: class id
    **score**: score
    **static** False **C++ defination code**: ```cpp Object(int x 0, int y 0, int w 0, int h 0, int class_id 0, float score 0) ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** Object info to string **return** Object info string **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### x item doc **type** var **brief** Object left top coordinate x **static** False **readonly** False **C++ defination code**: ```cpp int x ``` #### y item doc **type** var **brief** Object left top coordinate y **static** False **readonly** False **C++ defination code**: ```cpp int y ``` #### w item doc **type** var **brief** Object width **static** False **readonly** False **C++ defination code**: ```cpp int w ``` #### h item doc **type** var **brief** Object height **static** False **readonly** False **C++ defination code**: ```cpp int h ``` #### class\\_id item doc **type** var **brief** Object class id **static** False **readonly** False **C++ defination code**: ```cpp int class_id ``` #### score item doc **type** var **brief** Object score **static** False **readonly** False **C++ defination code**: ```cpp float score ```"},"/maixpy/api/maix/image.html":{"title":"maix.image","content":" title: maix.image maix.image module, image related definition and functions > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.image` to access this module. ## Module No module ## Enum ### Format item doc **brief** Image formats **attention** for developers, update this enum will also need to update the fmt_size in maix_image.cpp **values** **FMT_RGB888**: RGBRGB...RGB, R at the lowest address
    **FMT_BGR888**: BGRBGR...BGR, B at the lowest address
    **FMT_RGBA8888**: RGBARGBA...RGBA, R at the lowest address
    **FMT_BGRA8888**: BGRABGRA...BGRA, B at the lowest address
    **FMT_RGB565**:
    **FMT_BGR565**:
    **FMT_YUV422SP**: YYY...UVUVUV...UVUV
    **FMT_YUV422P**: YYY...UUU...VVV
    **FMT_YVU420SP**: YYY...VUVUVU...VUVU, NV21
    **FMT_YUV420SP**: YYY...UVUVUV...UVUV, NV12
    **FMT_YVU420P**: YYY...VVV...UUU
    **FMT_YUV420P**: YYY...UUU...VVV
    **FMT_GRAYSCALE**:
    **FMT_UNCOMPRESSED_MAX**:
    **FMT_COMPRESSED_MIN**:
    **FMT_JPEG**:
    **FMT_PNG**:
    **FMT_COMPRESSED_MAX**:
    **FMT_INVALID**: format not valid
    **C++ defination code**: ```cpp enum Format { FMT_RGB888 0, // RGBRGB...RGB, R at the lowest address FMT_BGR888, // BGRBGR...BGR, B at the lowest address FMT_RGBA8888, // RGBARGBA...RGBA, R at the lowest address FMT_BGRA8888, // BGRABGRA...BGRA, B at the lowest address FMT_RGB565, FMT_BGR565, FMT_YUV422SP, // YYY...UVUVUV...UVUV FMT_YUV422P, // YYY...UUU...VVV FMT_YVU420SP, // YYY...VUVUVU...VUVU, NV21 FMT_YUV420SP, // YYY...UVUVUV...UVUV, NV12 FMT_YVU420P, // YYY...VVV...UUU FMT_YUV420P, // YYY...UUU...VVV FMT_GRAYSCALE, FMT_UNCOMPRESSED_MAX, // compressed format below, not compressed should define upper FMT_COMPRESSED_MIN, FMT_JPEG, FMT_PNG, FMT_COMPRESSED_MAX, FMT_INVALID 0xFF // format not valid } ``` ### Fit item doc **brief** Object fit method **values** **FIT_NONE**: no object fit, keep original
    **FIT_FILL**: width to new width, height to new height, may be stretch
    **FIT_CONTAIN**: keep aspect ratio, fill blank area with black color
    **FIT_COVER**: keep aspect ratio, crop image to fit new size
    **FIT_MAX**:
    **C++ defination code**: ```cpp enum Fit { FIT_NONE 1, // no object fit, keep original FIT_FILL 0, // width to new width, height to new height, may be stretch FIT_CONTAIN, // keep aspect ratio, fill blank area with black color FIT_COVER, // keep aspect ratio, crop image to fit new size FIT_MAX } ``` ### ResizeMethod item doc **brief** Resize method **values** **NEAREST**:
    **BILINEAR**:
    **BICUBIC**:
    **AREA**:
    **LANCZOS**:
    **HAMMING**:
    **RESIZE_METHOD_MAX**:
    **C++ defination code**: ```cpp enum ResizeMethod { NEAREST 0, BILINEAR, BICUBIC, AREA, LANCZOS, HAMMING, RESIZE_METHOD_MAX } ``` ### ApriltagFamilies item doc **brief** Family of apriltag **values** **TAG16H5**:
    **TAG25H7**:
    **TAG25H9**:
    **TAG36H10**:
    **TAG36H11**:
    **ARTOOLKIT**:
    **C++ defination code**: ```cpp enum ApriltagFamilies { TAG16H5 1, TAG25H7 2, TAG25H9 4, TAG36H10 8, TAG36H11 16, ARTOOLKIT 32 } ``` ### TemplateMatch item doc **brief** Template match method **values** **SEARCH_EX**: Exhaustive search
    **SEARCH_DS**: Diamond search
    **C++ defination code**: ```cpp enum TemplateMatch { SEARCH_EX, // Exhaustive search SEARCH_DS, // Diamond search } ``` ### CornerDetector item doc **brief** CornerDetector class **values** **CORNER_FAST**:
    **CORNER_AGAST**:
    **C++ defination code**: ```cpp enum CornerDetector { CORNER_FAST, CORNER_AGAST } ``` ### EdgeDetector item doc **brief** EdgeDetector class **values** **EDGE_CANNY**:
    **EDGE_SIMPLE**:
    **C++ defination code**: ```cpp enum EdgeDetector { EDGE_CANNY, EDGE_SIMPLE, } ``` ## Variable ### fmt\\_size item doc **brief** Image format size in bytes **attention** It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake. **value** **{
    3,
    3,
    4,
    4,
    2,
    2,
    2,
    2,
    1.5,
    1.5,
    1.5,
    1.5,
    1,
    0,
    0,
    0,
    0,
    0
    }** **readonly** True **C++ defination code**: ```cpp const std::vector fmt_size { 3, 3, 4, 4, 2, 2, 2, 2, 1.5, 1.5, 1.5, 1.5, 1, 0, 0, 0, 0, 0 } ``` ### fmt\\_names item doc **brief** Image format string **value** **{
    \"RGB888\",
    \"BGR888\",
    \"RGBA8888\",
    \"BGRA8888\",
    \"RGB565\",
    \"BGR565\",
    \"YUV422SP\",
    \"YUV422P\",
    \"YVU420SP\",
    \"YUV420SP\",
    \"YVU420P\"
    \"YUV420P\",
    \"GRAYSCALE\",
    \"MAX\"}** **readonly** True **C++ defination code**: ```cpp const std::vector fmt_names { \"RGB888\", \"BGR888\", \"RGBA8888\", \"BGRA8888\", \"RGB565\", \"BGR565\", \"YUV422SP\", \"YUV422P\", \"YVU420SP\", \"YUV420SP\", \"YVU420P\" \"YUV420P\", \"GRAYSCALE\", \"MAX\"} ``` ### COLOR\\_WHITE item doc **brief** Predefined color white **value** **image::Color::from_rgb(255, 255, 255)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_WHITE image::Color::from_rgb(255, 255, 255) ``` ### COLOR\\_BLACK item doc **brief** Predefined color black **value** **image::Color::from_rgb(0, 0, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_BLACK image::Color::from_rgb(0, 0, 0) ``` ### COLOR\\_RED item doc **brief** Predefined color red **value** **image::Color::from_rgb(255, 0, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_RED image::Color::from_rgb(255, 0, 0) ``` ### COLOR\\_GREEN item doc **brief** Predefined color green **value** **image::Color::from_rgb(0, 255, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_GREEN image::Color::from_rgb(0, 255, 0) ``` ### COLOR\\_BLUE item doc **brief** Predefined color blue **value** **image::Color::from_rgb(0, 0, 255)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_BLUE image::Color::from_rgb(0, 0, 255) ``` ### COLOR\\_YELLOW item doc **brief** Predefined color yellow **value** **image::Color::from_rgb(255, 255, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_YELLOW image::Color::from_rgb(255, 255, 0) ``` ### COLOR\\_PURPLE item doc **brief** Predefined color purple **value** **image::Color::from_rgb(143, 0, 255)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_PURPLE image::Color::from_rgb(143, 0, 255) ``` ### COLOR\\_ORANGE item doc **brief** Predefined color orange **value** **image::Color::from_rgb(255, 127, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_ORANGE image::Color::from_rgb(255, 127, 0) ``` ### COLOR\\_GRAY item doc **brief** Predefined color gray **value** **image::Color::from_rgb(127, 127, 127)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_GRAY image::Color::from_rgb(127, 127, 127) ``` ## Function ### load item doc **brief** Load image from file, and convert to Image object **param** **path**: image file path
    **format**: read as this format, if not match, will convert to this format, by default is RGB888
    **return** Image object **C++ defination code**: ```cpp image::Image *load(const char *path, image::Format format image::Format::FMT_RGB888) ``` ### load\\_font item doc **brief** Load font from file **param** **name**: font name, used to identify font
    **path**: font file path, support ttf, ttc, otf
    **size**: font size, font height, by default is 16
    **return** error code, err::ERR_NONE is ok, other is error **C++ defination code**: ```cpp err::Err load_font(const std::string &name, const char *path, int size 16) ``` ### set\\_default\\_font item doc **brief** Set default font, if not call this method, default is hershey_plain **param** **name**: font name, supported names can be get by fonts()
    **return** error code, err::ERR_NONE is ok, other is error **C++ defination code**: ```cpp err::Err set_default_font(const std::string &name) ``` ### fonts item doc **brief** Get all loaded fonts **return** all loaded fonts, string list type **C++ defination code**: ```cpp std::vector *fonts() ``` ### text\\_size item doc **brief** Get text rendered width and height **param** **text**: text content
    **scale**: font scale, by default(value is 1)
    **thickness**: text thickness(line width), by default(value is 1)
    **return** text rendered width and height, [width, height] **C++ defination code**: ```cpp image::Size text_size(std::string text, float scale 1, int thickness 1, const std::string &font \"\") ``` ### cv2image item doc **brief** OpenCV Mat(numpy array object) to Image object **param** **array**: numpy array object, must be a 3 dim or 2 dim continuous array with shape hwc or hw
    **return** Image object **C++ defination code**: ```cpp image::Image *cv2image(py::array_t array, bool bgr true, bool copy true) ``` ### image2cv item doc **brief** Image object to OpenCV Mat(numpy array object) **param** **img**: Image object
    **return** numpy array object **C++ defination code**: ```cpp py::array_t image2cv(image::Image *img, bool bgr true, bool copy true) ``` ## Class ### Size item doc **brief** Image size type **C++ defination code**: ```cpp class Size ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Size object **param** **width**: image width
    **height**: image height
    **static** False **C++ defination code**: ```cpp Size(int width 0, int height 0) ``` #### width item doc **type** var **brief** width of size **static** False **readonly** False **C++ defination code**: ```cpp int width ``` #### height item doc **type** var **brief** height of size **static** False **readonly** False **C++ defination code**: ```cpp int height ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index**: 0 for width, 1 for height
    **return** int& width or height **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** to string **static** False **C++ defination code**: ```cpp std::string __str__() ``` ### Line item doc **brief** Line class **C++ defination code**: ```cpp class Line ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Line constructor **param** **x1**: coordinate x1 of the straight line
    **y1**: coordinate y1 of the straight line
    **x2**: coordinate x2 of the straight line
    **y2**: coordinate y2 of the straight line
    **magnitude**: magnitude of the straight line after Hough transformation
    **theta**: angle of the straight line after Hough transformation
    **rho**: p value of the straight line after Hough transformation
    **static** False **C++ defination code**: ```cpp Line(int x1, int y1, int x2, int y2, int magnitude 0, int theta 0, int rho 0) ``` #### x1 item doc **type** func **brief** get x1 of line **return** return x1 of the line, type is int **static** False **C++ defination code**: ```cpp int x1() ``` #### y1 item doc **type** func **brief** get y1 of line **return** return y1 of the line, type is int **static** False **C++ defination code**: ```cpp int y1() ``` #### x2 item doc **type** func **brief** get x2 of line **return** return x2 of the line, type is int **static** False **C++ defination code**: ```cpp int x2() ``` #### y2 item doc **type** func **brief** get y2 of line **return** return y2 of the line, type is int **static** False **C++ defination code**: ```cpp int y2() ``` #### length item doc **type** func **brief** get length of line **return** return length of the line, type is int **static** False **C++ defination code**: ```cpp int length() ``` #### magnitude item doc **type** func **brief** get magnitude of the straight line after Hough transformation **return** return magnitude, type is int **static** False **C++ defination code**: ```cpp int magnitude() ``` #### theta item doc **type** func **brief** get angle of the straight line after Hough transformation (0 179 degrees) **return** return angle, type is int **static** False **C++ defination code**: ```cpp int theta() ``` #### rho item doc **type** func **brief** get p value of the straight line after Hough transformation **return** return p value, type is int **static** False **C++ defination code**: ```cpp int rho() ``` ### Rect item doc **brief** Rect class **C++ defination code**: ```cpp class Rect ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Rect constructor **param** **corners**: corners of rect
    **x**: coordinate x of the straight line
    **y**: coordinate y of the straight line
    **w**: coordinate w of the straight line
    **h**: coordinate h of the straight line
    **magnitude**: magnitude of the straight line after Hough transformation
    **static** False **C++ defination code**: ```cpp Rect(std::vector> &corners, int x, int y, int w, int h, int magnitude 0) ``` #### corners item doc **type** func **brief** get corners of rect **return** return the coordinate of the rect. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of rect **return** return the rectangle of the rect. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of rect **return** return x of the rect, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of rect **return** return y of the rect, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of rect **return** return w of the rect, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of rect **return** return h of the rect, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### magnitude item doc **type** func **brief** get magnitude of the straight line after Hough transformation **return** return magnitude, type is int **static** False **C++ defination code**: ```cpp int magnitude() ``` ### Circle item doc **brief** circle class **C++ defination code**: ```cpp class Circle ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Circle constructor **param** **x**: coordinate x of the circle
    **y**: coordinate y of the circle
    **r**: coordinate r of the circle
    **magnitude**: coordinate y2 of the straight line
    **static** False **C++ defination code**: ```cpp Circle(int x, int y, int r, int magnitude) ``` #### x item doc **type** func **brief** get x of circle **return** return x of the circle, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of circle **return** return y of the circle, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### r item doc **type** func **brief** get r of circle **return** return r of the circle, type is int **static** False **C++ defination code**: ```cpp int r() ``` #### magnitude item doc **type** func **brief** get magnitude of the circle after Hough transformation **return** return magnitude, type is int **static** False **C++ defination code**: ```cpp int magnitude() ``` ### Blob item doc **brief** Blob class **C++ defination code**: ```cpp class Blob ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Blob constructor **param** **rect**: blob rect, type is std::vector
    **corners**: blob corners, type is std::vector>
    **mini_corners**: blob mini_corners, type is std::vector>
    **cx**: blob center x, type is float
    **cy**: blob center y, type is float
    **pixels**: blob pixels, type is int
    **rotation**: blob rotation, type is float
    **code**: blob code, type is int
    **count**: blob count, type is int
    **perimeter**: blob perimeter, type is int
    **roundness**: blob roundness, type is float
    **x_hist_bins**: blob x_hist_bins, type is std::vector
    **y_hist_bins**: blob y_hist_bins, type is std::vector
    **static** False **C++ defination code**: ```cpp Blob(std::vector &rect, std::vector> &corners, std::vector> &mini_corners,float cx, float cy, int pixels, float rotation, int code, int count, int perimeter, float roundness, std::vector &x_hist_bins, std::vector &y_hist_bins) ``` #### corners item doc **type** func **brief** get blob corners **return** Returns a list of 4 (x,y) tuples of the 4 corners of the object.
    (x0, y0)___________(x1, y1)



    ___________
    (x3, y3) (x2, y2)
    note: the order of corners may change **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### mini\\_corners item doc **type** func **brief** get blob mini corners **return** Returns a list of 4 (x,y) tuples of the 4 corners than bound the min area rectangle of the blob.
    (x0, y0)___________(x1, y1)



    ___________
    (x3, y3) (x2, y2)
    note: the order of corners may change **static** False **C++ defination code**: ```cpp std::vector> mini_corners() ``` #### rect item doc **type** func **brief** get blob rect **return** Returns the center coordinates and width and height of the rectangle. format is (x, y, w, h)
    w
    (x, y) ___________

    h

    ___________ **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get blob x of the upper left coordinate **return** Returns the x coordinate of the upper left corner of the rectangle. **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get blob y of the upper left coordinate **return** Returns the y coordinate of the upper left corner of the rectangle. **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get blob width **return** Returns the blob’s bounding box w coordinate **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get blob height **return** Returns the blob’s bounding box h coordinate **static** False **C++ defination code**: ```cpp int h() ``` #### pixels item doc **type** func **brief** get blob pixels **return** Returns the number of pixels that are part of this blob. **static** False **C++ defination code**: ```cpp int pixels() ``` #### cx item doc **type** func **brief** get blob center x **return** Returns the centroid x position of the blob **static** False **C++ defination code**: ```cpp int cx() ``` #### cy item doc **type** func **brief** get blob center y **return** Returns the centroid y position of the blob **static** False **C++ defination code**: ```cpp int cy() ``` #### cxf item doc **type** func **brief** get blob center x **return** Returns the centroid x position of the blob **static** False **C++ defination code**: ```cpp float cxf() ``` #### cyf item doc **type** func **brief** get blob center y **return** Returns the centroid y position of the blob **static** False **C++ defination code**: ```cpp float cyf() ``` #### rotation item doc **type** func **brief** get blob rotation **return** Returns the rotation of the blob in radians (float). If the blob is like a pencil or pen this value will be unique for 0 180 degrees. **static** False **C++ defination code**: ```cpp float rotation() ``` #### rotation\\_rad item doc **type** func **brief** get blob rotation_rad **return** Returns the rotation of the blob in radians **static** False **C++ defination code**: ```cpp float rotation_rad() ``` #### rotation\\_deg item doc **type** func **brief** get blob rotation_deg **return** Returns the rotation of the blob in degrees. **static** False **C++ defination code**: ```cpp int rotation_deg() ``` #### code item doc **type** func **brief** get blob code **return** Returns a 32 bit binary number with a bit set in it for each color threshold that’s part of this blob **static** False **C++ defination code**: ```cpp int code() ``` #### count item doc **type** func **brief** get blob count **return** Returns the number of blobs merged into this blob. **static** False **C++ defination code**: ```cpp int count() ``` #### perimeter item doc **type** func **brief** get blob merge_cnt **return** Returns the number of pixels on this blob’s perimeter. **static** False **C++ defination code**: ```cpp int perimeter() ``` #### roundness item doc **type** func **brief** get blob roundness **return** Returns a value between 0 and 1 representing how round the object is **static** False **C++ defination code**: ```cpp float roundness() ``` #### elongation item doc **type** func **brief** get blob elongation **returnReturns** a value between 0 and 1 representing how long (not round) the object is **static** False **C++ defination code**: ```cpp float elongation() ``` #### area item doc **type** func **brief** get blob area **return** Returns the area of the bounding box around the blob **static** False **C++ defination code**: ```cpp int area() ``` #### density item doc **type** func **brief** get blob density **return** Returns the density ratio of the blob **static** False **C++ defination code**: ```cpp float density() ``` #### extent item doc **type** func **brief** Alias for blob.density() **return** Returns the density ratio of the blob **static** False **C++ defination code**: ```cpp float extent() ``` #### compactness item doc **type** func **brief** get blob compactness **return** Returns the compactness ratio of the blob **static** False **C++ defination code**: ```cpp float compactness() ``` #### solidity item doc **type** func **brief** get blob solidity **return** Returns the solidity ratio of the blob **static** False **C++ defination code**: ```cpp float solidity() ``` #### convexity item doc **type** func **brief** get blob convexity **return** Returns a value between 0 and 1 representing how convex the object is **static** False **C++ defination code**: ```cpp float convexity() ``` #### x\\_hist\\_bins item doc **type** func **brief** get blob x_hist_bins **return** Returns the x_hist_bins of the blob **static** False **C++ defination code**: ```cpp std::vector x_hist_bins() ``` #### y\\_hist\\_bins item doc **type** func **brief** get blob y_hist_bins **return** Returns the y_hist_bins of the blob **static** False **C++ defination code**: ```cpp std::vector y_hist_bins() ``` #### major\\_axis\\_line item doc **type** func **brief** get blob major_axis_line **return** Returns a line tuple (x1, y1, x2, y2) of the minor axis of the blob. **static** False **C++ defination code**: ```cpp std::vector major_axis_line() ``` #### minor\\_axis\\_line item doc **type** func **brief** get blob minor_axis_line **return** Returns a line tuple (x1, y1, x2, y2) of the minor axis of the blob. **static** False **C++ defination code**: ```cpp std::vector minor_axis_line() ``` #### enclosing\\_circle item doc **type** func **brief** get blob enclosing_circle **return** Returns a circle tuple (x, y, r) of the circle that encloses the min area rectangle of a blob. **static** False **C++ defination code**: ```cpp std::vector enclosing_circle() ``` #### enclosed\\_ellipse item doc **type** func **brief** get blob enclosed_ellipse **return** Returns an ellipse tuple (x, y, rx, ry, rotation) of the ellipse that fits inside of the min area rectangle of a blob. **static** False **C++ defination code**: ```cpp std::vector enclosed_ellipse() ``` ### QRCode item doc **brief** QRCode class **C++ defination code**: ```cpp class QRCode ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** QRCode constructor **param** **rect**: rect of corners, type is std::vector
    **corners**: corners of QRCode
    **payload**: payload of the QRCode
    **version**: version of the QRCode
    **ecc_level**: ecc_level of the QRCode
    **mask**: mask of the QRCode
    **data_type**: data_type of the QRCode
    **eci**: eci of the QRCode
    **static** False **C++ defination code**: ```cpp QRCode(std::vector &rect, std::vector> &corners, std::string &payload, int version, int ecc_level, int mask, int data_type, int eci) ``` #### corners item doc **type** func **brief** get coordinate of QRCode **return** return the coordinate of the QRCode. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of QRCode **return** return the rectangle of the QRCode. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of QRCode **return** return x of the QRCode, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of QRCode **return** return y of the QRCode, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of QRCode **return** return w of the QRCode, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of QRCode **return** return h of the QRCode, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### payload item doc **type** func **brief** get QRCode payload **return** return area of the QRCode **static** False **C++ defination code**: ```cpp std::string payload() ``` #### version item doc **type** func **brief** get QRCode version **return** return version of the QRCode **static** False **C++ defination code**: ```cpp int version() ``` #### ecc\\_level item doc **type** func **brief** get QRCode error correction level **return** return error correction level of the QRCode **static** False **C++ defination code**: ```cpp int ecc_level() ``` #### mask item doc **type** func **brief** get QRCode mask **return** return mask of the QRCode **static** False **C++ defination code**: ```cpp int mask() ``` #### data\\_type item doc **type** func **brief** get QRCode dataType **return** return mask of the QRCode **static** False **C++ defination code**: ```cpp int data_type() ``` #### eci item doc **type** func **brief** get QRCode eci **return** return data of the QRCode **static** False **C++ defination code**: ```cpp int eci() ``` #### is\\_numeric item doc **type** func **brief** check QRCode is numeric **return** return true if the result type of the QRCode is numeric **static** False **C++ defination code**: ```cpp bool is_numeric() ``` #### is\\_alphanumeric item doc **type** func **brief** check QRCode is alphanumeric **return** return true if the result type of the QRCode is alphanumeric **static** False **C++ defination code**: ```cpp bool is_alphanumeric() ``` #### is\\_binary item doc **type** func **brief** check QRCode is binary **return** return true if the result type of the QRCode is binary **static** False **C++ defination code**: ```cpp bool is_binary() ``` #### is\\_kanji item doc **type** func **brief** check QRCode is kanji **return** return true if the result type of the QRCode is kanji **static** False **C++ defination code**: ```cpp bool is_kanji() ``` ### AprilTag item doc **brief** AprilTag class **C++ defination code**: ```cpp class AprilTag ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** AprilTag constructor **param** **rect**: Inlucdes the top left corner and the width and height of the rectangle. format is {x, y, w, h}, type is std::vector
    **corners**: Includes the four corners of the rectangle. format is {{x0, y0}, {x1, y1}, {x2, y2}, {x3, y3}}, type is std::vector>
    **id**: The id of the AprilTag
    **famliy**: The family of the AprilTag
    **centroid_x**: The x coordinate of the center of the AprilTag
    **centroid_y**: The y coordinate of the center of the AprilTag
    **rotation**: The rotation of the AprilTag
    **decision_margin**: The decision_margin of the AprilTag
    **hamming**: The hamming of the AprilTag
    **goodness**: The goodness of the AprilTag
    **x_translation**: The x_translation of the AprilTag
    **y_translation**: The y_translation of the AprilTag
    **z_translation**: The z_translation of the AprilTag
    **x_rotation**: The x_rotation of the AprilTag
    **y_rotation**: The y_rotation of the AprilTag
    **z_rotation**: The z_rotation of the AprilTag
    **static** False **C++ defination code**: ```cpp AprilTag(std::vector &rect, std::vector> &corners, int id, int famliy, float centroid_x, float centroid_y, float rotation, float decision_margin, int hamming, float goodness, float x_translation, float y_translation, float z_translation, float x_rotation, float y_rotation, float z_rotation) ``` #### corners item doc **type** func **brief** get coordinate of AprilTag **return** return the coordinate of the AprilTag. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of AprilTag **return** return the rectangle of the AprilTag. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of AprilTag **return** return x of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of AprilTag **return** return y of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of AprilTag **return** return w of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of AprilTag **return** return h of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### id item doc **type** func **brief** get id of AprilTag **return** return id of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int id() ``` #### family item doc **type** func **brief** get family of AprilTag **return** return family of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int family() ``` #### cx item doc **type** func **brief** get cx of AprilTag **return** return cx of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int cx() ``` #### cxf item doc **type** func **brief** get cxf of AprilTag **return** return cxf of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float cxf() ``` #### cy item doc **type** func **brief** get cy of AprilTag **return** return cy of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int cy() ``` #### cyf item doc **type** func **brief** get cyf of AprilTag **return** return cyf of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float cyf() ``` #### rotation item doc **type** func **brief** get rotation of AprilTag **return** return rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float rotation() ``` #### decision\\_margin item doc **type** func **brief** Get decision_margin of AprilTag **return** Returns the quality of the apriltag match (0.0 1.0) where 1.0 is the best. **static** False **C++ defination code**: ```cpp float decision_margin() ``` #### hamming item doc **type** func **brief** get hamming of AprilTag **return** Returns the number of accepted bit errors for this tag.
    return 0, means 0 bit errors will be accepted.
    1 is TAG25H7, means up to 1 bit error may be accepted
    2 is TAG25H9, means up to 3 bit errors may be accepted
    3 is TAG36H10, means up to 3 bit errors may be accepted
    4 is TAG36H11, means up to 4 bit errors may be accepted
    5 is ARTOOLKIT, means 0 bit errors will be accepted **static** False **C++ defination code**: ```cpp int hamming() ``` #### goodness item doc **type** func **brief** get goodness of AprilTag **return** return goodness of the AprilTag, type is float
    Note: This value is always 0.0 for now. **static** False **C++ defination code**: ```cpp float goodness() ``` #### x\\_translation item doc **type** func **brief** get x_translation of AprilTag **return** return x_translation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float x_translation() ``` #### y\\_translation item doc **type** func **brief** get y_translation of AprilTag **return** return y_translation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float y_translation() ``` #### z\\_translation item doc **type** func **brief** get z_translation of AprilTag **return** return z_translation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float z_translation() ``` #### x\\_rotation item doc **type** func **brief** get x_rotation of AprilTag **return** return x_rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float x_rotation() ``` #### y\\_rotation item doc **type** func **brief** get y_rotation of AprilTag **return** return y_rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float y_rotation() ``` #### z\\_rotation item doc **type** func **brief** get z_rotation of AprilTag **return** return z_rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float z_rotation() ``` ### DataMatrix item doc **brief** DataMatrix class **C++ defination code**: ```cpp class DataMatrix ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** DataMatrix constructor **param** **rect**: Inlucdes the top left corner and the width and height of the rectangle. format is {x, y, w, h}, type is std::vector
    **corners**: Includes the four corners of the rectangle. format is {{x0, y0}, {x1, y1}, {x2, y2}, {x3, y3}}, type is std::vector>
    **payload**: The payload of the DataMatrix
    **rotation**: The rotation of the DataMatrix
    **rows**: The rows of the DataMatrix
    **columns**: The columns of the DataMatrix
    **capacity**: The capacity of the DataMatrix
    **padding**: The padding of the DataMatrix
    **static** False **C++ defination code**: ```cpp DataMatrix(std::vector &rect, std::vector> &corners, std::string &payload, float rotation, int rows, int columns, int capacity, int padding) ``` #### corners item doc **type** func **brief** get coordinate of DataMatrix **return** return the coordinate of the DataMatrix. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of DataMatrix **return** return the rectangle of the DataMatrix. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of DataMatrix **return** return x of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of DataMatrix **return** return y of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of DataMatrix **return** return w of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of DataMatrix **return** return h of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### payload item doc **type** func **brief** get payload of DataMatrix **return** return payload of the DataMatrix, type is std::string **static** False **C++ defination code**: ```cpp std::string payload() ``` #### rotation item doc **type** func **brief** get rotation of DataMatrix **return** return rotation of the DataMatrix, type is float **static** False **C++ defination code**: ```cpp float rotation() ``` #### rows item doc **type** func **brief** get rows of DataMatrix **return** return rows of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int rows() ``` #### columns item doc **type** func **brief** get columns of DataMatrix **return** return columns of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int columns() ``` #### capacity item doc **type** func **brief** et capacity of DataMatrix **return** returns how many characters could fit in this data matrix, type is int **static** False **C++ defination code**: ```cpp int capacity() ``` #### padding item doc **type** func **brief** get padding of DataMatrix **return** returns how many unused characters are in this data matrix, type is int **static** False **C++ defination code**: ```cpp int padding() ``` ### BarCode item doc **brief** BarCode class **C++ defination code**: ```cpp class BarCode ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** BarCode constructor **param** **rect**: Inlucdes the top left corner and the width and height of the rectangle. format is {x, y, w, h}, type is std::vector
    **corners**: Includes the four corners of the rectangle. format is {{x0, y0}, {x1, y1}, {x2, y2}, {x3, y3}}, type is std::vector>
    **payload**: The payload of the BarCode
    **type**: The type of the BarCode
    **rotation**: The rotation of the BarCode
    **quality**: The quality of the BarCode
    **static** False **C++ defination code**: ```cpp BarCode(std::vector &rect, std::vector> &corners, std::string &payload, int type, float rotation, int quality) ``` #### corners item doc **type** func **brief** get coordinate of BarCode **return** return the coordinate of the BarCode. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of BarCode **return** return the rectangle of the BarCode. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of BarCode **return** return x of the BarCode, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of BarCode **return** return y of the BarCode, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of BarCode **return** return w of the BarCode, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of BarCode **return** return h of the BarCode, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### payload item doc **type** func **brief** get payload of BarCode **return** return payload of the BarCode, type is std::string **static** False **C++ defination code**: ```cpp std::string payload() ``` #### type item doc **type** func **brief** get type of BarCode **return** return type of the BarCode, type is int **static** False **C++ defination code**: ```cpp int type() ``` #### rotation item doc **type** func **brief** get rotation of BarCode **return** return rotation of the BarCode, type is float. FIXME: always return 0.0 **static** False **C++ defination code**: ```cpp float rotation() ``` #### quality item doc **type** func **brief** get quality of BarCode **return** return quality of the BarCode, type is int **static** False **C++ defination code**: ```cpp int quality() ``` ### Statistics item doc **brief** Statistics class **C++ defination code**: ```cpp class Statistics ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Statistics constructor **param** **format**: The statistics source image format
    **l_statistics**: The statistics of the L channel. format is {mean, median, mode, std_dev, min, max, lq, uq}, type is std::vector
    **a_statistics**: The statistics of the A channel. format is {mean, median, mode, std_dev, min, max, lq, uq}, type is std::vector
    **b_statistics**: The statistics of the B channel. format is {mean, median, mode, std_dev, min, max, lq, uq}, type is std::vector
    **static** False **C++ defination code**: ```cpp Statistics(image::Format format, std::vector &l_statistics, std::vector &a_statistics, std::vector &b_statistics) ``` #### format item doc **type** func **brief** get format of Statistics source image **return** return format of the Statistics source image, type is image::Format **static** False **C++ defination code**: ```cpp image::Format format() ``` #### l\\_mean item doc **type** func **brief** get L channel mean **return** return L channel mean, type is int **static** False **C++ defination code**: ```cpp int l_mean() ``` #### l\\_median item doc **type** func **brief** get L channel median **return** return L channel median, type is int **static** False **C++ defination code**: ```cpp int l_median() ``` #### l\\_mode item doc **type** func **brief** get L channel mode **return** return L channel mode, type is int **static** False **C++ defination code**: ```cpp int l_mode() ``` #### l\\_std\\_dev item doc **type** func **brief** get L channel std_dev **return** return L channel std_dev, type is int **static** False **C++ defination code**: ```cpp int l_std_dev() ``` #### l\\_min item doc **type** func **brief** get L channel min **return** return L channel min, type is int **static** False **C++ defination code**: ```cpp int l_min() ``` #### l\\_max item doc **type** func **brief** get L channel max **return** return L channel max, type is int **static** False **C++ defination code**: ```cpp int l_max() ``` #### l\\_lq item doc **type** func **brief** get L channel lq **return** return L channel lq, type is int **static** False **C++ defination code**: ```cpp int l_lq() ``` #### l\\_uq item doc **type** func **brief** get L channel uq **return** return L channel uq, type is int **static** False **C++ defination code**: ```cpp int l_uq() ``` #### a\\_mean item doc **type** func **brief** get A channel mean **return** return A channel mean, type is int **static** False **C++ defination code**: ```cpp int a_mean() ``` #### a\\_median item doc **type** func **brief** get A channea median **return** return A channel median, type is int **static** False **C++ defination code**: ```cpp int a_median() ``` #### a\\_mode item doc **type** func **brief** get A channel mode **return** return A channel mode, type is int **static** False **C++ defination code**: ```cpp int a_mode() ``` #### a\\_std\\_dev item doc **type** func **brief** get A channel std_dev **return** return A channel std_dev, type is int **static** False **C++ defination code**: ```cpp int a_std_dev() ``` #### a\\_min item doc **type** func **brief** get A channel min **return** return A channel min, type is int **static** False **C++ defination code**: ```cpp int a_min() ``` #### a\\_max item doc **type** func **brief** get A channel max **return** return A channel max, type is int **static** False **C++ defination code**: ```cpp int a_max() ``` #### a\\_lq item doc **type** func **brief** get A channel lq **return** return A channel lq, type is int **static** False **C++ defination code**: ```cpp int a_lq() ``` #### a\\_uq item doc **type** func **brief** get A channel uq **return** return A channel uq, type is int **static** False **C++ defination code**: ```cpp int a_uq() ``` #### b\\_mean item doc **type** func **brief** get B channel mean **return** return B channel mean, type is int **static** False **C++ defination code**: ```cpp int b_mean() ``` #### b\\_median item doc **type** func **brief** get B channea median **return** return B channel median, type is int **static** False **C++ defination code**: ```cpp int b_median() ``` #### b\\_mode item doc **type** func **brief** get B channel mode **return** return B channel mode, type is int **static** False **C++ defination code**: ```cpp int b_mode() ``` #### b\\_std\\_dev item doc **type** func **brief** get B channel std_dev **return** return B channel std_dev, type is int **static** False **C++ defination code**: ```cpp int b_std_dev() ``` #### b\\_min item doc **type** func **brief** get B channel min **return** return B channel min, type is int **static** False **C++ defination code**: ```cpp int b_min() ``` #### b\\_max item doc **type** func **brief** get B channel max **return** return B channel max, type is int **static** False **C++ defination code**: ```cpp int b_max() ``` #### b\\_lq item doc **type** func **brief** get B channel lq **return** return B channel lq, type is int **static** False **C++ defination code**: ```cpp int b_lq() ``` #### b\\_uq item doc **type** func **brief** get B channel uq **return** return B channel uq, type is int **static** False **C++ defination code**: ```cpp int b_uq() ``` ### Displacement item doc **brief** Displacement class **C++ defination code**: ```cpp class Displacement ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Displacement constructor **param** **x_translation**: The x_translation of the Displacement
    **y_translation**: The y_translation of the Displacement
    **rotation**: The rotation of the Displacement
    **scale**: The scale of the Displacement
    **response**: The response of the Displacement
    **static** False **C++ defination code**: ```cpp Displacement(float x_translation, float y_translation, float rotation, float scale, float response) ``` #### x\\_translation item doc **type** func **brief** get x_translation of Displacement **return** return x_translation of the Displacement, type is float **static** False **C++ defination code**: ```cpp float x_translation() ``` #### y\\_translation item doc **type** func **brief** get y_translation of Displacement **return** return y_translation of the Displacement, type is float **static** False **C++ defination code**: ```cpp float y_translation() ``` #### rotation item doc **type** func **brief** get rotation of Displacement **return** return rotation of the Displacement, type is float **static** False **C++ defination code**: ```cpp float rotation() ``` #### scale item doc **type** func **brief** get scale of Displacement **return** return scale of the Displacement, type is float **static** False **C++ defination code**: ```cpp float scale() ``` #### response item doc **type** func **brief** get response of Displacement **return** return response of the Displacement, type is float **static** False **C++ defination code**: ```cpp float response() ``` ### LBPKeyPoint item doc **brief** LBPKeyPoint class **C++ defination code**: ```cpp class LBPKeyPoint ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** LBPKeyPoint constructor **param** **data**: The data of the LBPKeyPoint
    **static** False **C++ defination code**: ```cpp LBPKeyPoint(std::valarray &data) ``` ### KeyPoint item doc **brief** KeyPoint class **C++ defination code**: ```cpp class KeyPoint ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** KeyPoint constructor **param** **x**: The x of the KeyPoint
    **y**: The y of the KeyPoint
    **score**: The score of the KeyPoint
    **octave**: The octave of the KeyPoint
    **angle**: The angle of the KeyPoint
    **matched**: The matched of the KeyPoint
    **desc**: The desc of the KeyPoint
    **static** False **C++ defination code**: ```cpp KeyPoint(uint16_t x, uint16_t y, uint16_t score, uint16_t octave, uint16_t angle, uint16_t matched, std::vector &desc) ``` ### KPTMatch item doc **brief** KPTMatch class **C++ defination code**: ```cpp class KPTMatch ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** KPTMatch constructor **param** **cx**: The cx of the KPTMatch
    **cy**: The cy of the KPTMatch
    **x**: The x of the KPTMatch
    **y**: The y of the KPTMatch
    **w**: The w of the KPTMatch
    **h**: The h of the KPTMatch
    **score**: The score of the KPTMatch
    **theta**: The theta of the KPTMatch
    **match**: The match of the KPTMatch
    **static** False **C++ defination code**: ```cpp KPTMatch(int cx, int cy, int x, int y, int w, int h, int score, int theta, int match) ``` ### ORBKeyPoint item doc **brief** ORBKeyPoint class **C++ defination code**: ```cpp class ORBKeyPoint ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** ORBKeyPoint constructor **param** **data**: The data of the ORBKeyPoint
    **threshold**: The threshold of the ORBKeyPoint
    **normalized**: The normalized of the ORBKeyPoint
    **static** False **C++ defination code**: ```cpp ORBKeyPoint(std::vector &data, int threshold, bool normalized) ``` #### get\\_data item doc **type** func **brief** get data of ORBKeyPoint **return** return data of the ORBKeyPoint, type is std::vector **static** False **C++ defination code**: ```cpp std::vector get_data() ``` ### HaarCascade item doc **brief** HaarCascade class **C++ defination code**: ```cpp class HaarCascade ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** HaarCascade constructor **param** **data**: The data of the HaarCascade
    **threshold**: The threshold of the HaarCascade
    **normalized**: The normalized of the HaarCascade
    **static** False **C++ defination code**: ```cpp HaarCascade() ``` ### Color item doc **brief** Color class **C++ defination code**: ```cpp class Color ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Color constructor **param** **alpha**: alpha channel, value range: 0 ~ 1
    **static** False **C++ defination code**: ```cpp Color(uint8_t ch1, uint8_t ch2 0, uint8_t ch3 0, float alpha 0, image::Format format image::FMT_GRAYSCALE) ``` #### r item doc **type** var **brief** Color red channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t r ``` #### g item doc **type** var **brief** Color green channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t g ``` #### b item doc **type** var **brief** Color blue channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t b ``` #### alpha item doc **type** var **brief** Color alpha channel, value from 0.0 to 1.0, float value **static** False **readonly** False **C++ defination code**: ```cpp float alpha ``` #### gray item doc **type** var **brief** Color gray channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t gray ``` #### format item doc **type** var **brief** Color format **static** False **readonly** False **C++ defination code**: ```cpp image::Format format ``` #### hex item doc **type** func **brief** Get color's hex value **static** False **C++ defination code**: ```cpp uint32_t hex() ``` #### from\\_rgb item doc **type** func **brief** Create Color object from RGB channels **static** True **C++ defination code**: ```cpp static image::Color from_rgb(uint8_t r, uint8_t g, uint8_t b) ``` #### from\\_bgr item doc **type** func **brief** Create Color object from BGR channels **static** True **C++ defination code**: ```cpp static image::Color from_bgr(uint8_t b, uint8_t g, uint8_t r) ``` #### from\\_gray item doc **type** func **brief** Create Color object from gray channel **static** True **C++ defination code**: ```cpp static image::Color from_gray(uint8_t gray) ``` #### from\\_rgba item doc **type** func **brief** Create Color object from RGBA channels **param** **alpha**: alpha channel, float value, value range: 0 ~ 1
    **static** True **C++ defination code**: ```cpp static image::Color from_rgba(uint8_t r, uint8_t g, uint8_t b, float alpha) ``` #### from\\_bgra item doc **type** func **brief** Create Color object from BGRA channels **param** **alpha**: alpha channel, float value, value range: 0 ~ 1
    **static** True **C++ defination code**: ```cpp static image::Color from_bgra(uint8_t b, uint8_t g, uint8_t r, float alpha) ``` #### from\\_hex item doc **type** func **brief** Create Color object from hex value **param** **hex**: hex value, e.g. 0x0000FF00, lower address if first channel
    **format**: color format, @see image::Format
    **static** True **C++ defination code**: ```cpp static image::Color from_hex(uint32_t hex, image::Format &format) ``` #### to\\_format item doc **type** func **brief** Convert Color format **param** **format**: format want to convert to, @see image::Format, only support RGB888, BGR888, RGBA8888, BGRA8888, GRAYSCALE.
    **static** False **C++ defination code**: ```cpp void to_format(const image::Format &format) ``` #### to\\_format2 item doc **type** func **brief** Convert color format and return a new Color object **param** **format**: format want to convert to, @see image::Format, only support RGB888, BGR888, RGBA8888, BGRA8888, GRAYSCALE.
    **return** new Color object, you need to delete it manually in C++. **static** False **C++ defination code**: ```cpp image::Color *to_format2(const image::Format &format) ``` ### Image item doc **brief** Image class **C++ defination code**: ```cpp class Image ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Image constructor **param** **width**: image width, should > 0
    **height**: image height, should > 0
    **format**: image format @see image::Format
    **data**: image data, if data is nullptr, will malloc memory for image data
    If the image is in jpeg format, data must be filled in.
    **data_size**: image data size, only for compressed format like jpeg png, data_size must be filled in.
    **copy**: if true and data is not nullptr, will copy data to new buffer, else will use data directly. default is true to avoid memory leak.
    **static** False **C++ defination code**: ```cpp Image(int width, int height, image::Format format image::Format::FMT_RGB888, void *data nullptr, int data_size 1, bool copy true) ``` #### format item doc **type** func **brief** Get image's format **see** image.Format **static** False **C++ defination code**: ```cpp image::Format format() ``` #### size item doc **type** func **brief** Get image's size, [width, height] **static** False **C++ defination code**: ```cpp image::Size size() ``` #### data\\_size item doc **type** func **brief** Get image's data size **static** False **C++ defination code**: ```cpp int data_size() ``` #### width item doc **type** func **brief** Get image's width **static** False **C++ defination code**: ```cpp int width() ``` #### height item doc **type** func **brief** Get image's height **static** False **C++ defination code**: ```cpp int height() ``` #### data item doc **type** func **brief** Get image's data pointer.\\nIn MaixPy is capsule object. **static** False **C++ defination code**: ```cpp void *data() ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** To string method **static** False **C++ defination code**: ```cpp std::string __str__() ``` #### to\\_str item doc **type** func **brief** To string method **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### get\\_pixel item doc **type** func **brief** Get pixel of image **param** **x**: pixel's coordinate x. x must less than image's width
    **y**: pixel's coordinate y. y must less than image's height
    **rgbtuple**: switch return value method. rgbtuple decides whether to split the return or not. default is false.
    **return** pixel value,
    According to image format and rgbtuple, return different value:
    format is FMT_RGB888, rgbtuple is true, return [R, G, B]; rgbtuple is false, return [RGB]
    foramt is FMT_BGR888, rgbtuple is true, return [B, G, R]; rgbtuple is false, return [BGR]
    format is FMT_GRAYSCALE, return [GRAY]; **static** False **C++ defination code**: ```cpp std::vector get_pixel(int x, int y, bool rgbtuple false) ``` #### set\\_pixel item doc **type** func **brief** Set pixel of image **param** **x**: pixel's coordinate x. x must less than image's width
    **y**: pixel's coordinate y. y must less than image's height
    **pixel**: pixel value, according to image format and size of pixel, has different operation:
    format is FMT_RGB888, pixel size must be 1 or 3, if size is 1, will split pixel[0] to [R, G, B]; if size is 3, will use pixel directly
    format is FMT_BGR888, pixel size must be 1 or 3, if size is 1, will split pixel[0] to [B, G, R]; if size is 3, will use pixel directly
    format is FMT_GRAYSCALE, pixel size must be 1, will use pixel directly
    **return** error code, Err::ERR_NONE is ok, other is error **static** False **C++ defination code**: ```cpp err::Err set_pixel(int x, int y, std::vector pixel) ``` #### to\\_tensor item doc **type** func **brief** Convert Image object to tensor::Tensor object **param** **chw**: if true, the shape of tensor is [C, H, W], else [H, W, C]
    **copy**: if true, will alloc memory for tensor data, else will use the memory of Image object
    **return** tensor::Tensor object pointer, an allocated tensor object **static** False **C++ defination code**: ```cpp tensor::Tensor *to_tensor(bool chw false, bool copy true) ``` #### to\\_bytes item doc **type** func **brief** Get image's data and convert to array bytes **param** **copy**: if true, will alloc memory and copy data to new buffer,
    else will use the memory of Image object, delete bytes object will not affect Image object,
    but delete Image object will make bytes object invalid, it may cause program crash !!!!
    So use this param carefully.
    **return** image's data bytes, need be delete by caller in C++. **static** False **C++ defination code**: ```cpp Bytes *to_bytes(bool copy true) ``` #### to\\_format item doc **type** func **brief** Convert image to specific format **param** **format**: format want to convert to, @see image::Format, only support RGB888, BGR888, RGBA8888, BGRA8888, GRAYSCALE, JPEG.
    **return** new image object. Need be delete by caller in C++. **throw** err.Exception, if two images' format not support, **or already the format**, will raise exception **static** False **C++ defination code**: ```cpp image::Image *to_format(const image::Format &format) ``` #### draw\\_image item doc **type** func **brief** Draw image on this image **param** **x**: left top corner of image point's coordinate x
    **y**: left top corner of image point's coordinate y
    **img**: image object to draw, the caller's channel must < the args' channel,
    e.g. caller is RGB888, args is RGBA8888, will throw exception, but caller is RGBA8888, args is RGB888 or RGBA8888 is ok
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_image(int x, int y, image::Image &img) ``` #### draw\\_rect item doc **type** func **brief** Fill rectangle color to image **param** **x**: left top corner of rectangle point's coordinate x
    **y**: left top corner of rectangle point's coordinate y
    **w**: rectangle width
    **h**: rectangle height
    **color**: rectangle color
    **thickness**: rectangle thickness(line width), by default(value is 1), 1 means fill rectangle
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_rect(int x, int y, int w, int h, const image::Color &color, int thickness 1) ``` #### draw\\_line item doc **type** func **brief** Draw line on image **param** **x1**: start point's coordinate x
    **y1**: start point's coordinate y
    **x2**: end point's coordinate x
    **y2**: end point's coordinate y
    **color**: line color @see image::Color
    **thickness**: line thickness(line width), by default(value is 1)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_line(int x1, int y1, int x2, int y2, const image::Color &color, int thickness 1) ``` #### draw\\_circle item doc **type** func **brief** Draw circle on image **param** **x**: circle center point's coordinate x
    **y**: circle center point's coordinate y
    **radius**: circle radius
    **color**: circle color @see image::Color
    **thickness**: circle thickness(line width), by default(value is 1), 1 means fill circle
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_circle(int x, int y, int radius, const image::Color &color, int thickness 1) ``` #### draw\\_ellipse item doc **type** func **brief** Draw ellipse on image **param** **x**: ellipse center point's coordinate x
    **y**: ellipse center point's coordinate y
    **a**: ellipse major axis length
    **b**: ellipse minor axis length
    **angle**: ellipse rotation angle
    **start_angle**: ellipse start angle
    **end_angle**: ellipse end angle
    **color**: ellipse color @see image::Color
    **thickness**: ellipse thickness(line width), by default(value is 1), 1 means fill ellipse
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_ellipse(int x, int y, int a, int b, float angle, float start_angle, float end_angle, const image::Color &color, int thickness 1) ``` #### draw\\_text item doc **type** func **brief** Draw text on image **param** **x**: text left top point's coordinate x
    **y**: text left top point's coordinate y
    **text**: text content
    **color**: text color @see image::Color, default is white
    **scale**: font scale, by default(value is 1)
    **thickness**: text thickness(line width), if negative, the glyph is filled, by default(value is 1)
    **wrap**: if true, will auto wrap text to next line if text width > image width, by default(value is true)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_text(int x, int y, const std::string &text, const image::Color &color image::COLOR_WHITE, float scale 1, int thickness 1, bool wrap true, int wrap_space 4, const std::string &font \"\") ``` #### draw\\_arrow item doc **type** func **brief** Draw arrow on image **param** **x0**: start coordinate of the arrow x0
    **y0**: start coordinate of the arrow y0
    **x1**: end coordinate of the arrow x1
    **y1**: end coordinate of the arrow y1
    **color**: cross color @see image::Color
    **thickness**: cross thickness(line width), by default(value is 1)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_arrow(int x0, int y0, int x1, int y1, const image::Color &color, int thickness 1) ``` #### draw\\_edges item doc **type** func **brief** Draw edges on image **param** **corners**: edges, [[x0, y0], [x1, y1], [x2, y2], [x3, y3]]
    **color**: edges color @see image::Color
    **size**: the circle of radius size. TODO: support in the feature
    **thickness**: edges thickness(line width), by default(value is 1)
    **fill**: if true, will fill edges, by default(value is false)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_edges(std::vector> corners, const image::Color &color, int size 0, int thickness 1, bool fill false) ``` #### draw\\_keypoints item doc **type** func **brief** Draw keypoints on image **param** **keypoints**: keypoints, [x, y, rotation_andle_in_degrees], TODO: rotation_andle_in_degrees support in the feature
    **color**: keypoints color @see image::Color
    **size**: size of keypoints
    **thickness**: keypoints thickness(line width), by default(value is 1)
    **fill**: if true, will fill keypoints, by default(value is false)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_keypoints(std::vector keypoints, const image::Color &color, int size 10, int thickness 1, bool fill false) ``` #### resize item doc **type** func **brief** Resize image, will create a new resized image object **param** **width**: new width, if value is 1, will use height to calculate aspect ratio
    **height**: new height, if value is 1, will use width to calculate aspect ratio
    **object_fit**: fill, contain, cover, by default is fill
    **method**: resize method, by default is bilinear
    **return** Always return a new resized image object even size not change, So in C++ you should take care of the return value to avoid memory leak.
    And it's better to judge whether the size has changed before calling this function to make the program more efficient.
    e.g.
    if img >width() ! width img >height() ! height:
    img img >resize(width, height); **static** False **C++ defination code**: ```cpp image::Image *resize(int width, int height, image::Fit object_fit image::Fit::FIT_FILL, image::ResizeMethod method image::ResizeMethod::NEAREST) ``` #### affine item doc **type** func **brief** Affine transform image, will create a new transformed image object **param** **src_points**: three source points, [x1, y1, x2, y2, x3, y3]
    **dst_points**: three destination points, [x1, y1, x2, y2, x3, y3]
    **width**: new width, if value is 1, will use height to calculate aspect ratio
    **height**: new height, if value is 1, will use width to calculate aspect ratio
    **method**: resize method, by default is bilinear
    **return** new transformed image object **static** False **C++ defination code**: ```cpp image::Image *affine(std::vector src_points, std::vector dst_points, int width 1, int height 1, image::ResizeMethod method image::ResizeMethod::BILINEAR) ``` #### copy item doc **type** func **brief** Copy image, will create a new copied image object **return** new copied image object **static** False **C++ defination code**: ```cpp image::Image *copy() ``` #### crop item doc **type** func **brief** Crop image, will create a new cropped image object **param** **x**: left top corner of crop rectangle point's coordinate x
    **y**: left top corner of crop rectangle point's coordinate y
    **w**: crop rectangle width
    **h**: crop rectangle height
    **return** new cropped image object **static** False **C++ defination code**: ```cpp image::Image *crop(int x, int y, int w, int h) ``` #### rotate item doc **type** func **brief** Rotate image, will create a new rotated image object **param** **angle**: anti clock wise rotate angle, if angle is 90 or 270, and width or height is 1, will swap width and height, or will throw exception
    **width**: new width, if value is 1, will use height to calculate aspect ratio
    **height**: new height, if value is 1, will use width to calculate aspect ratio
    **method**: resize method, by default is bilinear
    **return** new rotated image object **static** False **C++ defination code**: ```cpp image::Image *rotate(float angle, int width 1, int height 1, image::ResizeMethod method image::ResizeMethod::BILINEAR) ``` #### mean\\_pool item doc **type** func **brief** Finds the mean of x_div * y_div squares in the image and returns the modified image composed of the mean of each square. **param** **x_div**: The width of the squares.
    **y_div**: The height of the squares.
    **copy**: Select whether to return a new image or modify the original image. default is false.
    If true, returns a new image composed of the mean of each square; If false, returns the modified image composed of the mean of each square.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mean_pool(int x_div, int y_div, bool copy false) ``` #### midpoint\\_pool item doc **type** func **brief** Finds the midpoint of x_div * y_div squares in the image and returns the modified image composed of the mean of each square. **param** **x_div**: The width of the squares.
    **y_div**: The height of the squares.
    **bias**: The bias of the midpoint. default is 0.5.
    midpoint value is equal to (max * bias + min * (1 bias))
    **copy**: Select whether to return a new image or modify the original image. default is false.
    If true, returns a new image composed of the midpoint of each square; If false, returns the modified image composed of the midpoint of each square.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *midpoint_pool(int x_div, int y_div, double bias 0.5, bool copy false) ``` #### compress item doc **type** func **brief** JPEG compresses the image in place. **param** **quality**: The quality of the compressed image. default is 95.
    **return** Returns the compressed JPEG image **static** False **C++ defination code**: ```cpp image::Image *compress(int quality 95) ``` #### clear item doc **type** func **brief** Sets all pixels in the image to zero **param** **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *clear(image::Image *mask nullptr) ``` #### mask\\_rectange item doc **type** func **brief** Zeros a rectangular part of the image. If no arguments are supplied this method zeros the center of the image. **param** **x**: The x coordinate of the top left corner of the rectangle.
    **y**: The y coordinate of the top left corner of the rectangle.
    **w**: The width of the rectangle.
    **h**: The height of the rectangle.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mask_rectange(int x 1, int y 1, int w 1, int h 1) ``` #### mask\\_circle item doc **type** func **brief** Zeros a circular part of the image. If no arguments are supplied this method zeros the center of the image. **param** **x**: The x coordinate of the center of the circle.
    **y**: The y coordinate of the center of the circle.
    **radius**: The radius of the circle.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mask_circle(int x 1, int y 1, int radius 1) ``` #### mask\\_ellipse item doc **type** func **brief** Zeros a ellipse part of the image. If no arguments are supplied this method zeros the center of the image. **param** **x**: The x coordinate of the center of the ellipse.
    **y**: The y coordinate of the center of the ellipse.
    **radius_x**: The radius of the ellipse in the x direction.
    **radius_y**: The radius of the ellipse in the y direction.
    **rotation_angle_in_degrees**: The rotation angle of the ellipse in degrees.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mask_ellipse(int x 1, int y 1, int radius_x 1, int radius_y 1, float rotation_angle_in_degrees 0) ``` #### binary item doc **type** func **brief** Sets all pixels in the image to black or white depending on if the pixel is inside of a threshold in the threshold list thresholds or not. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the thresholds will be inverted before the operation. default is false.
    **zero**: If zero is true, the image will be set the pixels within the threshold to 0, other pixels remain unchanged. If zero is false, the image will be set to black or white. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **to_bitmap**: If true, the image will be converted to a bitmap image before thresholding. default is false. TODO: support in the feature
    **copy**: Select whether to return a new image or modify the original image. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *binary(std::vector> thresholds std::vector>(), bool invert false, bool zero false, image::Image *mask nullptr, bool to_bitmap false, bool copy false) ``` #### invert item doc **type** func **brief** Inverts the image in place. **return** Returns the image after the operation is completed **static** False **C++ defination code**: ```cpp image::Image *invert() ``` #### b\\_and item doc **type** func **brief** Performs a bitwise and operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_and(image::Image *other, image::Image *mask nullptr) ``` #### b\\_nand item doc **type** func **brief** Performs a bitwise nand operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_nand(image::Image *other, image::Image *mask nullptr) ``` #### b\\_or item doc **type** func **brief** Performs a bitwise or operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_or(image::Image *other, image::Image *mask nullptr) ``` #### b\\_nor item doc **type** func **brief** Performs a bitwise nor operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_nor(image::Image *other, image::Image *mask nullptr) ``` #### b\\_xor item doc **type** func **brief** Performs a bitwise xor operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_xor(image::Image *other, image::Image *mask nullptr) ``` #### b\\_xnor item doc **type** func **brief** Performs a bitwise xnor operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_xnor(image::Image *other, image::Image *mask nullptr) ``` #### awb item doc **type** func **brief** Performs an auto white balance operation on the image. TODO: support in the feature **param** **max**: if True uses the white patch algorithm instead. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *awb(bool max false) ``` #### ccm item doc **type** func **brief** Multiples the passed (3x3) or (4x3) floating point color correction matrix with the image.\\nnote: Grayscale format is not support. **param** **matrix**: The color correction matrix to use. 3x3 or 4x3 matrix.
    Weights may either be positive or negative, and the sum of each column in the 3x3 matrix should generally be 1.
    example:
    {
    1, 0, 0,
    0, 1, 0,
    0, 0, 1,
    }
    Where the last row of the 4x3 matrix is an offset per color channel. If you add an offset you may wish to make the
    weights sum to less than 1 to account for the offset.
    example:
    {
    1, 0, 0,
    0, 1, 0,
    0, 0, 1,
    0, 0, 0,
    }
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *ccm(std::vector &matrix) ``` #### gamma item doc **type** func **brief** Quickly changes the image gamma, contrast, and brightness. Create a array whose size is usually 255,\\nand use the parameters gamma, contrast, and brightness to calculate the value of the array, and then map the\\nimage pixel value through the value of the array.\\nThe calculation method for array is: array[array_idx] (powf((array_idx / 255.0), (1 / gamma)) * contrast + brightness) * scale,\\n`powf` is a function used to calculate floating point power.\\n`array` is the array used for mapping.\\n`array_idx` is the index of the array, the maximum value is determined according to the image format, usually 255.\\n`scale` is a constant, the value is determined by the image format, usually 255.\\nMapping method:\\nAssume that a pixel value in the image is 128, then map the pixel value to the value of array[128]\\nUsers can adjust the value of the array through the gamma, contrast, and brightness parameters. **param** **gamma**: The contrast gamma greater than 1.0 makes the image darker in a non linear manner while less than 1.0 makes the image brighter. default is 1.0.
    **contrast**: The contrast value greater than 1.0 makes the image brighter in a linear manner while less than 1.0 makes the image darker. default is 1.0.
    **brightness**: The brightness value greater than 0.0 makes the image brighter in a constant manner while less than 0.0 makes the image darker. default is 0.0.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *gamma(double gamma 1.0, double contrast 1.0, double brightness 0.0) ``` #### gamma\\_corr item doc **type** func **brief** Alias for Image.gamma. **param** **gamma**: The contrast gamma greater than 1.0 makes the image darker in a non linear manner while less than 1.0 makes the image brighter. default is 1.0.
    **contrast**: The contrast value greater than 1.0 makes the image brighter in a linear manner while less than 1.0 makes the image darker. default is 1.0.
    **brightness**: The brightness value greater than 0.0 makes the image brighter in a constant manner while less than 0.0 makes the image darker. default is 0.0.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *gamma_corr(double gamma, double contrast 1.0, double brightness 0.0) ``` #### negate item doc **type** func **brief** Flips (numerically inverts) all pixels values in an image **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *negate() ``` #### replace item doc **type** func **brief** Replaces all pixels in the image with the corresponding pixels in the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **hmirror**: If true, the image will be horizontally mirrored before the operation. default is false.
    **vflip**: If true, the image will be vertically flipped before the operation. default is false.
    **transpose**: If true, the image can be used to rotate 90 degrees or 270 degrees.
    hmirror false, vflip false, transpose false, the image will not be rotated.
    hmirror false, vflip true, transpose true, the image will be rotated 90 degrees.
    hmirror true, vflip true, transpose false, the image will be rotated 180 degrees.
    hmirror true, vflip false, transpose true, the image will be rotated 270 degrees.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *replace(image::Image *other nullptr, bool hmirror false, bool vflip false, bool transpose false, image::Image *mask nullptr) ``` #### set item doc **type** func **brief** Alias for Image::replace. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **hmirror**: If true, the image will be horizontally mirrored before the operation. default is false.
    **vflip**: If true, the image will be vertically flipped before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *set(image::Image *other, bool hmirror false, bool vflip false, bool transpose false, image::Image *mask nullptr) ``` #### add item doc **type** func **brief** Adds the other image to the image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *add(image::Image *other, image::Image *mask nullptr) ``` #### sub item doc **type** func **brief** Subtracts the other image from the image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **reverse**: If true, the image will be reversed before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *sub(image::Image *other, bool reverse false, image::Image *mask nullptr) ``` #### mul item doc **type** func **brief** Multiplies the image by the other image.\\nNote: This method is meant for image blending and cannot multiply the pixels in the image by a scalar like 2. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **invert**: If true, the image will be change the multiplication operation from a*b to 1/((1/a)*(1/b)).
    In particular, this lightens the image instead of darkening it (e.g. multiply versus burn operations). default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mul(image::Image *other, bool invert false, image::Image *mask nullptr) ``` #### div item doc **type** func **brief** Divides the image by the other image.\\nThis method is meant for image blending and cannot divide the pixels in the image by a scalar like 2. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **invert**: If true, the image will be change the division direction from a/b to b/a. default is false.
    **mod**: If true, the image will be change the division operation to the modulus operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *div(image::Image *other, bool invert false, bool mod false, image::Image *mask nullptr) ``` #### min item doc **type** func **brief** Caculate the minimum of each pixel in the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *min(image::Image *other, image::Image *mask nullptr) ``` #### max item doc **type** func **brief** Caculate the maximum of each pixel in the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *max(image::Image *other, image::Image *mask nullptr) ``` #### difference item doc **type** func **brief** Caculate the absolute value of the difference between each pixel in the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *difference(image::Image *other, image::Image *mask nullptr) ``` #### blend item doc **type** func **brief** Blends the image with the other image.\\nres alpha * this_img / 256 + (256 alpha) * other_img / 256 **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **alpha**: The alpha value of the blend, the value range is [0, 256],default is 128.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *blend(image::Image *other, int alpha 128, image::Image *mask nullptr) ``` #### histeq item doc **type** func **brief** Runs the histogram equalization algorithm on the image. **param** **adaptive**: If true, an adaptive histogram equalization method will be run on the image instead which as generally better results than non adaptive histogram qualization but a longer run time. default is false.
    **clip_limit**: Provides a way to limit the contrast of the adaptive histogram qualization. Use a small value for this, like 10, to produce good histogram equalized contrast limited images. default is 1.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *histeq(bool adaptive false, int clip_limit 1, image::Image *mask nullptr) ``` #### mean item doc **type** func **brief** Standard mean blurring filter using a box filter.\\nThe parameters offset and invert are valid when threshold is True. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mean(int size, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### median item doc **type** func **brief** Runs the median filter on the image. The median filter is the best filter for smoothing surfaces while preserving edges but it is very slow. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **percentile**: This parameter controls the percentile of the value used in the kernel. You can set this to 0 for a min filter, 0.25 for a lower quartile filter, 0.75 for an upper quartile filter, and 1.0 for a max filter. default is 0.5.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *median(int size, double percentile 0.5, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### mode item doc **type** func **brief** Runs the mode filter on the image by replacing each pixel with the mode of their neighbors. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mode(int size, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### midpoint item doc **type** func **brief** Runs the midpoint filter on the image.This filter finds the midpoint (max * bias + min * (1 bias)) of each pixel neighborhood in the image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **bias**: The bias of the midpoint. default is 0.5.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *midpoint(int size, double bias 0.5, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### morph item doc **type** func **brief** Convolves the image by a filter kernel. This allows you to do general purpose convolutions on an image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **kernel**: The kernel used for convolution. The kernel should be a list of lists of numbers. The kernel should be the same size as the actual kernel size.
    **mul**: This parameter is used to multiply the convolved pixel results. default is auto.
    **add**: This parameter is the value to be added to each convolution pixel result. default is 0.0.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *morph(int size, std::vector kernel, float mul 1, float add 0.0, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### gaussian item doc **type** func **brief** Convolves the image by a smoothing guassian kernel. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **unsharp**: If true, this method will perform an unsharp mask operation instead of gaussian filtering operation, this improves the clarity of image edges. default is false.
    **mul**: This parameter is used to multiply the convolved pixel results. default is auto.
    **add**: This parameter is the value to be added to each convolution pixel result. default is 0.0.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *gaussian(int size, bool unsharp false, float mul 1, float add 0.0, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### laplacian item doc **type** func **brief** Convolves the image by a edge detecting laplacian kernel. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **sharpen**: If True, this method will sharpen the image instead of an unthresholded edge detection image. Then increase the kernel size to improve image clarity. default is false.
    **mul**: This parameter is used to multiply the convolved pixel results. default is auto.
    **add**: This parameter is the value to be added to each convolution pixel result. default is 0.0.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *laplacian(int size, bool sharpen false, float mul 1, float add 0.0, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### bilateral item doc **type** func **brief** Convolves the image by a bilateral filter. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **color_sigma**: Controls how closely colors are matched using the bilateral filter. default is 0.1.
    **space_sigma**: Controls how closely pixels space wise are blurred with each other. default is 1.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *bilateral(int size, double color_sigma 0.1, double space_sigma 1, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### linpolar item doc **type** func **brief** Re project’s and image from cartessian coordinates to linear polar coordinates. **param** **reverse**: If true, the image will be reverse polar transformed. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *linpolar(bool reverse false) ``` #### logpolar item doc **type** func **brief** Re project’s and image from cartessian coordinates to log polar coordinates. **param** **reverse**: If true, the image will be reverse polar transformed. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *logpolar(bool reverse false) ``` #### lens\\_corr item doc **type** func **brief** Performs a lens correction operation on the image. TODO: support in the feature **param** **strength**: The strength of the lens correction. default is 1.8.
    **zoom**: The zoom of the lens correction. default is 1.0.
    **x_corr**: The x correction of the lens correction. default is 0.5.
    **y_corr**: The y correction of the lens correction. default is 0.5.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *lens_corr(double strength 1.8, double zoom 1.0, double x_corr 0.5, double y_corr 0.5) ``` #### rotation\\_corr item doc **type** func **brief** Performs a rotation correction operation on the image. TODO: support in the feature **param** **x_rotation**: The x rotation of the rotation correction. default is 0.0.
    **y_rotation**: The y rotation of the rotation correction. default is 0.0.
    **z_rotation**: The z rotation of the rotation correction. default is 0.0.
    **x_translation**: The x translation of the rotation correction. default is 0.0.
    **y_translation**: The y translation of the rotation correction. default is 0.0.
    **zoom**: The zoom of the rotation correction. default is 1.0.
    **fov**: The fov of the rotation correction. default is 60.0.
    **corners**: The corners of the rotation correction. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *rotation_corr(double x_rotation 0.0, double y_rotation 0.0, double z_rotation 0.0, double x_translation 0.0, double y_translation 0.0, double zoom 1.0, double fov 60.0, std::vector corners std::vector()) ``` #### get\\_histogram item doc **type** func **brief** Gets the histogram of the image. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the thresholds will be inverted before the operation. default is false.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **bins**: The number of bins to use for the histogram.
    In GRAYSCALE format, setting range is [2, 256], default is 100.
    In rgb888 format, setting range is [2, 100], default is 100.
    **l_bins**: The number of bins to use for the l channel of the histogram. Only valid in RGB888 format.
    If an invalid value is set, bins will be used instead. The setting range is [2, 100], default is 100.
    **a_bins**: The number of bins to use for the a channel of the histogram.
    Only valid in RGB888 format.The setting range is [2, 256], default is 256.
    **b_bins**: The number of bins to use for the b channel of the histogram.
    Only valid in RGB888 format. The setting range is [2, 256], default is 256.
    **difference**: difference may be set to an image object to cause this method to operate on the difference image between the current image and the difference image object.
    default is None.
    **return** Returns the histogram of the image **static** False **C++ defination code**: ```cpp std::map> get_histogram(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int bins 1, int l_bins 100, int a_bins 256, int b_bins 256, image::Image *difference nullptr) ``` #### get\\_statistics item doc **type** func **brief** Gets the statistics of the image. TODO: support in the feature **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **bins**: The number of bins to use for the statistics. default is 1.
    **l_bins**: The number of bins to use for the l channel of the statistics. default is 1.
    **a_bins**: The number of bins to use for the a channel of the statistics. default is 1.
    **b_bins**: The number of bins to use for the b channel of the statistics. default is 1.
    **difference**: The difference image to use for the statistics. default is None.
    **return** Returns the statistics of the image **static** False **C++ defination code**: ```cpp image::Statistics get_statistics(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int bins 1, int l_bins 1, int a_bins 1, int b_bins 1, image::Image *difference nullptr) ``` #### get\\_regression item doc **type** func **brief** Gets the regression of the image. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: The x stride to use for the regression. default is 2.
    **y_stride**: The y stride to use for the regression. default is 1.
    **area_threshold**: The area threshold to use for the regression. default is 10.
    **pixels_threshold**: The pixels threshold to use for the regression. default is 10.
    **robust**: If true, the regression will be robust. default is false.
    **return** Returns the regression of the image **static** False **C++ defination code**: ```cpp std::vector get_regression(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int x_stride 2, int y_stride 1, int area_threshold 10, int pixels_threshold 10, bool robust false) ``` #### save item doc **type** func **brief** Save image to file **param** **path**: file path
    **quality**: image quality, by default(value is 95), support jpeg and png format
    **return** error code, err::ERR_NONE is ok, other is error **static** False **C++ defination code**: ```cpp err::Err save(const char *path, int quality 95) ``` #### flood\\_fill item doc **type** func **brief** Flood fills a region of the image starting from location x, y. **param** **x**: The x coordinate of the seed point.
    **y**: The y coordinate of the seed point.
    **seed_threshold**: The seed_threshold value controls how different any pixel in the fill area may be from the original starting pixel. default is 0.05.
    **floating_threshold**: The floating_threshold value controls how different any pixel in the fill area may be from any neighbor pixels. default is 0.05.
    **color**: The color to fill the region with. default is white.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **clear_background**: If true, the background will be cleared before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None. FIXME: the mask image works abnormally
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *flood_fill(int x, int y, float seed_threshold 0.05, float floating_threshold 0.05, image::Color color image::COLOR_WHITE, bool invert false, bool clear_background false, image::Image *mask nullptr) ``` #### erode item doc **type** func **brief** Erodes the image in place. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: The number of pixels in the kernel that are not 0. If it is less than or equal to the threshold, set the center pixel to black. default is (kernel_size 1).
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *erode(int size, int threshold 1, image::Image *mask nullptr) ``` #### dilate item doc **type** func **brief** Dilates the image in place. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: The number of pixels in the kernel that are not 0. If it is greater than or equal to the threshold, set the center pixel to white. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *dilate(int size, int threshold 0, image::Image *mask nullptr) ``` #### open item doc **type** func **brief** Performs erosion and dilation on an image in order. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for erosion and dilation, the actual threshold for erosion is (kernel_size 1 threshold), the actual threshold for dialation is threshold. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *open(int size, int threshold 0, image::Image *mask nullptr) ``` #### close item doc **type** func **brief** Performs dilation and erosion on an image in order. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for erosion and dilation, the actual threshold for erosion is (kernel_size 1 threshold), the actual threshold for dialation is threshold. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *close(int size, int threshold 0, image::Image *mask nullptr) ``` #### top\\_hat item doc **type** func **brief** Returns the image difference of the image and Image.open()’ed image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for open method. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *top_hat(int size, int threshold 0, image::Image *mask nullptr) ``` #### black\\_hat item doc **type** func **brief** Returns the image difference of the image and Image.close()’ed image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for close method. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *black_hat(int size, int threshold 0, image::Image *mask nullptr) ``` #### find\\_blobs item doc **type** func **brief** Finds all blobs in the image and returns a list of image.Blob class which describe each Blob.\\nPlease see the image.Blob object more more information. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: if true, will invert thresholds before find blobs, default is false
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: x stride is the number of x pixels to skip when doing the hough transform. default is 2
    **y_stride**: y_stride is the number of y pixels to skip when doing the hough transform. default is 1
    **area_threshold**: area threshold, if the blob area is smaller than area_threshold, the blob is not returned, default is 10
    **pixels_threshold**: pixels threshold, if the blob pixels is smaller than area_threshold, the blob is not returned,, default is 10.
    when x_stride and y_stride is equal to 1, pixels_threshold is equivalent to area_threshold
    **merge**: if True merges all not filtered out blobs whos bounding rectangles intersect each other. default is false
    **margin**: margin can be used to increase or decrease the size of the bounding rectangles for blobs during the intersection test.
    For example, with a margin of 1 blobs whos bounding rectangles are 1 pixel away from each other will be merged. default is 0
    **x_hist_bins_max**: if set to non zero populates a histogram buffer in each blob object with an x_histogram projection of all columns in the object. This value then sets the number of bins for that projection.
    **y_hist_bins_max**: if set to non zero populates a histogram buffer in each blob object with an y_histogram projection of all rows in the object. This value then sets the number of bins for that projection.
    **return** Return the blob when found blobs, format is (blob1, blob2, ...), you can use blob class methods to do more operations. **static** False **C++ defination code**: ```cpp std::vector find_blobs(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int x_stride 2, int y_stride 1, int area_threshold 10, int pixels_threshold 10, bool merge false, int margin 0, int x_hist_bins_max 0, int y_hist_bins_max 0) ``` #### find\\_lines item doc **type** func **brief** Find lines in image **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: x stride is the number of x pixels to skip when doing the hough transform. default is 2
    **y_stride**: y_stride is the number of y pixels to skip when doing the hough transform. default is 1
    **threshold**: threshold threshold controls what lines are detected from the hough transform. Only lines with a magnitude greater than or equal to threshold are returned.
    The right value of threshold for your application is image dependent. default is 1000.
    **theta_margin**: theta_margin controls the merging of detected lines. default is 25.
    **rho_margin**: rho_margin controls the merging of detected lines. default is 25.
    **return** Return the line when found lines, format is (line1, line2, ...), you can use line class methods to do more operations **static** False **C++ defination code**: ```cpp std::vector find_lines(std::vector roi std::vector(), int x_stride 2, int y_stride 1, double threshold 1000, double theta_margin 25, double rho_margin 25) ``` #### find\\_line\\_segments item doc **type** func **brief** Finds all line segments in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **merge_distance**: The maximum distance between two lines to merge them. default is 0.
    **max_theta_difference**: The maximum difference between two lines to merge them. default is 15.
    **return** Return the line when found lines, format is (line1, line2, ...), you can use line class methods to do more operations **static** False **C++ defination code**: ```cpp std::vector find_line_segments(std::vector roi std::vector(), int merge_distance 0, int max_theta_difference 15) ``` #### find\\_circles item doc **type** func **brief** Find circles in image **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: x stride is the number of x pixels to skip when doing the hough transform. default is 2
    **y_stride**: y_stride is the number of y pixels to skip when doing the hough transform. default is 1
    **threshold**: threshold controls what circles are detected from the hough transform. Only circles with a magnitude greater than or equal to threshold are returned.
    The right value of threshold for your application is image dependent.
    **x_margin**: x_margin controls the merging of detected circles. Circles which are x_margin, y_margin, and r_margin pixels apart are merged. default is 10
    **y_margin**: y_margin controls the merging of detected circles. Circles which are x_margin, y_margin, and r_margin pixels apart are merged. default is 10
    **r_margin**: r_margin controls the merging of detected circles. Circles which are x_margin, y_margin, and r_margin pixels apart are merged. default is 10
    **r_min**: r_min controls the minimum circle radius detected. Increase this to speed up the algorithm. default is 2
    **r_max**: r_max controls the maximum circle radius detected. Decrease this to speed up the algorithm. default is min(roi.w / 2, roi.h / 2)
    **r_step**: r_step controls how to step the radius detection by. default is 2.
    **return** Return the circle when found circles, format is (circle1, circle2, ...), you can use circle class methods to do more operations **static** False **C++ defination code**: ```cpp std::vector find_circles(std::vector roi std::vector(), int x_stride 2, int y_stride 1, int threshold 2000, int x_margin 10, int y_margin 10, int r_margin 10, int r_min 2, int r_max 1, int r_step 2) ``` #### find\\_rects item doc **type** func **brief** Finds all rects in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **threshold**: The threshold to use for the rects. default is 10000.
    **return** Returns the rects of the image **static** False **C++ defination code**: ```cpp std::vector find_rects(std::vector roi std::vector(), int threshold 10000) ``` #### find\\_qrcodes item doc **type** func **brief** Finds all qrcodes in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the qrcodes of the image **static** False **C++ defination code**: ```cpp std::vector find_qrcodes(std::vector roi std::vector()) ``` #### find\\_apriltags item doc **type** func **brief** Finds all apriltags in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **families**: The families to use for the apriltags. default is TAG36H11.
    **fx**: The camera X focal length in pixels, default is 1.
    **fy**: The camera Y focal length in pixels, default is 1.
    **cx**: The camera X center in pixels, default is image.width / 2.
    **cy**: The camera Y center in pixels, default is image.height / 2.
    **return** Returns the apriltags of the image **static** False **C++ defination code**: ```cpp std::vector find_apriltags(std::vector roi std::vector(), image::ApriltagFamilies families image::ApriltagFamilies::TAG36H11, float fx 1, float fy 1, int cx 1, int cy 1) ``` #### find\\_datamatrices item doc **type** func **brief** Finds all datamatrices in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **effort**: Controls how much time to spend trying to find data matrix matches. default is 200.
    **return** Returns the datamatrices of the image **static** False **C++ defination code**: ```cpp std::vector find_datamatrices(std::vector roi std::vector(), int effort 200) ``` #### find\\_barcodes item doc **type** func **brief** Finds all barcodes in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the barcodes of the image **static** False **C++ defination code**: ```cpp std::vector find_barcodes(std::vector roi std::vector()) ``` #### find\\_displacement item doc **type** func **brief** Finds the displacement between the image and the template. TODO: support in the feature\\nnote: this method must be used on power of 2 image sizes **param** **template_image**: The template image.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **template_roi**: The region of interest rectangle (x, y, w, h) to work in. If not specified, it is equal to the image rectangle.
    **logpolar**: If true, it will instead find rotation and scale changes between the two images. default is false.
    **return** Returns the displacement of the image **static** False **C++ defination code**: ```cpp image::Displacement find_displacement(image::Image &template_image, std::vector roi std::vector(), std::vector template_roi std::vector(), bool logpolar false) ``` #### find\\_template item doc **type** func **brief** Finds the template in the image. **param** **template_image**: The template image.
    **threshold**: Threshold is floating point number (0.0 1.0) where a higher threshold prevents false positives while lowering the detection rate while a lower threshold does the opposite.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image. Only valid in SEARCH_EX mode.
    **step**: The step size to use for the template. default is 2. Only valid in SEARCH_EX mode
    **search**: The search method to use for the template. default is SEARCH_EX.
    **return** Returns a bounding box tuple (x, y, w, h) for the matching location otherwise None. **static** False **C++ defination code**: ```cpp std::vector find_template(image::Image &template_image, float threshold, std::vector roi std::vector(), int step 2, image::TemplateMatch search image::TemplateMatch::SEARCH_EX) ``` #### find\\_features item doc **type** func **brief** Finds the features in the image. TODO: support in the feature **param** **cascade**: The cascade to use for the features. default is CASCADE_FRONTALFACE_ALT.
    **threshold**: The threshold to use for the features. default is 0.5.
    **scale**: The scale to use for the features. default is 1.5.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the features of the image **static** False **C++ defination code**: ```cpp std::vector find_features(int cascade, float threshold 0.5, float scale 1.5, std::vector roi std::vector()) ``` #### find\\_lbp item doc **type** func **brief** Finds the lbp in the image. TODO: support in the feature. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the lbp of the image **static** False **C++ defination code**: ```cpp image::LBPKeyPoint find_lbp(std::vector roi std::vector()) ``` #### find\\_keypoints item doc **type** func **brief** Finds the keypoints in the image. TODO: support in the feature. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **threshold**: The threshold to use for the keypoints. default is 20.
    **normalized**: If true, the image will be normalized before the operation. default is false.
    **scale_factor**: The scale factor to use for the keypoints. default is 1.5.
    **max_keypoints**: The maximum number of keypoints to use for the keypoints. default is 100.
    **corner_detector**: The corner detector to use for the keypoints. default is CORNER_AGAST.
    **return** Returns the keypoints of the image **static** False **C++ defination code**: ```cpp image::ORBKeyPoint find_keypoints(std::vector roi std::vector(), int threshold 20, bool normalized false, float scale_factor 1.5, int max_keypoints 100, image::CornerDetector corner_detector image::CornerDetector::CORNER_AGAST) ``` #### find\\_edges item doc **type** func **brief** Finds the edges in the image. **param** **edge_type**: The edge type to use for the edges. default is EDGE_CANNY.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **threshold**: The threshold to use for the edges. default is 20.
    **return** Returns the edges of the image **static** False **C++ defination code**: ```cpp image::Image* find_edges(image::EdgeDetector edge_type, std::vector roi std::vector(), std::vector threshold std::vector({100, 200})) ``` #### find\\_hog item doc **type** func **brief** Finds the hog in the image. TODO: support in the feature **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **size**: The size to use for the hog. default is 8.
    **return** Returns the hog of the image **static** False **C++ defination code**: ```cpp image::Image* find_hog(std::vector roi std::vector(), int size 8) ``` #### match\\_lbp\\_descriptor item doc **type** func **brief** Matches the lbp descriptor of the image. TODO: support in the feature **param** **desc1**: The descriptor to use for the match.
    **desc2**: The descriptor to use for the match.
    **return** Returns the match of the image **static** False **C++ defination code**: ```cpp int match_lbp_descriptor(image::LBPKeyPoint &desc1, image::LBPKeyPoint &desc2) ``` #### match\\_orb\\_descriptor item doc **type** func **brief** Matches the orb descriptor of the image. TODO: support in the feature **param** **desc1**: The descriptor to use for the match.
    **desc2**: The descriptor to use for the match.
    **threshold**: The threshold to use for the match. default is 95.
    **filter_outliers**: If true, the image will be filter_outliers before the operation. default is false.
    **return** Returns the match of the image **static** False **C++ defination code**: ```cpp image::KPTMatch match_orb_descriptor(image::ORBKeyPoint &desc1, image::ORBKeyPoint &desc2, int threshold 95, bool filter_outliers false) ```"}} \ No newline at end of file +{"/maixpy/api/maix/nn/F.html":{"title":"maix.nn.F","content":" title: maix.nn.F maix.nn.F module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.nn.F` to access this module. ## Module No module ## Enum ## Variable ## Function ### softmax item doc **brief** Softmax, only support 1D tensor, multi dimension tensor will be treated as 1D tensor **param** **tensor**: input tensor
    **replace**: change input tensor data directly, if not, will create a new tensor
    **throw** If arg error, will raise err.Exception error **return** output tensor, if arg replace is true, return the arg tensor's address.
    If not replace, return a new object, so In C++, you should delete it manually in this case! **C++ defination code**: ```cpp tensor::Tensor *softmax(tensor::Tensor *tensor, bool replace) ``` ## Class"},"/maixpy/api/maix/comm.html":{"title":"maix.comm","content":" title: maix.comm maix.comm module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.comm` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### CommProtocol item doc **brief** Class for communication protocol **C++ defination code**: ```cpp class CommProtocol ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new CommProtocol object **param** **buff_size**: buffer size, default to 1024 bytes
    **static** False **C++ defination code**: ```cpp CommProtocol(int buff_size 1024) ``` #### get\\_msg item doc **type** func **brief** Read data to buffer, and try to decode it as maix.protocol.MSG object **return** decoded data, if nullptr, means no valid frame found.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp protocol::MSG *get_msg() ``` #### resp\\_ok item doc **type** func **brief** Send response ok(success) message **param** **cmd**: CMD value
    **body**: response body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp err::Err resp_ok(uint8_t cmd, Bytes *body nullptr) ``` #### report item doc **type** func **brief** Send report message **param** **cmd**: CMD value
    **body**: report body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp err::Err report(uint8_t cmd, Bytes *body nullptr) ``` #### resp\\_err item doc **type** func **brief** Encode response error message to buffer **param** **cmd**: CMD value
    **code**: error code
    **msg**: error message
    **return** encoded data, if nullptr, means error, and the error code is err.Err.
    Attentioin, delete it after use in C++. **static** False **C++ defination code**: ```cpp err::Err resp_err(uint8_t cmd, err::Err code, const std::string &msg) ```"},"/maixpy/api/maix/rtsp.html":{"title":"maix.rtsp","content":" title: maix.rtsp maix.rtsp module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.rtsp` to access this module. ## Module No module ## Enum ### RtspStreamType item doc **brief** The stream type of rtsp **values** **RTSP_STREAM_NONE**: format invalid
    **RTSP_STREAM_H265**:
    **C++ defination code**: ```cpp enum RtspStreamType { RTSP_STREAM_NONE 0, // format invalid RTSP_STREAM_H265, } ``` ## Variable ## Function ## Class ### Rtsp item doc **brief** Rtsp class **C++ defination code**: ```cpp class Rtsp ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Video object **param** **ip**: rtsp ip
    **port**: rtsp port
    **fps**: rtsp fps
    **stream_type**: rtsp stream type
    **static** False **C++ defination code**: ```cpp Rtsp(std::string ip std::string(), int port 8554, int fps 30, rtsp::RtspStreamType stream_type rtsp::RtspStreamType::RTSP_STREAM_H265) ``` #### start item doc **type** func **brief** start rtsp **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err start() ``` #### start (overload 1) item doc **type** func **brief** stop rtsp **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err stop() ``` #### bind\\_camera item doc **type** func **brief** Bind camera **param** **camera**: camera object
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err bind_camera(camera::Camera *camera) ``` #### write item doc **type** func **brief** Write data to rtsp **param** **type**: rtsp stream type
    **data**: rtsp stream data
    **fps**: rtsp stream data size
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err write(video::VideoStream &stream) ``` #### get\\_url item doc **type** func **brief** Get url of rtsp **return** url of rtsp **static** False **C++ defination code**: ```cpp std::string get_url() ``` #### to\\_camera item doc **type** func **brief** Get camera object from rtsp **return** camera object **static** False **C++ defination code**: ```cpp camera::Camera *to_camera() ``` #### rtsp\\_is\\_start item doc **type** func **brief** return rtsp start status **return** true means rtsp is start, false means rtsp is stop. **static** False **C++ defination code**: ```cpp bool rtsp_is_start() ```"},"/maixpy/api/maix/util.html":{"title":"maix.util","content":" title: maix.util maix.util module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.util` to access this module. ## Module No module ## Enum ## Variable ## Function ### disable\\_kernel\\_debug item doc **brief** disable the kernel debug **C++ defination code**: ```cpp void disable_kernel_debug() ``` ### enable\\_kernel\\_debug item doc **brief** disable the kernel debug **C++ defination code**: ```cpp void enable_kernel_debug() ``` ## Class"},"/maixpy/api/maix/peripheral.html":{"title":"maix.peripheral","content":" title: maix.peripheral Chip's peripheral driver > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral` to access this module. ## Module module brief [timer](./peripheral/timer.html) maix.peripheral.timer module [wdt](./peripheral/wdt.html) maix.peripheral.wdt module [pwm](./peripheral/pwm.html) maix.peripheral.pwm module [gpio](./peripheral/gpio.html) maix.peripheral.gpio module [spi](./peripheral/spi.html) maix.peripheral.spi module [uart](./peripheral/uart.html) maix uart peripheral driver [key](./peripheral/key.html) maix.peripheral.key module [i2c](./peripheral/i2c.html) maix.peripheral.i2c module [adc](./peripheral/adc.html) maix.peripheral.adc module ## Enum ## Variable ## Function ## Class"},"/maixpy/api/maix/app.html":{"title":"maix.app","content":" title: maix.app maix.app module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.app` to access this module. ## Module No module ## Enum ## Variable ## Function ### app\\_id item doc **brief** Get current APP ID. **return** APP ID. **C++ defination code**: ```cpp string app_id() ``` ### set\\_app\\_id item doc **brief** Set current APP ID. **param** **app_id**: APP ID.
    **C++ defination code**: ```cpp string set_app_id(const string &app_id) ``` ### get\\_apps\\_info\\_path item doc **brief** Get APP info file path. **C++ defination code**: ```cpp string get_apps_info_path() ``` ### get\\_apps\\_info item doc **brief** Get APP info list. **param** **ignore_launcher**: if true, ignore launcher APP. default false.
    **ignore_app_store**: if true, ignore app store APP. default false.
    **return** APP info list. APP_Info object list. **C++ defination code**: ```cpp vector &get_apps_info(bool ignore_launcher false, bool ignore_app_store false) ``` ### get\\_app\\_data\\_path item doc **brief** Get APP info, APP can store private data in this directory. **return** APP data path \"./data\", just return the data folder in current path because APP executed in app install path or project path.
    So, you must execute your program in you project path to use the project/data folder when you debug your APP. **C++ defination code**: ```cpp string get_app_data_path() ``` ### get\\_app\\_path item doc **brief** Get APP path. **param** **app_id**: APP ID, if empty, return current APP path, else return the APP path by app_id.
    **return** APP path, just return the current path because APP executed in app install path or project path.
    So, you must execute your program in you project path to use the project/data folder when you debug your APP. **C++ defination code**: ```cpp string get_app_path(const string &app_id \"\") ``` ### get\\_tmp\\_path item doc **brief** Get global temporary data path, APPs can use this path as temporary data directory. **return** temporary data path. **C++ defination code**: ```cpp string get_tmp_path() ``` ### get\\_share\\_path item doc **brief** Get data path of share, shared data like picture and video will put in this directory **return** share data path. **C++ defination code**: ```cpp string get_share_path() ``` ### get\\_picture\\_path item doc **brief** Get picture path of share, shared picture will put in this directory **return** share picture path. **C++ defination code**: ```cpp string get_picture_path() ``` ### get\\_video\\_path item doc **brief** Get video path of share, shared video will put in this directory **return** share video path. **C++ defination code**: ```cpp string get_video_path() ``` ### get\\_font\\_path item doc **brief** Get font path of share, shared font will put in this directory **return** share font path. **C++ defination code**: ```cpp string get_font_path() ``` ### get\\_icon\\_path item doc **brief** Get icon path of share, shared icon will put in this directory **return** share icon path. **C++ defination code**: ```cpp string get_icon_path() ``` ### get\\_sys\\_config\\_kv item doc **brief** Get system config item value. **param** **item**: name of setting item, e.g. wifi, language. more see settings APP.
    **key**: config key, e.g. for wifi, key can be ssid, for language, key can be locale.
    **value**: default value, if not found, return this value.
    **from_cache**: if true, read from cache, if false, read from file.
    **return** config value, always string type, if not found, return empty string. **C++ defination code**: ```cpp string get_sys_config_kv(const string &item, const string &key, const string &value \"\", bool from_cache true) ``` ### get\\_app\\_config\\_kv item doc **brief** Get APP config item value. **param** **item**: name of setting item, e.g. user_info
    **key**: config key, e.g. for user_info, key can be name, age etc.
    **value**: default value, if not found, return this value.
    **from_cache**: if true, read from cache, if false, read from file.
    **return** config value, always string type, if not found, return empty string. **C++ defination code**: ```cpp string get_app_config_kv(const string &item, const string &key, const string &value \"\", bool from_cache true) ``` ### set\\_app\\_config\\_kv item doc **brief** Set APP config item value. **param** **item**: name of setting item, e.g. user_info
    **key**: config key, e.g. for user_info, key can be name, age etc.
    **value**: config value, always string type.
    **write_file**: if true, write to file, if false, just write to cache.
    **return** err::Err **C++ defination code**: ```cpp err::Err set_app_config_kv(const string &item, const string &key, const string &value, bool write_file true) ``` ### get\\_app\\_config\\_path item doc **brief** Get APP config path, ini format, so you can use your own ini parser to parse it like `configparser` in Python.\\nAll APP config info is recommended to store in this file. **return** APP config path(ini format). **C++ defination code**: ```cpp string get_app_config_path() ``` ### set\\_exit\\_msg item doc **brief** Set APP exit code and exit message.\\nIf code ! 0, the launcher will show a dialog to user, and display the msg. **param** **code**: exit code, 0 means success, other means error, if code is 0, do nothing.
    **msg**: exit message, if code is 0, msg is not used.
    **return** exit code, the same as arg @code. **C++ defination code**: ```cpp err::Err set_exit_msg(err::Err code, const string &msg) ``` ### get\\_exit\\_msg item doc **brief** Get APP exit code and exit message. **param** **cache**: if true, read from cache, if false, read from file. default false.
    **return** exit return app_id, exit code and exit message. **C++ defination code**: ```cpp tuple get_exit_msg(bool cache false) ``` ### have\\_exit\\_msg item doc **brief** Check if have exit msg **param** **cache**: if true, just check from cache, if false, check from file. default false.
    **return** true if have exit msg, false if not. **C++ defination code**: ```cpp bool have_exit_msg(bool cache false) ``` ### switch\\_app item doc **brief** Exit this APP and start another APP(by launcher).\\nCall this API will call set_exit_flag(true), you should check app::need_exit() in your code.\\nAnd exit this APP if app::need_exit() return true. **param** **app_id**: APP ID which will be started. app_id and idx must have one is valid.
    **idx**: APP index. app_id and idx must have one is valid.
    **C++ defination code**: ```cpp void switch_app(const string &app_id, int idx 1) ``` ### need\\_exit item doc **brief** Shoule this APP exit? **return** true if this APP should exit, false if not. **attention** This API is a function, not a variable. **C++ defination code**: ```cpp bool need_exit() ``` ### running item doc **brief** App should running? The same as !app::need_exit() (not app::need_exit() in MaixPy). **return** true if this APP should running, false if not. **attention** This API is a function, not a variable. **C++ defination code**: ```cpp bool running() ``` ### set\\_exit\\_flag item doc **brief** Set exit flag. You can get exit flag by app.need_exit(). **param** **exit**: true if this APP should exit, false if not.
    **C++ defination code**: ```cpp void set_exit_flag(bool exit) ``` ## Class ### Version item doc **brief** APP version **C++ defination code**: ```cpp class Version ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** Convert to string, e.g. 1.0.0 **static** False **C++ defination code**: ```cpp std::string __str__() ``` #### from\\_str item doc **type** func **brief** Convert from string, e.g. \\\"1.0.0\\\" **static** True **C++ defination code**: ```cpp static app::Version from_str(const string &version_str) ``` ### APP\\_Info item doc **brief** APP info **C++ defination code**: ```cpp class APP_Info ``` #### id item doc **type** var **brief** APP id **static** False **readonly** False **C++ defination code**: ```cpp string id ``` #### name item doc **type** var **brief** APP name **static** False **readonly** False **C++ defination code**: ```cpp string name ``` #### icon item doc **type** var **brief** APP icon **static** False **readonly** False **C++ defination code**: ```cpp string icon ``` #### version item doc **type** var **brief** APP version **static** False **readonly** False **C++ defination code**: ```cpp Version version ``` #### exec item doc **type** var **brief** APP exec **static** False **readonly** False **C++ defination code**: ```cpp string exec ``` #### author item doc **type** var **brief** APP author **static** False **readonly** False **C++ defination code**: ```cpp string author ``` #### desc item doc **type** var **brief** APP desc **static** False **readonly** False **C++ defination code**: ```cpp string desc ``` #### names item doc **type** var **brief** APP names **static** False **readonly** False **C++ defination code**: ```cpp map names ``` #### descs item doc **type** var **brief** APP descs **static** False **readonly** False **C++ defination code**: ```cpp map descs ```"},"/maixpy/api/index.html":{"title":"MaixPy API -- Maix AI machine vision platform Python API","content":" title: MaixPy API Maix AI machine vision platform Python API **You can read API doc at [MaixPy API on Sipeed Wiki](https://wiki.sipeed.com/maixpy/api/index.html)** If you want to preview API doc offline, build MaixPy, and API doc will be generated in `MaixPy/docs/api/` directory. > For MaixPy developer: This API documentation is generated from the source code, DO NOT edit this file manually! MaixPy API documentation, modules: module brief [maix.err](./maix/err.html) maix.err module [maix.tensor](./maix/tensor.html) maix.tensor module [maix.image](./maix/image.html) maix.image module, image related definition and functions [maix.camera](./maix/camera.html) maix.camera module, access camera device and get image from it [maix.display](./maix/display.html) maix.display module, control display device and show image on it [maix.comm](./maix/comm.html) maix.comm module [maix.thread](./maix/thread.html) maix.thread module [maix.fs](./maix/fs.html) maix.fs module [maix.sys](./maix/sys.html) maix.sys module [maix.time](./maix/time.html) maix.time module [maix.i18n](./maix/i18n.html) maix.i18n module [maix.protocol](./maix/protocol.html) maix.protocol module [maix.example](./maix/example.html) example module, this will be maix.example module in MaixPy, maix::example namespace in MaixCDK [maix.app](./maix/app.html) maix.app module [maix.util](./maix/util.html) maix.util module [maix.nn](./maix/nn.html) maix.nn module [maix.peripheral](./maix/peripheral.html) Chip's peripheral driver [maix.rtsp](./maix/rtsp.html) maix.rtsp module [maix.video](./maix/video.html) maix.video module [maix.touchscreen](./maix/touchscreen.html) maix.touchscreen module "},"/maixpy/api/maix/touchscreen.html":{"title":"maix.touchscreen","content":" title: maix.touchscreen maix.touchscreen module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.touchscreen` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### TouchScreen item doc **brief** TouchScreen class **C++ defination code**: ```cpp class TouchScreen ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new TouchScreen object **param** **device**: touchscreen device path, you can get devices by list_devices method, by default(value is NULL(None in MaixPy)) means the first device
    **open**: If true, touchscreen will automatically call open() after creation. default is true.
    **static** False **C++ defination code**: ```cpp TouchScreen(const std::string &device \"\", bool open true) ``` #### open item doc **type** func **brief** open touchscreen device **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err open() ``` #### close item doc **type** func **brief** close touchscreen device **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err close() ``` #### read item doc **type** func **brief** read touchscreen device **attention** This method will discard same event in buffer, that is:
    if too many move event in buffer when call this method, it will only return the last one,
    and if read pressed or released event, it will return immediately. **return** Returns a list include x, y, pressed state **static** False **C++ defination code**: ```cpp std::vector read() ``` #### read (overload 1) item doc **type** func **brief** read touchscreen device **attention** This method will return immediately if have event, so it's better to use available() to check if have more event in buffer,
    or too much event in buffer when your program call this read() interval is too long will make your program slow. **return** Returns a list include x, y, pressed state **static** False **C++ defination code**: ```cpp std::vector read0() ``` #### available item doc **type** func **brief** If we need to read from touchscreen, for event driven touchscreen means have event or not **param** **timeout**: 1 means block, 0 means no block, >0 means timeout, default is 0, unit is ms.
    **return** true if need to read(have event), false if not **static** False **C++ defination code**: ```cpp bool available(int timeout 0) ``` #### is\\_opened item doc **type** func **brief** Check if touchscreen is opened **return** true if touchscreen is opened, false if not **static** False **C++ defination code**: ```cpp bool is_opened() ```"},"/maixpy/api/maix/peripheral/wdt.html":{"title":"maix.peripheral.wdt","content":" title: maix.peripheral.wdt maix.peripheral.wdt module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.wdt` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### WDT item doc **brief** Peripheral wdt class **C++ defination code**: ```cpp class WDT ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** WDT constructor, after construct, the wdt will auto start. **param** **id**: direction [in], id of wdt, int type
    **feed_ms**: direction [in], feed interval, int type, unit is ms, you must feed wdt in this interval, or system will restart.
    **static** False **C++ defination code**: ```cpp WDT(int id, int feed_ms) ``` #### feed item doc **type** func **brief** feed wdt **return** error code, if feed success, return err::ERR_NONE **static** False **C++ defination code**: ```cpp int feed() ``` #### stop item doc **type** func **brief** stop wdt **static** False **C++ defination code**: ```cpp int stop() ``` #### restart item doc **type** func **brief** restart wdt, stop and start watchdog timer. **static** False **C++ defination code**: ```cpp int restart() ```"},"/maixpy/api/maix/peripheral/spi.html":{"title":"maix.peripheral.spi","content":" title: maix.peripheral.spi maix.peripheral.spi module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.spi` to access this module. ## Module No module ## Enum ### Mode item doc **brief** SPI mode enum **values** **MASTER**: spi master mode
    **SLAVE**: spi slave mode
    **C++ defination code**: ```cpp enum Mode { MASTER 0x0, // spi master mode SLAVE 0x1, // spi slave mode } ``` ## Variable ## Function ## Class ### SPI item doc **brief** Peripheral spi class **C++ defination code**: ```cpp class SPI ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** SPI constructor **param** **id**: direction [in], spi bus id, int type
    **freq**: direction [in], freq of spi, int type
    **soft_cs**: direction [in], not use hardware cs, bool type, if set true, you can operate cs pin use gpio manually.
    **mode**: direction [in], mode of spi, spi.Mode type, spi.Mode.MASTER or spi.Mode.SLAVE.
    **polarity**: direction [in], polarity of spi, 0 means idle level of clock is low, 1 means high, int type, default is 0.
    **phase**: direction [in], phase of spi, 0 means data is captured on the first edge of the SPI clock cycle, 1 means second, int type, default is 0.
    **bits**: direction [in], bits of spi, int type, default is 8.
    **cs**: direction [in], cs pin number, int type, default is 0, if SPI support multi hardware cs, you can set it to other value.
    **static** False **C++ defination code**: ```cpp SPI(int id, spi::Mode mode, int freq, bool soft_cs false, int polarity 0, int phase 0, int bits 8, int cs 0) ``` #### read item doc **type** func **brief** read data from spi **param** **length**: direction [in], read length, int type
    **return** bytes data, Bytes type in C++, bytes type in MaixPy. You need to delete it manually after use in C++. **static** False **C++ defination code**: ```cpp Bytes *read(int length) ``` #### write\\_read item doc **type** func **brief** write data to spi and read data from spi at the same time. **param** **data**: direction [in], data to write, Bytes type in C++, bytes type in MaixPy
    **read_len**: direction [in], read length, int type, should > 0.
    **return** read data, Bytes type in C++, bytes type in MaixPy. You need to delete it manually after use in C++. **static** False **C++ defination code**: ```cpp Bytes *write_read(Bytes *data, int read_len) ``` #### is\\_busy item doc **type** func **brief** get busy status of spi **return** busy status, bool type **static** False **C++ defination code**: ```cpp bool is_busy() ```"},"/maixpy/api/maix/example.html":{"title":"maix.example","content":" title: maix.example example module, this will be maix.example module in MaixPy, maix::example namespace in MaixCDK > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.example` to access this module. ## Module No module ## Enum ### Kind item doc **brief** Example enum **values** **KIND_NONE**: Kind none, value always 0, other enum value will auto increase
    **KIND_DOG**: Kind dog
    **KIND_CAT**: Kind cat, value is auto generated according to KING_DOG
    **KIND_BIRD**:
    **KIND_MAX**: Max Kind quantity
    You can get max Kind value by KIND_MAX 1
    **C++ defination code**: ```cpp enum Kind { KIND_NONE 0, /** Kind none, value always 0, other enum value will auto increase */ KIND_DOG, /** Kind dog*/ KIND_CAT, // Kind cat, value is auto generated according to KING_DOG KIND_BIRD, KIND_MAX /* Max Kind quantity, You can get max Kind value by KIND_MAX 1 */ } ``` ## Variable ### var1 item doc **brief** Example module variable **attention** It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake. **value** **\"Sipeed\"** **readonly** True **C++ defination code**: ```cpp const std::string var1 \"Sipeed\" ``` ### list\\_var item doc **brief** Tensor data type size in bytes **attention** **1**. DO NOT use C/C++ array directly for python API, the python wrapper not support it.
    Use std::vector instead.
    **2**. It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake.
    **value** **{
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9}** **readonly** True **C++ defination code**: ```cpp const std::vector list_var { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} ``` ### test\\_var item doc **brief** Example module variable test_var **attention** It's a copy of this variable in MaixPy, so if you change it in C++, it will not take effect in MaixPy.
    And change it in MaixPy will not take effect in C++ as well !!!
    If you want to use vars shared between C++ and MaixPy, you can create a class and use its member. **value** **100** **readonly** False **C++ defination code**: ```cpp int test_var 100 ``` ## Function ### hello item doc **brief** say hello to someone **param** **name**: direction [in], name of someone, string type
    **return** string type, content is hello + name **C++ defination code**: ```cpp std::string hello(std::string name) ``` ### change\\_arg\\_name item doc **brief** Change arg name example **param** **e**: Example object
    **return** same as arg **C++ defination code**: ```cpp example::Example *change_arg_name(example::Example *e) ``` ### change\\_arg\\_name2 item doc **brief** Change arg name example **param** **e**: Example object
    **C++ defination code**: ```cpp void change_arg_name2(example::Example &e) ``` ## Class ### Test item doc **brief** Test class **C++ defination code**: ```cpp class Test ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Test constructor **static** False **C++ defination code**: ```cpp Test() ``` ### Example item doc **brief** Example class\\nthis class will be export to MaixPy as maix.example.Example **C++ defination code**: ```cpp class Example ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Example constructor\\nthis constructor will be export to MaixPy as maix.example.Example.__init__ **param** **name**: direction [in], name of Example, string type
    **age**: direction [in], age of Example, int type, default is 18, value range is [0, 100]
    **attention** to make auto generate code work, param Kind should with full namespace name `example::Kind` instead of `Kind`,
    namespace `maix` can be ignored. **static** False **C++ defination code**: ```cpp Example(std::string &name, int age 18, example::Kind pet example::KIND_NONE) ``` #### get\\_name item doc **type** func **brief** get name of Example\\nyou can also get name by property `name`. **return** name of Example, string type **static** False **C++ defination code**: ```cpp std::string get_name() ``` #### get\\_age item doc **type** func **brief** get age of Example **return** age of Example, int type, value range is [0, 100] **static** False **C++ defination code**: ```cpp int get_age() ``` #### set\\_name item doc **type** func **brief** set name of Example **param** **name**: name of Example, string type
    **static** False **C++ defination code**: ```cpp void set_name(std::string name) ``` #### set\\_age item doc **type** func **brief** set age of Example **param** **age**: age of Example, int type, value range is [0, 100]
    **static** False **C++ defination code**: ```cpp void set_age(int age) ``` #### set\\_pet item doc **type** func **brief** Example enum member **attention** **static** False **C++ defination code**: ```cpp void set_pet(example::Kind pet) ``` #### get\\_pet item doc **type** func **brief** Example enum member **static** False **C++ defination code**: ```cpp example::Kind get_pet() ``` #### get\\_list item doc **type** func **brief** get list example **param** **in**: direction [in], input list, items are int type.
    In MaixPy, you can pass list or tuple to this API
    **return** list, items are int type, content is [1, 2, 3] + in. Alloc item, del in MaixPy will auto free memory. **static** False **C++ defination code**: ```cpp std::vector *get_list(std::vector in) ``` #### get\\_dict item doc **type** func **brief** Example dict API **param** **in**: direction [in], input dict, key is string type, value is int type.
    In MaixPy, you can pass `dict` to this API
    **return** dict, key is string type, value is int type, content is {\"a\": 1} + in
    In MaixPy, return type is `dict` object **static** False **C++ defination code**: ```cpp std::map get_dict(std::map &in) ``` #### hello item doc **type** func **brief** say hello to someone **param** **name**: name of someone, string type
    **return** string type, content is Example::hello_str + name **static** True **C++ defination code**: ```cpp static std::string hello(std::string name) ``` #### hello\\_bytes item doc **type** func **brief** param is bytes example **param** **bytes**: bytes type param
    **return** bytes type, return value is bytes changed value **static** True **C++ defination code**: ```cpp static Bytes *hello_bytes(Bytes &bytes) ``` #### callback item doc **type** func **brief** Callback example **param** **cb**: callback function, param is two int type, return is int type
    **return** int type, return value is cb(1, 2) **static** True **C++ defination code**: ```cpp static int callback(std::function cb) ``` #### hello\\_dict item doc **type** func **brief** Dict param example **param** **dict**: dict type param, key is string type, value is int type
    **static** True **C++ defination code**: ```cpp static std::map *hello_dict(std::map *dict) ``` #### name item doc **type** var **brief** name member of Example **static** False **readonly** False **C++ defination code**: ```cpp std::string name ``` #### age item doc **type** var **brief** age member of Example, value range should be [0, 100] **static** False **readonly** False **C++ defination code**: ```cpp int age ``` #### hello\\_str item doc **type** var **brief** hello_str member of Example, default value is \\\"hello \\\" **static** True **readonly** False **C++ defination code**: ```cpp static std::string hello_str ``` #### var1 item doc **type** var **brief** Example module readonly variable **static** False **readonly** True **C++ defination code**: ```cpp const std::string var1 \"Example.var1\" ``` #### var2 item doc **type** var **brief** Example module readonly variable **static** False **readonly** True **C++ defination code**: ```cpp std::string var2 \"Example.var2\" ``` #### dict\\_test item doc **type** func **brief** dict_test, return dict type, and element is pointer type(alloc in C++).\\nHere when the returned Tensor object will auto delete by Python GC. **static** True **C++ defination code**: ```cpp static std::map *dict_test() ```"},"/maixpy/api/maix/thread.html":{"title":"maix.thread","content":" title: maix.thread maix.thread module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.thread` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### Thread item doc **brief** thread class **C++ defination code**: ```cpp class Thread ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** create thread **param** **func**: direction [in], thread function, one `args` parameter, void* type, no return value
    **args**: direction [in], thread function parameter
    **static** False **C++ defination code**: ```cpp Thread(std::function func, void *args nullptr) ``` #### join item doc **type** func **brief** wait thread exit **static** False **C++ defination code**: ```cpp void join() ``` #### detach item doc **type** func **brief** detach thread **static** False **C++ defination code**: ```cpp void detach() ``` #### joinable item doc **type** func **brief** Check if thread is joinable **return** true if thread is joinable **static** False **C++ defination code**: ```cpp bool joinable() ```"},"/maixpy/api/maix/err.html":{"title":"maix.err","content":" title: maix.err maix.err module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.err` to access this module. ## Module No module ## Enum ### Err item doc **brief** Maix Error code **values** **ERR_NONE**: No error
    **ERR_ARGS**: Invalid arguments
    **ERR_NO_MEM**: No memory
    **ERR_NOT_IMPL**: Not implemented
    **ERR_NOT_READY**: Not ready
    **ERR_NOT_INIT**: Not initialized
    **ERR_NOT_OPEN**: Not opened
    **ERR_NOT_PERMIT**: Not permitted
    **ERR_REOPEN**: Re open
    **ERR_BUSY**: Busy
    **ERR_READ**: Read error
    **ERR_WRITE**: Write error
    **ERR_TIMEOUT**: Timeout
    **ERR_RUNTIME**: Runtime error
    **ERR_IO**: IO error
    **ERR_NOT_FOUND**: Not found
    **ERR_ALREAY_EXIST**: Already exist
    **ERR_BUFF_FULL**: Buffer full
    **ERR_BUFF_EMPTY**: Buffer empty
    **ERR_CANCEL**: Cancel
    **ERR_OVERFLOW**: Overflow
    **ERR_MAX**:
    **C++ defination code**: ```cpp enum Err { // !!! fixed error code, DO NOT change number already defined, only append new error code ERR_NONE 0, // No error ERR_ARGS , // Invalid arguments ERR_NO_MEM , // No memory ERR_NOT_IMPL , // Not implemented ERR_NOT_READY , // Not ready ERR_NOT_INIT , // Not initialized ERR_NOT_OPEN , // Not opened ERR_NOT_PERMIT , // Not permitted ERR_REOPEN , // Re open ERR_BUSY , // Busy ERR_READ , // Read error ERR_WRITE , // Write error ERR_TIMEOUT , // Timeout ERR_RUNTIME , // Runtime error ERR_IO , // IO error ERR_NOT_FOUND , // Not found ERR_ALREAY_EXIST , // Already exist ERR_BUFF_FULL , // Buffer full ERR_BUFF_EMPTY , // Buffer empty ERR_CANCEL , // Cancel ERR_OVERFLOW , // Overflow ERR_MAX, } ``` ## Variable ## Function ### to\\_str item doc **brief** Error code to string **param** **e**: direction [in], error code, err::Err type
    **return** error string **C++ defination code**: ```cpp std::string to_str(err::Err e) ``` ### get\\_error item doc **brief** get last error string **return** error string **C++ defination code**: ```cpp std::string& get_error() ``` ### set\\_error item doc **brief** set last error string **param** **str**: direction [in], error string
    **C++ defination code**: ```cpp void set_error(const std::string &str) ``` ### check\\_raise item doc **brief** Check error code, if not ERR_NONE, raise err.Exception **param** **e**: direction [in], error code, err::Err type
    **msg**: direction [in], error message
    **C++ defination code**: ```cpp void check_raise(err::Err e, const std::string &msg \"\") ``` ### check\\_bool\\_raise item doc **brief** Check condition, if false, raise err.Exception **param** **ok**: direction [in], condition, if true, do nothing, if false, raise err.Exception
    **msg**: direction [in], error message
    **C++ defination code**: ```cpp void check_bool_raise(bool ok, const std::string &msg \"\") ``` ### check\\_null\\_raise item doc **brief** Check NULL pointer, if NULL, raise exception **param** **ptr**: direction [in], pointer
    **msg**: direction [in], error message
    **C++ defination code**: ```cpp void check_null_raise(void *ptr, const std::string &msg \"\") ``` ## Class ### Exception item doc **brief** Maix Exception **C++ defination code**: ```cpp class Exception : public std::exception ```"},"/maixpy/api/maix/peripheral/timer.html":{"title":"maix.peripheral.timer","content":" title: maix.peripheral.timer maix.peripheral.timer module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.timer` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### TIMER item doc **brief** Peripheral timer class **C++ defination code**: ```cpp class TIMER ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** TIMER constructor **static** False **C++ defination code**: ```cpp TIMER() ```"},"/maixpy/api/maix/peripheral/i2c.html":{"title":"maix.peripheral.i2c","content":" title: maix.peripheral.i2c maix.peripheral.i2c module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.i2c` to access this module. ## Module No module ## Enum ### AddrSize item doc **brief** Address size enum **values** **SEVEN_BIT**: 7 bit address mode
    **TEN_BIT**: 10 bit address mode
    **C++ defination code**: ```cpp enum AddrSize { SEVEN_BIT 7, // 7 bit address mode TEN_BIT 10 // 10 bit address mode } ``` ### Mode item doc **brief** I2C mode enum **values** **MASTER**: master mode
    **SLAVE**: slave mode
    **C++ defination code**: ```cpp enum Mode { MASTER 0x00, // master mode SLAVE 0x01 // slave mode } ``` ## Variable ## Function ### list\\_devices item doc **brief** Get supported i2c bus devices. **return** i2c bus devices list, int type, is the i2c bus id. **C++ defination code**: ```cpp std::vector list_devices() ``` ## Class ### I2C item doc **brief** Peripheral i2c class **C++ defination code**: ```cpp class I2C ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** I2C Device constructor\\nthis constructor will be export to MaixPy as _maix.example.Example.__init__ **param** **id**: direction [in], i2c bus id, int type, e.g. 0, 1, 2
    **freq**: direction [in], i2c clock, int type, default is 100000(100kbit/s), will auto set fast mode if freq > 100000.
    **mode**: direction [in], mode of i2c, i2c.Mode.SLAVE or i2c.Mode.MASTER.
    **addr_size**: direction [in], address length of i2c, i2c.AddrSize.SEVEN_BIT or i2c.AddrSize.TEN_BIT.
    **throw** err::Exception if open i2c device failed. **static** False **C++ defination code**: ```cpp I2C(int id, i2c::Mode mode, int freq 100000, i2c::AddrSize addr_size i2c::AddrSize::SEVEN_BIT) ``` #### scan item doc **type** func **brief** scan all i2c salve address on the bus **return** the list of i2c slave address, int list type. **static** False **C++ defination code**: ```cpp std::vector scan() ``` #### writeto item doc **type** func **brief** write data to i2c slave **param** **addr**: direction [in], i2c slave address, int type
    **data**: direction [in], data to write, bytes type.
    Note: The range of value should be in [0,255].
    **return** if success, return the length of written data, error occurred will return err::Err. **static** False **C++ defination code**: ```cpp int writeto(int addr, const Bytes &data) ``` #### readfrom item doc **type** func **brief** read data from i2c slave **param** **addr**: direction [in], i2c slave address, int type
    **len**: direction [in], data length to read, int type
    **return** the list of data read from i2c slave, bytes type, you should delete it after use in C++.
    If read failed, return nullptr in C++, None in MaixPy. **static** False **C++ defination code**: ```cpp Bytes* readfrom(int addr, int len) ``` #### writeto\\_mem item doc **type** func **brief** write data to i2c slave's memory address **param** **addr**: direction [in], i2c slave address, int type
    **mem_addr**: direction [in], memory address want to write, int type.
    **data**: direction [in], data to write, bytes type.
    **mem_addr_size**: direction [in], memory address size, default is 8.
    **mem_addr_le**: direction [in], memory address little endian, default is false, that is send high byte first.
    **return** data length written if success, error occurred will return err::Err. **static** False **C++ defination code**: ```cpp int writeto_mem(int addr, int mem_addr, const Bytes &data, int mem_addr_size 8, bool mem_addr_le false) ``` #### readfrom\\_mem item doc **type** func **brief** read data from i2c slave **param** **addr**: direction [in], i2c slave address, int type
    **mem_addr**: direction [in], memory address want to read, int type.
    **len**: direction [in], data length to read, int type
    **mem_addr_size**: direction [in], memory address size, default is 8.
    **mem_addr_le**: direction [in], memory address little endian, default is false, that is send high byte first.
    **return** the list of data read from i2c slave, bytes type, you should delete it after use in C++.
    If read failed, return nullptr in C++, None in MaixPy. **static** False **C++ defination code**: ```cpp Bytes* readfrom_mem(int addr, int mem_addr, int len, int mem_addr_size 8, bool mem_addr_le false) ```"},"/maixpy/api/maix/peripheral/gpio.html":{"title":"maix.peripheral.gpio","content":" title: maix.peripheral.gpio maix.peripheral.gpio module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.gpio` to access this module. ## Module No module ## Enum ### Mode item doc **brief** GPIO mode **values** **IN**: input mode
    **OUT**: output mode
    **OUT_OD**: output open drain mode
    **MODE_MAX**:
    **C++ defination code**: ```cpp enum Mode { IN 0x01, // input mode OUT 0x02, // output mode OUT_OD 0x03, // output open drain mode MODE_MAX } ``` ### Pull item doc **brief** GPIO pull mode **values** **PULL_NONE**: pull none mode
    **PULL_UP**: pull up mode
    **PULL_DOWN**: pull down mode
    **PULL_MAX**:
    **C++ defination code**: ```cpp enum Pull { PULL_NONE 0x00, // pull none mode PULL_UP 0x01, // pull up mode PULL_DOWN 0x02, // pull down mode PULL_MAX } ``` ## Variable ## Function ## Class ### GPIO item doc **brief** Peripheral gpio class **C++ defination code**: ```cpp class GPIO ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** GPIO constructor **param** **pin**: direction [in], gpio pin name, string type the same as board's pin name, e.g. \"B14\" or \"GPIOB14\", or number string like \"10\" if board no gpiochipe name.
    **mode**: direction [in], gpio mode. gpio.Mode type, default is gpio.Mode.IN (input) mode.
    **pull**: direction [in], gpio pull. gpio.Pull type, default is gpio.Pull.PULL_NONE (pull none) mode.
    For input mode, this will set gpio default status(value), if set to gpio.Pull.PULL_NONE, gpio value will be floating.
    For output mode, this will set gpio default status(value), if set to gpio.Pull.PULL_UP, gpio value will be 1, else 0.
    **throw** err::Exception if open gpio device failed. **static** False **C++ defination code**: ```cpp GPIO(std::string pin, gpio::Mode mode gpio::Mode::IN, gpio::Pull pull gpio::Pull::PULL_NONE) ``` #### value item doc **type** func **brief** set and get gpio value **param** **value**: direction [in], gpio value. int type.
    0, means write gpio to low level
    1, means write gpio to high level
    1, means read gpio value, not set
    **return** int type, return gpio value, can be 0 or 1 **static** False **C++ defination code**: ```cpp int value(int value 1) ``` #### high item doc **type** func **brief** set gpio high (value to 1) **static** False **C++ defination code**: ```cpp void high() ``` #### low item doc **type** func **brief** set gpio low (value to 0) **static** False **C++ defination code**: ```cpp void low() ``` #### toggle item doc **type** func **brief** gpio toggle **static** False **C++ defination code**: ```cpp void toggle() ```"},"/maixpy/api/maix/i18n.html":{"title":"maix.i18n","content":" title: maix.i18n maix.i18n module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.i18n` to access this module. ## Module No module ## Enum ## Variable ### locales item doc **brief** i18n locales list **value** **{
    \"en\",
    \"zh\",
    \"zh tw\",
    \"ja\"
    }** **readonly** False **C++ defination code**: ```cpp static std::vector locales { \"en\", \"zh\", \"zh tw\", \"ja\" } ``` ### names item doc **brief** i18n language names list **value** **{
    \"English\",
    \"简体中文\",
    \"繁體中文\",
    \"日本語\"
    }** **readonly** True **C++ defination code**: ```cpp const static std::vector names { \"English\", \"简体中文\", \"繁體中文\", \"日本語\" } ``` ## Function ### get\\_locale item doc **brief** Get system config of locale. **return** language locale, e.g. en, zh, zh_CN, zh_TW, etc. **C++ defination code**: ```cpp string get_locale() ``` ### get\\_language\\_name item doc **brief** Get system config of language name. **return** language name, e.g. English, 简体中文, 繁體中文, etc. **C++ defination code**: ```cpp string get_language_name() ``` ## Class ### Trans item doc **brief** Translate helper class. **C++ defination code**: ```cpp class Trans ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Translate helper class constructor.\\nBy default locale is get by `i18n.get_locale()` function which set by system settings.\\nBut you can also manually set by `set_locale` function temporarily. **param** **locales_dict**: locales dict, e.g. {\"zh\": {\"Confirm\": \"确认\", \"OK\": \"好的\"}, \"en\": {\"Confirm\": \"Confirm\", \"OK\": \"OK\"}}
    **static** False **C++ defination code**: ```cpp Trans(const std::map> &locales_dict) ``` #### tr item doc **type** func **brief** Translate string by key. **param** **key**: string key, e.g. \"Confirm\"
    **locale**: locale name, if not assign, use default locale set by system settings or set_locale function.
    **return** translated string, if find translation, return it, or return key, e.g. \"确认\", \"Confirm\", etc. **static** False **C++ defination code**: ```cpp string tr(const string &key, const string locale \"\") ``` #### set\\_locale item doc **type** func **brief** Set locale temporarily, will not affect system settings. **param** **locale**: locale name, e.g. \"zh\", \"en\", etc. @see maix.i18n.locales
    **static** False **C++ defination code**: ```cpp void set_locale(const string &locale) ``` #### get\\_locale item doc **type** func **brief** Get current locale. **return** locale name, e.g. \"zh\", \"en\", etc. @see maix.i18n.locales **static** False **C++ defination code**: ```cpp string get_locale() ```"},"/maixpy/api/maix/protocol.html":{"title":"maix.protocol","content":" title: maix.protocol maix.protocol module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.protocol` to access this module. ## Module No module ## Enum ### CMD item doc **brief** protocol cmd, more doc see MaixCDK document's convention doc **note** max app custom CMD value should < CMD_APP_MAX **values** **CMD_APP_MAX**: 200, max app custom CMD value should < CMD_APP_MAX
    **CMD_SET_UPLOAD**: set auto upload data mode
    **CMD_APP_LIST**:
    **CMD_START_APP**:
    **CMD_EXIT_APP**:
    **CMD_CUR_APP_INFO**:
    **CMD_APP_INFO**:
    **CMD_KEY**:
    **CMD_TOUCH**:
    **C++ defination code**: ```cpp enum CMD { CMD_APP_MAX 0xC8, // 200, max app custom CMD value should < CMD_APP_MAX CMD_SET_UPLOAD 0xF8, // set auto upload data mode CMD_APP_LIST 0xF9, CMD_START_APP 0xFA, CMD_EXIT_APP 0xFB, CMD_CUR_APP_INFO 0xFC, CMD_APP_INFO 0xFD, CMD_KEY 0xFE, CMD_TOUCH 0xFF, } ``` ### FLAGS item doc **brief** protocol flags, more doc see MaixCDK document's convention doc **values** **FLAG_REQ**:
    **FLAG_RESP**:
    **FLAG_IS_RESP_MASK**:
    **FLAG_RESP_OK**:
    **FLAG_RESP_ERR**:
    **FLAG_RESP_OK_MASK**:
    **FLAG_REPORT**:
    **FLAG_REPORT_MASK**:
    **FLAG_VERSION_MASK**:
    **C++ defination code**: ```cpp enum FLAGS { FLAG_REQ 0x00, FLAG_RESP 0x80, FLAG_IS_RESP_MASK 0x80, FLAG_RESP_OK 0x40, FLAG_RESP_ERR 0x00, FLAG_RESP_OK_MASK 0x40, FLAG_REPORT 0x20, FLAG_REPORT_MASK 0x20, FLAG_VERSION_MASK 0x03 } ``` ## Variable ### VERSION item doc **brief** protocol version **value** **1** **readonly** True **C++ defination code**: ```cpp const uint8_t VERSION 1 ``` ### HEADER item doc **brief** protocol header **value** **0xBBACCAAA** **readonly** True **C++ defination code**: ```cpp const uint32_t HEADER 0xBBACCAAA ``` ## Function ### crc16\\_IBM item doc **brief** CRC16 IBM **param** **data**: data, bytes type.
    **return** CRC16 IBM value, uint16_t type. **C++ defination code**: ```cpp uint16_t crc16_IBM(const Bytes *data) ``` ## Class ### MSG item doc **brief** protocol msg **C++ defination code**: ```cpp class MSG ``` #### version item doc **type** var **brief** protocol version **static** False **readonly** False **C++ defination code**: ```cpp uint8_t version ``` #### resp\\_ok item doc **type** var **brief** Is success response or not, (only for response msg) **static** False **readonly** False **C++ defination code**: ```cpp uint8_t resp_ok ``` #### cmd item doc **type** var **brief** CMD value **static** False **readonly** False **C++ defination code**: ```cpp uint8_t cmd ``` #### is\\_resp item doc **type** var **brief** message is response or not, contrast with is_req **static** False **readonly** False **C++ defination code**: ```cpp bool is_resp ``` #### body\\_len item doc **type** var **brief** Message body length, read only, use set_body() to update **attention** DO NOT manually change this value **static** False **readonly** False **C++ defination code**: ```cpp int body_len ``` #### encode\\_resp\\_ok item doc **type** func **brief** Encode response ok(success) message **param** **body**: response body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_ok(Bytes *body nullptr) ``` #### encode\\_report item doc **type** func **brief** Encode proactively report message **param** **body**: report body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_report(Bytes *body nullptr) ``` #### encode\\_resp\\_err item doc **type** func **brief** Encode response error message **param** **code**: error code
    **msg**: error message
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_err(err::Err code, const std::string &msg) ``` #### set\\_body item doc **type** func **brief** Update message body **param** **body_new**: new body data
    **static** False **C++ defination code**: ```cpp void set_body(Bytes *body_new) ``` #### get\\_body item doc **type** func **brief** Get message body **return** message body, bytes type **static** False **C++ defination code**: ```cpp Bytes *get_body() ``` ### Protocol item doc **brief** Communicate protocol **C++ defination code**: ```cpp class Protocol ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Protocol object **param** **buff_size**: Data queue buffer size
    **static** False **C++ defination code**: ```cpp Protocol(int buff_size 1024) ``` #### buff\\_size item doc **type** func **brief** Data queue buffer size **static** False **C++ defination code**: ```cpp int buff_size() ``` #### push\\_data item doc **type** func **brief** Add data to data queue **param** **new_data**: new data
    **return** error code, maybe err.Err.ERR_BUFF_FULL **static** False **C++ defination code**: ```cpp err::Err push_data(const Bytes *new_data) ``` #### decode item doc **type** func **brief** Decode data in data queue and return a message **param** **new_data**: new data add to data queue, if null, only decode.
    **return** decoded message, if nullptr, means no message decoded. **static** False **C++ defination code**: ```cpp protocol::MSG *decode(const Bytes *new_data nullptr) ``` #### encode\\_resp\\_ok item doc **type** func **brief** Encode response ok(success) message to buffer **param** **cmd**: CMD value
    **body**: response body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_ok(uint8_t cmd, Bytes *body nullptr) ``` #### encode\\_report item doc **type** func **brief** Encode proactively report message to buffer **param** **cmd**: CMD value
    **body**: report body, can be null
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_report(uint8_t cmd, Bytes *body nullptr) ``` #### encode\\_resp\\_err item doc **type** func **brief** Encode response error message to buffer **param** **cmd**: CMD value
    **code**: error code
    **msg**: error message
    **return** encoded data, if nullptr, means error, and the error code is err.Err **static** False **C++ defination code**: ```cpp Bytes *encode_resp_err(uint8_t cmd, err::Err code, const std::string &msg) ```"},"/maixpy/api/maix/tensor.html":{"title":"maix.tensor","content":" title: maix.tensor maix.tensor module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.tensor` to access this module. ## Module No module ## Enum ### DType item doc **brief** Tensor data types **values** **UINT8**:
    **INT8**:
    **UINT16**:
    **INT16**:
    **UINT32**:
    **INT32**:
    **FLOAT16**:
    **FLOAT32**:
    **FLOAT64**:
    **BOOL**:
    **DTYPE_MAX**:
    **C++ defination code**: ```cpp enum DType { UINT8 0, INT8, UINT16, INT16, UINT32, INT32, FLOAT16, FLOAT32, FLOAT64, BOOL, // STRING, // OBJECT, DTYPE_MAX } ``` ## Variable ### dtype\\_size item doc **brief** Tensor data type size in bytes **attention** It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake. **value** **{
    1, // UINT8
    1, // INT8
    2, // UINT16
    2, // INT16
    4, // UINT32
    4, // INT32
    2, // FLOAT16
    4, // FLOAT32
    8, // FLOAT64
    1, // BOOL
    // 1, // STRING
    // 1, // OBJECT
    0
    }** **readonly** True **C++ defination code**: ```cpp const std::vector dtype_size { 1, // UINT8 1, // INT8 2, // UINT16 2, // INT16 4, // UINT32 4, // INT32 2, // FLOAT16 4, // FLOAT32 8, // FLOAT64 1, // BOOL // 1, // STRING // 1, // OBJECT 0 } ``` ### dtype\\_name item doc **brief** Tensor data type name **value** **{
    \"uint8\",
    \"int8\",
    \"uint16\",
    \"int16\",
    \"uint32\",
    \"int32\",
    \"float16\",
    \"float32\",
    \"float64\",
    \"bool\",
    // \"string\",
    // \"object\",
    \"invalid\"
    }** **readonly** True **C++ defination code**: ```cpp const std::vector dtype_name { \"uint8\", \"int8\", \"uint16\", \"int16\", \"uint32\", \"int32\", \"float16\", \"float32\", \"float64\", \"bool\", // \"string\", // \"object\", \"invalid\" } ``` ## Function ## Class ### Tensor item doc **brief** Tensor class **C++ defination code**: ```cpp class Tensor ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Tensor constructor **param** **shape**: tensor shape, a int list
    **dtype**: tensor element data type, see DType of this module
    **data**: pointer to data content, can be nullptr, it will automatically alloc memory
    and detroy it when this object is destroyed
    **static** False **C++ defination code**: ```cpp Tensor(std::vector shape, tensor::DType dtype, void *data nullptr) ``` #### to\\_str item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string __str__() ``` #### shape item doc **type** func **brief** get tensor shape **return** tensor shape, a int list **static** False **C++ defination code**: ```cpp std::vector shape() ``` #### expand\\_dims item doc **type** func **brief** expand tensor shape **param** **axis**: axis to expand
    **static** False **C++ defination code**: ```cpp void expand_dims(int axis) ``` #### reshape item doc **type** func **brief** reshape tensor shape, if size not match, it will throw an err::Exception **param** **shape**: new shape
    **static** False **C++ defination code**: ```cpp void reshape(std::vector shape) ``` #### flatten item doc **type** func **brief** Flatten tensor shape to 1D **static** False **C++ defination code**: ```cpp void flatten() ``` #### dtype item doc **type** func **brief** get tensor data type **return** tensor data type, see DType of this module **static** False **C++ defination code**: ```cpp tensor::DType dtype() ``` #### argmax item doc **type** func **brief** argmax of tensor **param** **axis**: By default, the index is into the flattened array, otherwise along the specified axis., wrong axis will throw an err::Exception
    **return** argmax result, you need to delete it after use in C++. **static** False **C++ defination code**: ```cpp tensor::Tensor *argmax(int axis 0xffff) ``` #### argmax1 item doc **type** func **brief** argmax1, flattened data max index **return** argmax result, int type **static** False **C++ defination code**: ```cpp int argmax1() ``` ### Tensors item doc **brief** Tensors **C++ defination code**: ```cpp class Tensors ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor of Tensors **static** False **C++ defination code**: ```cpp Tensors() ``` #### add\\_tensor item doc **type** func **brief** Add tensor **static** False **C++ defination code**: ```cpp void add_tensor(const std::string &key, tensor::Tensor *tensor, bool copy, bool auto_delete) ``` #### rm\\_tensor item doc **type** func **brief** Remove tensor **static** False **C++ defination code**: ```cpp void rm_tensor(const std::string &key) ``` #### get\\_tensor item doc **type** func **brief** Get tensor by key **static** False **C++ defination code**: ```cpp tensor::Tensor *get_tensor(const std::string &key) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Operator [] **static** False **C++ defination code**: ```cpp tensor::Tensor *operator[](const std::string &key) ``` #### \\_\\_len\\_\\_ item doc **type** func **brief** Size **static** False **C++ defination code**: ```cpp size_t size() ``` #### get\\_names item doc **type** func **brief** Get names **static** False **C++ defination code**: ```cpp std::vector get_names() ``` #### tensors item doc **type** var **brief** Tensors data, dict type **static** False **readonly** False **C++ defination code**: ```cpp std::map tensors ```"},"/maixpy/api/maix/sys.html":{"title":"maix.sys","content":" title: maix.sys maix.sys module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.sys` to access this module. ## Module No module ## Enum ## Variable ## Function ### os\\_version() item doc **brief** Get system version **return** version string, e.g. \"2024.4.1 13af4b\" **C++ defination code**: ```cpp std::string os_version() ``` ### device\\_name() item doc **brief** Get device name **return** device name, e.g. \"MaixCAM\" **C++ defination code**: ```cpp std::string device_name() ``` ### host\\_name() item doc **brief** Get host name **return** host name, e.g. \"maixcam 2f9f\" **C++ defination code**: ```cpp std::string host_name() ``` ### host\\_domain() item doc **brief** Get host domain **return** host domain, e.g. \"maixcam 2f9f.local\" **C++ defination code**: ```cpp std::string host_domain() ``` ### ip\\_address() item doc **brief** Get ip address **return** ip address, dict type, e.g. {\"eth0\": \"192.168.0.195\", \"wlan0\": \"192.168.0.123\", \"usb0\": \"10.47.159.1\"} **C++ defination code**: ```cpp std::map ip_address() ``` ### mac\\_address() item doc **brief** Get mac address **return** mac address, dict type, e.g. {\"eth0\": \"00:0c:29:2f:9f:00\", \"wlan0\": \"00:0c:29:2f:9f:01\", \"usb0\": \"00:0c:29:2f:9f:02\"} **C++ defination code**: ```cpp std::map mac_address() ``` ### device\\_key() item doc **brief** Get device key, can be unique id of device **return** device key, 32 bytes hex string, e.g. \"1234567890abcdef1234567890abcdef\" **C++ defination code**: ```cpp std::string device_key() ``` ### memory\\_info() item doc **brief** Get memory info **return** memory info, dict type, e.g. {\"total\": 1024, \"used\": 512, \"hw_total\": 256*1024*1024}
    total: total memory size in Byte.
    used: used memory size in Byte.
    hw_total: total memory size in Byte of hardware, the total < hw_total,
    OS kernel may reserve some memory for some hardware like camera, npu, display etc. **C++ defination code**: ```cpp std::map memory_info() ``` ### bytes\\_to\\_human(1234) item doc **brief** Bytes to human readable string **param** **bytes:**: bytes size,e.g. 1234B 1234/1024 1.205 KB
    **precision:**: decimal precision, default 2
    **base:**: base number, default 1024
    **unit:**: unit string, e.g. \"B\"
    **sep:**: separator string, e.g. \" \"
    **return** human readable string, e.g. \"1.21 KB\" **C++ defination code**: ```cpp std::string bytes_to_human(unsigned long long bytes, int precision 2, int base 1024, const std::string &unit \"B\", const std::string &sep \" \") ``` ### cpu\\_freq() item doc **brief** Get CPU frequency **return** CPU frequency, dict type, e.g. {\"cpu0\": 1000000000, \"cpu1\": 1000000000} **C++ defination code**: ```cpp std::map cpu_freq() ``` ### cpu\\_temp() item doc **brief** Get CPU temperature **return** CPU temperature, unit dgree, dict type, e.g. {\"cpu\": 50.0, \"cpu0\": 50, \"cpu1\": 50} **C++ defination code**: ```cpp std::map cpu_temp() ``` ### cpu\\_usage() item doc **brief** Get CPU usage **return** CPU usage, dict type, e.g. {\"cpu\": 50.0, \"cpu0\": 50, \"cpu1\": 50} **C++ defination code**: ```cpp std::map cpu_usage() ``` ### npu\\_freq() item doc **brief** Get NPU frequency **return** NPU frequency, dict type, e.g. {\"npu0\": 500000000} **C++ defination code**: ```cpp std::map npu_freq() ``` ### disk\\_usage() item doc **brief** Get disk usage **param** **path:**: disk path, default \"/\"
    **return** disk usage, dict type, e.g. {\"total\": 1024, \"used\": 512} **C++ defination code**: ```cpp std::map disk_usage(const std::string &path \"/\") ``` ### disk\\_partitions() item doc **brief** Get disk partition and mount point info **param** **only_disk**: only return real disk, tempfs sysfs etc. not return, default true.
    **return** disk partition and mount point info, list type, e.g. [{\"device\": \"/dev/mmcblk0p1\", \"mountpoint\": \"/mnt/sdcard\", \"fstype\": \"vfat\"}] **C++ defination code**: ```cpp std::vector> disk_partitions(bool only_disk true) ``` ### poweroff item doc **brief** Power off device **C++ defination code**: ```cpp void poweroff() ``` ### reboot item doc **brief** Power off device and power on **C++ defination code**: ```cpp void reboot() ``` ## Class"},"/maixpy/api/maix/display.html":{"title":"maix.display","content":" title: maix.display maix.display module, control display device and show image on it > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.display` to access this module. ## Module No module ## Enum ## Variable ## Function ### send\\_to\\_maixvision item doc **brief** Send image to MaixVision work station if connected.\\nIf you want to debug your program an don't want to initialize display, use this method. **param** **img**: image to send, image.Image object
    **C++ defination code**: ```cpp void send_to_maixvision(image::Image &img) ``` ## Class ### Display item doc **brief** Display class **C++ defination code**: ```cpp class Display ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Display object **param** **width**: display width, by default(value is 1) means auto detect,
    if width > max device supported width, will auto set to max device supported width
    **height**: display height, by default(value is 1) means auto detect,
    if height > max device supported height, will auto set to max device supported height
    **device**: display device name, you can get devices by list_devices method, by default(value is NULL(None in MaixPy)) means the first device
    **open**: If true, display will automatically call open() after creation. default is true.
    **static** False **C++ defination code**: ```cpp Display(int width 1, int height 1, image::Format format image::FMT_RGB888, const char *device nullptr, bool open true) ``` #### width item doc **type** func **brief** Get display width **return** width **static** False **C++ defination code**: ```cpp int width() ``` #### height item doc **type** func **brief** Get display height **param** **ch**: channel to get, by default(value is 0) means the first channel
    **return** height **static** False **C++ defination code**: ```cpp int height() ``` #### size item doc **type** func **brief** Get display size **param** **ch**: channel to get, by default(value is 0) means the first channel
    **return** size A list type in MaixPy, [width, height] **static** False **C++ defination code**: ```cpp std::vector size() ``` #### format item doc **type** func **brief** Get display format **return** format **static** False **C++ defination code**: ```cpp image::Format format() ``` #### open item doc **type** func **brief** open display device, if already opened, will return err.ERR_NONE. **param** **width**: display width, default is 1, means auto, mostly means max width of display support
    **height**: display height, default is 1, means auto, mostly means max height of display support
    **format**: display output format, default is RGB888
    **return** error code **static** False **C++ defination code**: ```cpp err::Err open(int width 1, int height 1, image::Format format image::FMT_INVALID) ``` #### close item doc **type** func **brief** close display device **return** error code **static** False **C++ defination code**: ```cpp err::Err close() ``` #### add\\_channel item doc **type** func **brief** Add a new channel and return a new Display object, you can use close() to close this channel. **param** **width**: display width, default is 1, means auto, mostly means max width of display support
    **height**: display height, default is 1, means auto, mostly means max height of display support
    **format**: display output format, default is RGB888
    **open**: If true, display will automatically call open() after creation. default is true.
    **return** new Display object **static** False **C++ defination code**: ```cpp display::Display *add_channel(int width 1, int height 1, image::Format format image::FMT_RGB888, bool open true) ``` #### is\\_opened item doc **type** func **brief** check display device is opened or not **return** opened or not, bool type **static** False **C++ defination code**: ```cpp bool is_opened() ``` #### is\\_closed item doc **type** func **brief** check display device is closed or not **return** closed or not, bool type **static** False **C++ defination code**: ```cpp bool is_closed() ``` #### show item doc **type** func **brief** show image on display device, and will also send to MaixVision work station if connected. **param** **img**: image to show, image.Image object,
    if the size of image smaller than display size, will show in the center of display;
    if the size of image bigger than display size, will auto resize to display size and keep ratio, fill blank with black color.
    **fit**: image in screen fit mode, by default(value is image.FIT_CONTAIN), @see image.Fit for more details
    e.g. image.FIT_CONTAIN means resize image to fit display size and keep ratio, fill blank with black color.
    **return** error code **static** False **C++ defination code**: ```cpp err::Err show(image::Image &img, image::Fit fit image::FIT_CONTAIN) ``` #### device item doc **type** func **brief** Get display device path **return** display device path **static** False **C++ defination code**: ```cpp std::string device() ``` #### set\\_backlight item doc **type** func **brief** Set display backlight **param** **value**: backlight value, float type, range is [0, 100]
    **static** False **C++ defination code**: ```cpp void set_backlight(float value) ``` #### set\\_hmirror item doc **type** func **brief** Set display mirror **param** **en**: enable/disable mirror
    **static** False **C++ defination code**: ```cpp err::Err set_hmirror(bool en) ``` #### set\\_vflip item doc **type** func **brief** Set display flip **param** **en**: enable/disable flip
    **static** False **C++ defination code**: ```cpp err::Err set_vflip(bool en) ```"},"/maixpy/api/maix/video.html":{"title":"maix.video","content":" title: maix.video maix.video module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.video` to access this module. ## Module No module ## Enum ### VideoType item doc **brief** Video type **values** **VIDEO_NONE**: format invalid
    **VIDEO_ENC_H265_CBR**:
    **VIDEO_ENC_MP4_CBR**:
    **VIDEO_DEC_H265_CBR**:
    **VIDEO_DEC_MP4_CBR**:
    **C++ defination code**: ```cpp enum VideoType { VIDEO_NONE 0, // format invalid VIDEO_ENC_H265_CBR, VIDEO_ENC_MP4_CBR, VIDEO_DEC_H265_CBR, VIDEO_DEC_MP4_CBR, } ``` ## Variable ## Function ## Class ### VideoStream item doc **brief** VideoStream class **C++ defination code**: ```cpp class VideoStream ``` ### Video item doc **brief** Video class **C++ defination code**: ```cpp class Video ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Video object **param** **width**: video width, default is 1, means auto, mostly means max width of video support
    **height**: video height, default is 1, means auto, mostly means max height of video support
    **type**: video type, default is VideoType::VIDEO_NONE
    **static** False **C++ defination code**: ```cpp Video(int width 1, int height 1, video::VideoType type video::VideoType::VIDEO_NONE) ``` #### open item doc **type** func **brief** Open video and run **param** **width**: video width, default is 1, means auto, mostly means max width of video support
    **height**: video height, default is 1, means auto, mostly means max height of video support
    **format**: video output format, default same as the constructor's format argument
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err open(int width 1, int height 1, video::VideoType type video::VideoType::VIDEO_NONE) ``` #### encode item doc **type** func **brief** Encode image **param** **img**: the image will be encode
    **return** encode result **static** False **C++ defination code**: ```cpp video::VideoStream encode(image::Image &img) ``` #### decode item doc **type** func **brief** Decode image **param** **img**: the image will be decode
    **return** decode result **static** False **C++ defination code**: ```cpp image::Image *decode(video::VideoStream &stream) ``` #### close item doc **type** func **brief** Close video **static** False **C++ defination code**: ```cpp void close() ``` #### is\\_opened item doc **type** func **brief** Check if video is opened **return** true if video is opened, false if not **static** False **C++ defination code**: ```cpp bool is_opened() ``` #### is\\_closed item doc **type** func **brief** check video device is closed or not **return** closed or not, bool type **static** False **C++ defination code**: ```cpp bool is_closed() ``` #### width item doc **type** func **brief** Get video width **return** video width **static** False **C++ defination code**: ```cpp int width() ``` #### height item doc **type** func **brief** Get video height **return** video height **static** False **C++ defination code**: ```cpp int height() ```"},"/maixpy/api/maix/peripheral/uart.html":{"title":"maix.peripheral.uart","content":" title: maix.peripheral.uart maix uart peripheral driver > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.uart` to access this module. ## Module No module ## Enum ### PARITY item doc **brief** uart parity enum **values** **PARITY_NONE**: no parity
    **PARITY_ODD**: odd parity
    **PARITY_EVEN**: even parity
    **PARITY_MAX**:
    **C++ defination code**: ```cpp enum PARITY { PARITY_NONE 0x00, // no parity PARITY_ODD 0x01, // odd parity PARITY_EVEN 0x02, // even parity PARITY_MAX } ``` ### STOP item doc **brief** uart stop bits **values** **STOP_1**: 1 stop bit
    **STOP_2**: 2 stop bits
    **STOP_1_5**: 1.5 stop bits
    **STOP_MAX**:
    **C++ defination code**: ```cpp enum STOP { STOP_1 0x01, // 1 stop bit STOP_2 0x02, // 2 stop bits STOP_1_5 0x03, // 1.5 stop bits STOP_MAX } ``` ### BITS item doc **brief** uart stop bits **values** **BITS_5**: 5 data bits
    **BITS_6**: 6 data bits
    **BITS_7**: 7 data bits
    **BITS_8**: 8 data bits
    **BITS_MAX**:
    **C++ defination code**: ```cpp enum BITS { BITS_5 5, // 5 data bits BITS_6 6, // 6 data bits BITS_7 7, // 7 data bits BITS_8 8, // 8 data bits BITS_MAX } ``` ### FLOW\\_CTRL item doc **brief** uart flow control **values** **FLOW_CTRL_NONE**: no flow control
    **FLOW_CTRL_HW**: hardware flow control
    **FLOW_CTRL_MAX**:
    **C++ defination code**: ```cpp enum FLOW_CTRL { FLOW_CTRL_NONE 0, // no flow control FLOW_CTRL_HW 1, // hardware flow control FLOW_CTRL_MAX } ``` ## Variable ## Function ### list\\_devices item doc **brief** Get supported uart ports. **return** uart ports list, string type. **C++ defination code**: ```cpp std::vector list_devices() ``` ## Class ### UART item doc **brief** maix uart peripheral driver **C++ defination code**: ```cpp class UART : public comm::CommBase ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** UART constructor. You need to call open() to open the device. **param** **port**: uart port. string type, can get it by uart.list_devices().
    If empty, will not open device in constructor, default empty.
    if not empty, will auto open device in constructor, open fail will throw err.Exception.
    **baudrate**: baudrate of uart. int type, default 115200.
    **databits**: databits, values @see uart.DATA_BITS
    **parity**: parity, values @see uart.PARITY
    **stopbits**: stopbits, values @see uart.STOP_BITS
    **flow_control**: flow_control, values @see uart.FLOW_CTRL
    **static** False **C++ defination code**: ```cpp UART(const std::string &port \"\", int baudrate 115200, uart::BITS databits uart::BITS_8, uart::PARITY parity uart::PARITY_NONE, uart::STOP stopbits uart::STOP_1, uart::FLOW_CTRL flow_ctrl uart::FLOW_CTRL_NONE) ``` #### set\\_port item doc **type** func **brief** Set port **param** **port**: uart port. string type, can get it by uart.list_devices().
    **return** set port error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err set_port(const std::string &port) ``` #### get\\_port item doc **type** func **brief** Get port **return** uart port, string type. **static** False **C++ defination code**: ```cpp std::string get_port() ``` #### set\\_baudrate item doc **type** func **brief** Set baud rate **param** **baudrate**: baudrate of uart. int type, default 115200.
    **return** set baud rate error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err set_baudrate(int baudrate) ``` #### get\\_baudrate item doc **type** func **brief** Get baud rate **return** baud rate, int type. **static** False **C++ defination code**: ```cpp int get_baudrate() ``` #### open item doc **type** func **brief** Open uart device, before open, port must be set in constructor or by set_port().\\nIf already opened, do nothing and return err.ERR_NONE. **return** open device error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err open() ``` #### is\\_open item doc **type** func **brief** Check if device is opened. **return** true if opened, false if not opened. **static** False **C++ defination code**: ```cpp bool is_open() ``` #### close item doc **type** func **brief** Close uart device, if already closed, do nothing and return err.ERR_NONE. **return** close device error code, err.Err type. **static** False **C++ defination code**: ```cpp err::Err close() ``` #### write\\_str item doc **type** func **brief** Send string data **param** **str**: string data
    **return** sent data length, < 0 means error, value is err.Err. **static** False **C++ defination code**: ```cpp int write_str(const std::string &str) ``` #### write item doc **type** func **brief** Send data to uart **param** **data**: direction [in], data to send, bytes type. If you want to send str type, use str.encode() to convert.
    **return** sent length, int type, if < 0 means error, value is err.Err. **static** False **C++ defination code**: ```cpp int write(Bytes &data) ``` #### available item doc **type** func **brief** Check if data available or wait data available. **param** **timeout**: unit ms, timeout to wait data, default 0.
    0 means check data available and return immediately,
    > 0 means wait until data available or timeout.
    1 means wait until data available.
    **return** available data number, 0 if timeout or no data, <0 if error, value is err.Err, can be err::ERR_IO, err::ERR_CANCEL, err::ERR_NOT_OPEN. **throw** err.Exception if fatal error. **static** False **C++ defination code**: ```cpp int available(int timeout 0) ``` #### read item doc **type** func **brief** Recv data from uart **param** **len**: max data length want to receive, default 1.
    1 means read data in uart receive buffer.
    >0 means read len data want to receive.
    other values is invalid.
    **timeout**: unit ms, timeout to receive data, default 0.
    0 means read data in uart receive buffer and return immediately,
    1 means block until read len data,
    >0 means block until read len data or timeout.
    **return** received data, bytes type.
    Attention, you need to delete the returned object yourself in C++. **static** False **C++ defination code**: ```cpp Bytes *read(int len 1, int timeout 0) ``` #### readline item doc **type** func **brief** Read line from uart, that is read until '\\n' or '\\r\\n'. **param** **timeout**: unit ms, timeout to receive data, default 1 means block until read '\\n' or '\\r\\n'.
    > 0 means block until read '\\n' or '\\r\\n' or timeout.
    **return** received data, bytes type. If timeout will return the current received data despite not read '\\n' or '\\r\\n'.
    e.g. If we want to read b'123\\n', but when we only read b'12', timeout, then return b'12'. **static** False **C++ defination code**: ```cpp Bytes *readline(int timeout 1) ```"},"/maixpy/api/maix/peripheral/key.html":{"title":"maix.peripheral.key","content":" title: maix.peripheral.key maix.peripheral.key module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.key` to access this module. ## Module No module ## Enum ### Keys item doc **brief** Keys enum, id the same as linux input.h(input event codes.h) **values** **KEY_NONE**:
    **KEY_ESC**:
    **KEY_OK**:
    **KEY_OPTION**:
    **KEY_NEXT**:
    **KEY_PREV**:
    **C++ defination code**: ```cpp enum Keys{ KEY_NONE 0x000, KEY_ESC 0x001, KEY_OK 0x160, KEY_OPTION 0x165, KEY_NEXT 0x197, KEY_PREV 0x19c } ``` ### State item doc **brief** Key state enum **values** **KEY_RELEASED**:
    **KEY_PRESSED**:
    **C++ defination code**: ```cpp enum State{ KEY_RELEASED 0, KEY_PRESSED 1, } ``` ## Variable ## Function ### add\\_default\\_listener item doc **brief** Add default listener, if you want to exit app when press ok button, you can just call this function.\\nThis function is auto called in MaixPy' startup code, so you don't need to call it in MaixPy.\\nCreate Key object will auto call rm_default_listener() to cancel the default ok button function.\\nWhen ok button pressed, a SIGINT signal will be raise and call app.set_exit_flag(True). **C++ defination code**: ```cpp void add_default_listener() ``` ### rm\\_default\\_listener item doc **brief** Remove default listener, if you want to cancel the default ok button function(exit app), you can just call this function. **C++ defination code**: ```cpp void rm_default_listener() ``` ## Class ### Key item doc **brief** Key input class **C++ defination code**: ```cpp class Key ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Key Device constructor **param** **callback**: When key triggered and callback is not empty(empty In MaixPy is None, in C++ is nullptr),
    callback will be called with args key(key.Keys) and value(key.State).
    If set to null, you can get key value by read() function.
    This callback called in a standalone thread, so you can block a while in callback, and you should be carefully when operate shared data.
    **open**: auto open device in constructor, if false, you need call open() to open device
    **static** False **C++ defination code**: ```cpp Key(std::function callback nullptr, bool open true) ``` #### open item doc **type** func **brief** Open(Initialize) key device, if already opened, will close first and then open. **return** err::Err type, err.Err.ERR_NONE means success **static** False **C++ defination code**: ```cpp err::Err open() ``` #### close item doc **type** func **brief** Close key device **return** err::Err type, err.Err.ERR_NONE means success **static** False **C++ defination code**: ```cpp err::Err close() ``` #### is\\_opened item doc **type** func **brief** Check key device is opened **return** bool type, true means opened, false means closed **static** False **C++ defination code**: ```cpp bool is_opened() ``` #### read item doc **type** func **brief** Read key input, and return key and value, if callback is set, DO NOT call this function manually. **return** list type, first is key(maix.key.Keys), second is value(maix.key.State), if no key input, return [0, 0] **throw** If read failed, will throw maix.err.Exception. **static** False **C++ defination code**: ```cpp std::pair read() ```"},"/maixpy/api/maix/peripheral/adc.html":{"title":"maix.peripheral.adc","content":" title: maix.peripheral.adc maix.peripheral.adc module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.adc` to access this module. ## Module No module ## Enum ## Variable ### RES\\_BIT\\_8 item doc **brief** 8 bit resolution, supported by the actual hardware **value** **8** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_8 8 ``` ### RES\\_BIT\\_10 item doc **brief** 10 bit resolution, supported by the actual hardware **value** **10** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_10 10 ``` ### RES\\_BIT\\_12 item doc **brief** 12 bit resolution, supported by the actual hardware **value** **12** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_12 12 ``` ### RES\\_BIT\\_16 item doc **brief** 16 bit resolution, supported by the actual hardware **value** **16** **readonly** True **C++ defination code**: ```cpp const int RES_BIT_16 16 ``` ## Function ## Class ### ADC item doc **brief** Peripheral adc class **C++ defination code**: ```cpp class ADC ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** ADC constructor **param** **pin**: direction [in], adc pin, int type
    **resolution**: direction [in], adc resolution. default is 1, means use default resolution
    option:
    resolution adc.RES_BIT_8, means 8 bit resolution
    resolution adc.RES_BIT_10, means 10 bit resolution
    resolution adc.RES_BIT_12, means 12 bit resolution
    resolution adc.RES_BIT_16, means 16 bit resolution
    the default resolution is determined by actual hardware.
    **vref**: direction [in], adc refer voltage. default is 1, means use default refer voltage.
    the default vref is determined by actual hardware. range: [0.0, 10.0]
    **static** False **C++ defination code**: ```cpp ADC(int pin, int resolution, float vref 1) ``` #### read item doc **type** func **brief** read adc value **return** adc data, int type
    if resolution is 8 bit, return value range is [0, 255]
    if resolution is 10 bit, return value range is [0, 1023]
    if resolution is 12 bit, return value range is [0, 4095]
    if resolution is 16 bit, return value range is [0, 65535] **static** False **C++ defination code**: ```cpp int read() ``` #### read\\_vol item doc **type** func **brief** read adc voltage **return** adc voltage, float type。the range is [0.0, vref] **static** False **C++ defination code**: ```cpp float read_vol() ```"},"/maixpy/api/maix/peripheral/pwm.html":{"title":"maix.peripheral.pwm","content":" title: maix.peripheral.pwm maix.peripheral.pwm module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.peripheral.pwm` to access this module. ## Module No module ## Enum ## Variable ## Function ## Class ### PWM item doc **brief** Peripheral pwm class **C++ defination code**: ```cpp class PWM ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** PWM constructor **param** **pin**: direction [in], pwm id, int type, like 0, 1, 2 etc.
    **freq**: direction [in], pwm frequency, unit: Hz. int type. default is 1000
    **duty**: direction [in], pwm duty. double type. range is [0, 100], default is 0.
    **enable**: direction [in], enable pwm output right now. bool type. default is true, if false, you need to call enable() to enable pwm output.
    **duty_val**: direction [in], pwm duty value, int type. default 1 means not set and auto calculate by freq and duty.
    This arg directly set pwm duty value, if set, will ignore duty arg.
    duty_val duty / 100 * T_ns, T_ns 1 / freq * 1000000000.
    **throw** If args error or init pwm failed, will throw err::Exception **static** False **C++ defination code**: ```cpp PWM(int id, int freq 1000, double duty 0, bool enable true, int duty_val 1) ``` #### duty item doc **type** func **brief** get or set pwm duty **param** **duty**: direction [in], pwm duty, double type, value in [0, 100], default 1 means only read.
    **return** current duty, float type, if set and set failed will return err::Err **static** False **C++ defination code**: ```cpp double duty(double duty 1) ``` #### duty\\_val item doc **type** func **brief** set pwm duty value **param** **duty_val**: direction [in], pwm duty value. int type. default is 1
    duty_val > 0 means set duty_val
    duty_val 1 or not set, return current duty_val
    **return** int type
    when get duty_val, return current duty_val, else return err::Err code. **static** False **C++ defination code**: ```cpp int duty_val(int duty_val 1) ``` #### freq item doc **type** func **brief** get or set pwm frequency **param** **freq**: direction [in], pwm frequency. int type. default is 1
    freq > 0, set freq
    freq 1 or not set, return current freq
    **return** int type, current freq, if set and set failed will return err::Err **static** False **C++ defination code**: ```cpp int freq(int freq 1) ``` #### enable item doc **type** func **brief** set pwm enable **return** err::Err type, err.Err.ERR_NONE means success **static** False **C++ defination code**: ```cpp err::Err enable() ``` #### disable item doc **type** func **brief** set pwm disable **return** err::Err type, err.Err.ERR_NONE means success **static** False **C++ defination code**: ```cpp err::Err disable() ``` #### is\\_enabled item doc **type** func **brief** get pwm enable status **return** bool type, true means enable, false means disable **static** False **C++ defination code**: ```cpp bool is_enabled() ```"},"/maixpy/api/maix/time.html":{"title":"maix.time","content":" title: maix.time maix.time module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.time` to access this module. ## Module No module ## Enum ## Variable ## Function ### time item doc **brief** Get current time in s **return** current time in s, double type **C++ defination code**: ```cpp double time() ``` ### time\\_ms item doc **brief** Get current time in ms **return** current time in ms, uint64_t type **C++ defination code**: ```cpp uint64_t time_ms() ``` ### time\\_s item doc **brief** Get current time in s **return** current time in s, uint64_t type **C++ defination code**: ```cpp uint64_t time_s() ``` ### time\\_us item doc **brief** Get current time in us **return** current time in us, uint64_t type **C++ defination code**: ```cpp uint64_t time_us() ``` ### time\\_diff item doc **brief** Calculate time difference **param** **last**: last time
    **now**: current time
    **return** time difference **C++ defination code**: ```cpp double time_diff(double last, double now 1) ``` ### sleep item doc **brief** Sleep seconds **param** **s**: seconds, double type
    **C++ defination code**: ```cpp void sleep(double s) ``` ### sleep\\_ms item doc **brief** Sleep milliseconds **param** **ms**: milliseconds, uint64_t type
    **C++ defination code**: ```cpp void sleep_ms(uint64_t ms) ``` ### sleep\\_us item doc **brief** Sleep microseconds **param** **us**: microseconds, uint64_t type
    **C++ defination code**: ```cpp void sleep_us(uint64_t us) ``` ### now item doc **brief** Get current UTC date and time **return** current date and time, DateTime type **C++ defination code**: ```cpp time::DateTime *now() ``` ### localtime item doc **brief** Get local time **return** local time, DateTime type **C++ defination code**: ```cpp time::DateTime *localtime() ``` ### strptime item doc **brief** DateTime from string **param** **str**: date time string
    **format**: date time format
    **return** DateTime **C++ defination code**: ```cpp time::DateTime *strptime(const std::string &str, const std::string &format) ``` ### gmtime item doc **brief** timestamp to DateTime(time zone is UTC (value 0)) **param** **timestamp**: double timestamp
    **return** DateTime **C++ defination code**: ```cpp time::DateTime *gmtime(double timestamp) ``` ## Class ### DateTime item doc **brief** Date and time class **C++ defination code**: ```cpp class DateTime ``` #### year item doc **type** var **brief** Year **static** False **readonly** False **C++ defination code**: ```cpp int year ``` #### month item doc **type** var **brief** Month, 1~12 **static** False **readonly** False **C++ defination code**: ```cpp int month ``` #### day item doc **type** var **brief** Day **static** False **readonly** False **C++ defination code**: ```cpp int day ``` #### hour item doc **type** var **brief** Hour **static** False **readonly** False **C++ defination code**: ```cpp int hour ``` #### minute item doc **type** var **brief** Minute **static** False **readonly** False **C++ defination code**: ```cpp int minute ``` #### second item doc **type** var **brief** Second **static** False **readonly** False **C++ defination code**: ```cpp int second ``` #### microsecond item doc **type** var **brief** Microsecond **static** False **readonly** False **C++ defination code**: ```cpp int microsecond ``` #### yearday item doc **type** var **brief** Year day **static** False **readonly** False **C++ defination code**: ```cpp int yearday ``` #### weekday item doc **type** var **brief** Weekday, 0 is Monday, 6 is Sunday **static** False **readonly** False **C++ defination code**: ```cpp int weekday ``` #### zone item doc **type** var **brief** Time zone **static** False **readonly** False **C++ defination code**: ```cpp float zone ``` #### zone\\_name item doc **type** var **brief** Time zone name **static** False **readonly** False **C++ defination code**: ```cpp std::string zone_name ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor **param** **year**: year
    **month**: month
    **day**: day
    **hour**: hour
    **minute**: minute
    **second**: second
    **microsecond**: microsecond
    **yearday**: year day
    **weekday**: weekday
    **zone**: time zone
    **static** False **C++ defination code**: ```cpp DateTime(int year 0, int month 0, int day 0, int hour 0, int minute 0, int second 0, int microsecond 0, int yearday 0, int weekday 0, int zone 0) ``` #### strftime item doc **type** func **brief** Convert to string **return** date time string **static** False **C++ defination code**: ```cpp std::string strftime(const std::string &format) ``` #### timestamp item doc **type** func **brief** Convert to float timestamp **return** float timestamp **static** False **C++ defination code**: ```cpp double timestamp() ```"},"/maixpy/api/maix/fs.html":{"title":"maix.fs","content":" title: maix.fs maix.fs module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.fs` to access this module. ## Module No module ## Enum ### SEEK item doc **brief** SEEK enums **values** **SEEK_SET**: Seek from beginning of file.
    **SEEK_CUR**: Seek from current position.
    **SEEK_END**: Seek from end of file.
    **C++ defination code**: ```cpp enum SEEK { SEEK_SET 0, // Seek from beginning of file. SEEK_CUR 1, // Seek from current position. SEEK_END 2, // Seek from end of file. } ``` ## Variable ## Function ### isabs item doc **brief** Check if the path is absolute path **param** **path**: path to check
    **return** true if path is absolute path **C++ defination code**: ```cpp bool isabs(const std::string &path) ``` ### isdir item doc **brief** Check if the path is a directory, if not exist, throw exception **param** **path**: path to check
    **return** true if path is a directory **C++ defination code**: ```cpp bool isdir(const std::string &path) ``` ### isfile item doc **brief** Check if the path is a file, if not exist, throw exception **param** **path**: path to check
    **return** true if path is a file **C++ defination code**: ```cpp bool isfile(const std::string &path) ``` ### islink item doc **brief** Check if the path is a link, if not exist, throw exception **param** **path**: path to check
    **return** true if path is a link **C++ defination code**: ```cpp bool islink(const std::string &path) ``` ### symlink item doc **brief** Create soft link **param** **src**: real file path
    **link**: link file path
    **force**: force link, if already have link file, will delet it first then create.
    **C++ defination code**: ```cpp err::Err symlink(const std::string &src, const std::string &link, bool force false) ``` ### exists item doc **brief** Check if the path exists **param** **path**: path to check
    **return** true if path exists **C++ defination code**: ```cpp bool exists(const std::string &path) ``` ### mkdir item doc **brief** Create a directory recursively **param** **path**: path to create
    **exist_ok**: if true, also return true if directory already exists
    **recursive**: if true, create directory recursively, otherwise, only create one directory, default is true
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err mkdir(const std::string &path, bool exist_ok true, bool recursive true) ``` ### rmdir item doc **brief** Remove a directory **param** **path**: path to remove
    **recursive**: if true, remove directory recursively, otherwise, only remove empty directory, default is false
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err rmdir(const std::string &path, bool recursive false) ``` ### remove item doc **brief** Remove a file **param** **path**: path to remove
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err remove(const std::string &path) ``` ### rename item doc **brief** Rename a file or directory **param** **src**: source path
    **dst**: destination path, if destination dirs not exist, will auto create
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **C++ defination code**: ```cpp err::Err rename(const std::string &src, const std::string &dst) ``` ### getsize item doc **brief** Get file size **param** **path**: path to get size
    **return** file size if success, err::Err code if failed **C++ defination code**: ```cpp int getsize(const std::string &path) ``` ### dirname item doc **brief** Get directory name of path **param** **path**: path to get dirname
    **return** dirname if success, empty string if failed **C++ defination code**: ```cpp std::string dirname(const std::string &path) ``` ### basename item doc **brief** Get base name of path **param** **path**: path to get basename
    **return** basename if success, empty string if failed **C++ defination code**: ```cpp std::string basename(const std::string &path) ``` ### abspath item doc **brief** Get absolute path **param** **path**: path to get absolute path
    **return** absolute path if success, empty string if failed **C++ defination code**: ```cpp std::string abspath(const std::string &path) ``` ### getcwd item doc **brief** Get current working directory **return** current working directory absolute path **C++ defination code**: ```cpp std::string getcwd() ``` ### realpath item doc **brief** Get realpath of path **param** **path**: path to get realpath
    **return** realpath if success, empty string if failed **C++ defination code**: ```cpp std::string realpath(const std::string &path) ``` ### splitext item doc **brief** Get file extension **param** **path**: path to get extension
    **return** extension if success, empty string if failed **C++ defination code**: ```cpp std::string splitext(const std::string &path) ``` ### listdir item doc **brief** List files in directory **param** **path**: path to list
    **recursive**: if true, list recursively, otherwise, only list current directory, default is false
    **full_path**: if true, return full path, otherwise, only return basename, default is false
    **return** files list if success, nullptr if failed, you should manually delete it in C++. **C++ defination code**: ```cpp std::vector *listdir(const std::string &path, bool recursive false, bool full_path false) ``` ### open item doc **brief** Open a file, and return a File object **param** **path**: path to open
    **mode**: open mode, support \"r\", \"w\", \"a\", \"r+\", \"w+\", \"a+\", \"rb\", \"wb\", \"ab\", \"rb+\", \"wb+\", \"ab+\"
    **return** File object if success(need to delete object manually in C/C++), nullptr if failed **C++ defination code**: ```cpp fs::File *open(const std::string &path, const std::string &mode) ``` ### tempdir item doc **brief** Get temp files directory **return** temp files directory **C++ defination code**: ```cpp std::string tempdir() ``` ## Class ### File item doc **brief** File read write ops **C++ defination code**: ```cpp class File ``` #### open item doc **type** func **brief** Open a file **param** **path**: path to open
    **mode**: open mode, support \"r\", \"w\", \"a\", \"r+\", \"w+\", \"a+\", \"rb\", \"wb\", \"ab\", \"rb+\", \"wb+\", \"ab+\"
    **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **static** False **C++ defination code**: ```cpp err::Err open(const std::string &path, const std::string &mode) ``` #### close item doc **type** func **brief** Close a file **static** False **C++ defination code**: ```cpp void close() ``` #### read item doc **type** func **brief** Read data from file API2 **param** **size**: max read size
    **return** bytes data if success(need delete manually in C/C++), nullptr if failed **static** False **C++ defination code**: ```cpp std::vector *read(int size) ``` #### readline item doc **type** func **brief** Read line from file **return** line if success, empty string if failed. You need to delete the returned object manually in C/C++. **static** False **C++ defination code**: ```cpp std::string *readline() ``` #### write item doc **type** func **brief** Write data to file API2 **param** **buf**: buffer to write
    **return** write size if success, err::Err code if failed **static** False **C++ defination code**: ```cpp int write(const std::vector &buf) ``` #### seek item doc **type** func **brief** Seek file position **param** **offset**: offset to seek
    **whence**: @see maix.fs.SEEK
    **return** new position if success, err::Err code if failed **static** False **C++ defination code**: ```cpp int seek(int offset, int whence) ``` #### tell item doc **type** func **brief** Get file position **return** file position if success, err::Err code if failed **static** False **C++ defination code**: ```cpp int tell() ``` #### flush item doc **type** func **brief** Flush file **return** err::ERR_NONE(err.Err.ERR_NONE in MaixPy) if success, other error code if failed **static** False **C++ defination code**: ```cpp err::Err flush() ```"},"/maixpy/api/maix/camera.html":{"title":"maix.camera","content":" title: maix.camera maix.camera module, access camera device and get image from it > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.camera` to access this module. ## Module No module ## Enum ## Variable ## Function ### list\\_devices item doc **brief** List all supported camera devices. **return** Returns the path to the camera device. **C++ defination code**: ```cpp std::vector list_devices() ``` ### set\\_regs\\_enable item doc **brief** Enable set camera registers, default is false, if set to true, will not set camera registers, you can manually set registers by write_reg API. **param** **enable**: enable/disable set camera registers
    **C++ defination code**: ```cpp void set_regs_enable(bool enable true) ``` ## Class ### Camera item doc **brief** Camera class **C++ defination code**: ```cpp class Camera ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Camera object **param** **width**: camera width, default is 1, means auto, mostly means max width of camera support
    **height**: camera height, default is 1, means auto, mostly means max height of camera support
    **format**: camera output format, default is image.Format.FMT_RGB888
    **device**: camera device path, you can get devices by list_devices method, by default(value is NULL(None in MaixPy)) means the first device
    **fps**: camera fps, default is 1, means auto, mostly means max fps of camera support
    **buff_num**: camera buffer number, default is 3, means 3 buffer, one used by user, one used for cache the next frame,
    more than one buffer will accelerate image read speed, but will cost more memory.
    **open**: If true, camera will automatically call open() after creation. default is true.
    **static** False **C++ defination code**: ```cpp Camera(int width 1, int height 1, image::Format format image::FMT_RGB888, const char *device nullptr, int fps 1, int buff_num 3, bool open true) ``` #### get\\_ch\\_nums item doc **type** func **brief** Get the number of channels supported by the camera. **return** Returns the maximum number of channels. **static** False **C++ defination code**: ```cpp int get_ch_nums() ``` #### open item doc **type** func **brief** Open camera and run **param** **width**: camera width, default is 1, means auto, mostly means max width of camera support
    **height**: camera height, default is 1, means auto, mostly means max height of camera support
    **format**: camera output format, default same as the constructor's format argument
    **fps**: camera fps, default is 1, means auto, mostly means max fps of camera support
    **buff_num**: camera buffer number, default is 3, means 3 buffer, one used by user, one used for cache the next frame,
    more than one buffer will accelerate image read speed, but will cost more memory.
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err open(int width 1, int height 1, image::Format format image::FMT_INVALID, int fps 1, int buff_num 1) ``` #### read item doc **type** func **brief** Get one frame image from camera buffer, must call open method before read.\\nIf open method not called, will call it automatically, if open failed, will throw exception!\\nSo call open method before read is recommended. **param** **buff**: buffer to store image data, if buff is nullptr, will alloc memory automatically.
    In MaixPy, default to None, you can create a image.Image object, then pass img.data() to buff.
    **block**: block read, default is true, means block util read image successfully,
    if set to false, will return nullptr if no image in buffer
    **return** image::Image object, if failed, return nullptr, you should delete if manually in C++ **static** False **C++ defination code**: ```cpp image::Image *read(void *buff nullptr, size_t buff_size 0, bool block true) ``` #### clear\\_buff item doc **type** func **brief** Clear buff to ensure the next read image is the latest image **static** False **C++ defination code**: ```cpp void clear_buff() ``` #### skip\\_frames item doc **type** func **brief** Read some frames and drop, this is usually used avoid read not stable image when camera just opened. **param** **num**: number of frames to read and drop
    **static** False **C++ defination code**: ```cpp void skip_frames(int num) ``` #### close item doc **type** func **brief** Close camera **static** False **C++ defination code**: ```cpp void close() ``` #### add\\_channel item doc **type** func **brief** Add a new channel and return a new Camera object, you can use close() to close this channel. **param** **width**: camera width, default is 1, means auto, mostly means max width of camera support
    **height**: camera height, default is 1, means auto, mostly means max height of camera support
    **format**: camera output format, default is RGB888
    **fps**: camera fps, default is 1, means auto, mostly means max fps of camera support
    **buff_num**: camera buffer number, default is 3, means 3 buffer, one used by user, one used for cache the next frame,
    more than one buffer will accelerate image read speed, but will cost more memory.
    **open**: If true, camera will automatically call open() after creation. default is true.
    **return** new Camera object **static** False **C++ defination code**: ```cpp camera::Camera *add_channel(int width 1, int height 1, image::Format format image::FMT_RGB888, int fps 1, int buff_num 3, bool open true) ``` #### is\\_opened item doc **type** func **brief** Check if camera is opened **return** true if camera is opened, false if not **static** False **C++ defination code**: ```cpp bool is_opened() ``` #### is\\_closed item doc **type** func **brief** check camera device is closed or not **return** closed or not, bool type **static** False **C++ defination code**: ```cpp bool is_closed() ``` #### width item doc **type** func **brief** Get camera width **return** camera width **static** False **C++ defination code**: ```cpp int width() ``` #### height item doc **type** func **brief** Get camera height **return** camera height **static** False **C++ defination code**: ```cpp int height() ``` #### fps item doc **type** func **brief** Get camera fps **return** camera fps **static** False **C++ defination code**: ```cpp int fps() ``` #### format item doc **type** func **brief** Get camera output format **return** camera output format, image::Format object **static** False **C++ defination code**: ```cpp image::Format format() ``` #### buff\\_num item doc **type** func **brief** Get camera buffer number **return** camera buffer number **static** False **C++ defination code**: ```cpp int buff_num() ``` #### hmirror item doc **type** func **brief** Get camera horizontal mirror **return** camera horizontal mirror **static** False **C++ defination code**: ```cpp int hmirror(int value 1) ``` #### vflip item doc **type** func **brief** Get camera vertical flip **return** camera vertical flip **static** False **C++ defination code**: ```cpp int vflip(int value 1) ``` #### exposure item doc **type** func **brief** Get camera exposure **return** camera exposure **static** False **C++ defination code**: ```cpp float exposure(int value 1) ``` #### gain item doc **type** func **brief** Get camera gain **return** camera gain **static** False **C++ defination code**: ```cpp float gain(int value 1) ``` #### device item doc **type** func **brief** Get camera device path **return** camera device path **static** False **C++ defination code**: ```cpp std::string device() ``` #### write\\_reg item doc **type** func **brief** Write camera register **param** **addr**: register address
    **data**: register data
    **bit_width**: register data bit width, default is 8
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err write_reg(int addr, int data, int bit_width 8) ``` #### read\\_reg item doc **type** func **brief** Read camera register **param** **addr**: register address
    **bit_width**: register data bit width, default is 8
    **return** register data, 1 means failed **static** False **C++ defination code**: ```cpp int read_reg(int addr, int bit_width 8) ``` #### show\\_colorbar item doc **type** func **brief** Camera output color bar image for test **param** **enable**: enable/disable color bar
    **return** error code, err::ERR_NONE means success, others means failed **static** False **C++ defination code**: ```cpp err::Err show_colorbar(bool enable) ``` #### set\\_resolution item doc **type** func **brief** Set camera resolution **param** **width**: new width
    **height**: new height
    **static** False **C++ defination code**: ```cpp err::Err set_resolution(int width, int height) ``` #### set\\_hmirror item doc **type** func **brief** Set camera mirror **param** **en**: enable/disable mirror
    **static** False **C++ defination code**: ```cpp err::Err set_hmirror(bool en) ``` #### set\\_vflip item doc **type** func **brief** Set camera flip **param** **en**: enable/disable flip
    **static** False **C++ defination code**: ```cpp err::Err set_vflip(bool en) ``` #### set\\_luma item doc **type** func **brief** Set camera constrast **param** **int**: constrast value
    **static** False **C++ defination code**: ```cpp err::Err set_luma(int value) ``` #### set\\_constrast item doc **type** func **brief** Set camera constrast **param** **int**: constrast value
    **static** False **C++ defination code**: ```cpp err::Err set_constrast(int value) ``` #### set\\_saturation item doc **type** func **brief** Set camera saturation **param** **int**: saturation value
    **static** False **C++ defination code**: ```cpp err::Err set_saturation(int value) ```"},"/maixpy/api/maix/nn.html":{"title":"maix.nn","content":" title: maix.nn maix.nn module > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.nn` to access this module. ## Module module brief [F](./nn/F.html) maix.nn.F module ## Enum ## Variable ## Function ## Class ### YOLOv5 item doc **brief** YOLOv5 class **C++ defination code**: ```cpp class YOLOv5 ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor of YOLOv5 class **param** **model**: model path, default empty, you can load model later by load function.
    **throw** If model arg is not empty and load failed, will throw err::Exception. **static** False **C++ defination code**: ```cpp YOLOv5(const string &model \"\") ``` #### load item doc **type** func **brief** Load model from file **param** **model**: Model path want to load
    **return** err::Err **static** False **C++ defination code**: ```cpp err::Err load(const string &model) ``` #### detect item doc **type** func **brief** Detect objects from image **param** **img**: Image want to detect, if image's size not match model input's, will auto resize with fit method.
    **conf_th**: Confidence threshold, default 0.5.
    **iou_th**: IoU threshold, default 0.45.
    **fit**: Resize method, default image.Fit.FIT_CONTAIN.
    **throw** If image format not match model input format, will throw err::Exception. **return** Object list. In C++, you should delete it after use. **static** False **C++ defination code**: ```cpp std::vector *detect(image::Image &img, float conf_th 0.5, float iou_th 0.45, maix::image::Fit fit maix::image::FIT_CONTAIN) ``` #### input\\_size item doc **type** func **brief** Get model input size **return** model input size **static** False **C++ defination code**: ```cpp image::Size input_size() ``` #### input\\_width item doc **type** func **brief** Get model input width **return** model input size of width **static** False **C++ defination code**: ```cpp int input_width() ``` #### input\\_height item doc **type** func **brief** Get model input height **return** model input size of height **static** False **C++ defination code**: ```cpp int input_height() ``` #### input\\_format item doc **type** func **brief** Get input image format **return** input image format, image::Format type. **static** False **C++ defination code**: ```cpp image::Format input_format() ``` #### labels item doc **type** var **brief** Labels list **static** False **readonly** False **C++ defination code**: ```cpp std::vector labels ``` #### label\\_path item doc **type** var **brief** Label file path **static** False **readonly** False **C++ defination code**: ```cpp std::string label_path ``` #### mean item doc **type** var **brief** Get mean value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector mean ``` #### scale item doc **type** var **brief** Get scale value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector scale ``` #### anchors item doc **type** var **brief** Get anchors **static** False **readonly** False **C++ defination code**: ```cpp std::vector anchors ``` ### Classifier item doc **brief** Classifier **C++ defination code**: ```cpp class Classifier ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Classifier object **param** **model**: MUD model path, if empty, will not load model, you can call load() later.
    if not empty, will load model and will raise err::Exception if load failed.
    **static** False **C++ defination code**: ```cpp Classifier(const string &model \"\") ``` #### load item doc **type** func **brief** Load model from file, model format is .mud,\\nMUD file should contain [extra] section, have key values:\\n model_type: classifier\\n input_type: rgb or bgr\\n mean: 123.675, 116.28, 103.53\\n scale: 0.017124753831663668, 0.01750700280112045, 0.017429193899782137\\n labels: imagenet_classes.txt **param** **model**: MUD model path
    **return** error code, if load failed, return error code **static** False **C++ defination code**: ```cpp err::Err load(const string &model) ``` #### classify item doc **type** func **brief** Forward image to model, get result. Only for image input, use classify_raw for tensor input. **param** **img**: image, format should match model input_type, or will raise err.Exception
    **softmax**: if true, will do softmax to result, or will return raw value
    **throw** If error occurred, will raise err::Exception, you can find reason in log, mostly caused by args error or hardware error. **return** result, a list of (label, score). In C++, you need to delete it after use. **static** False **C++ defination code**: ```cpp std::vector> *classify(image::Image &img, bool softmax true) ``` #### classify\\_raw item doc **type** func **brief** Forward tensor data to model, get result **param** **data**: tensor data, format should match model input_type, or will raise err.Excetion
    **softmax**: if true, will do softmax to result, or will return raw value
    **throw** If error occurred, will raise err::Exception, you can find reason in log, mostly caused by args error or hardware error. **return** result, a list of (label, score). In C++, you need to delete it after use. **static** False **C++ defination code**: ```cpp std::vector> *classify_raw(tensor::Tensor &data, bool softmax true) ``` #### input\\_size item doc **type** func **brief** Get model input size, only for image input **return** model input size **static** False **C++ defination code**: ```cpp image::Size input_size() ``` #### input\\_width item doc **type** func **brief** Get model input width, only for image input **return** model input size of width **static** False **C++ defination code**: ```cpp int input_width() ``` #### input\\_height item doc **type** func **brief** Get model input height, only for image input **return** model input size of height **static** False **C++ defination code**: ```cpp int input_height() ``` #### input\\_format item doc **type** func **brief** Get input image format, only for image input **return** input image format, image::Format type. **static** False **C++ defination code**: ```cpp image::Format input_format() ``` #### input\\_shape item doc **type** func **brief** Get input shape, if have multiple input, only return first input shape **return** input shape, list type **static** False **C++ defination code**: ```cpp std::vector input_shape() ``` #### labels item doc **type** var **brief** Labels list **static** False **readonly** False **C++ defination code**: ```cpp std::vector labels ``` #### label\\_path item doc **type** var **brief** Label file path **static** False **readonly** False **C++ defination code**: ```cpp std::string label_path ``` #### mean item doc **type** var **brief** Get mean value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector mean ``` #### scale item doc **type** var **brief** Get scale value, list type **static** False **readonly** False **C++ defination code**: ```cpp std::vector scale ``` ### MUD item doc **brief** MUD(model universal describe file) class **C++ defination code**: ```cpp class MUD ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** MUD constructor **param** **model_path**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    If model_path set, will load model from file, load failed will raise err.Exception.
    If model_path not set, you can load model later by load function.
    **static** False **C++ defination code**: ```cpp MUD(const char *model_path nullptr) ``` #### load item doc **type** func **brief** Load model from file **param** **model_path**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    **return** error code, if load success, return err::ERR_NONE **static** False **C++ defination code**: ```cpp err::Err load(const std::string &model_path) ``` #### type item doc **type** var **brief** Model type, string type **static** False **readonly** False **C++ defination code**: ```cpp std::string type ``` #### items item doc **type** var **brief** Model config items, different model type has different config items **static** False **readonly** False **C++ defination code**: ```cpp std::map> items ``` ### LayerInfo item doc **brief** NN model layer info **C++ defination code**: ```cpp class LayerInfo ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** LayerInfo constructor **param** **name**: direction [in], layer name
    **dtype**: direction [in], layer data type
    **shape**: direction [in], layer shape
    **static** False **C++ defination code**: ```cpp LayerInfo(const std::string &name \"\", tensor::DType dtype tensor::DType::FLOAT32, std::vector shape std::vector()) ``` #### name item doc **type** var **brief** Layer name **static** False **readonly** False **C++ defination code**: ```cpp std::string name ``` #### dtype item doc **type** var **brief** Layer data type **attention** If model is quantized, this is the real quantized data type like int8 float16,
    in most scene, inputs and outputs we actually use float32 in API like forward. **static** False **readonly** False **C++ defination code**: ```cpp tensor::DType dtype ``` #### shape item doc **type** var **brief** Layer shape **static** False **readonly** False **C++ defination code**: ```cpp std::vector shape ``` #### to\\_str item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** To string **static** False **C++ defination code**: ```cpp std::string __str__() ``` ### NN item doc **brief** Neural network class **C++ defination code**: ```cpp class NN ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Neural network constructor **param** **model**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    If model_path set, will load model from file, load failed will raise err.Exception.
    If model_path not set, you can load model later by load function.
    **static** False **C++ defination code**: ```cpp NN(const std::string &model \"\") ``` #### load item doc **type** func **brief** Load model from file **param** **model**: direction [in], model file path, model format can be MUD(model universal describe file) file.
    **return** error code, if load success, return err::ERR_NONE **static** False **C++ defination code**: ```cpp err::Err load(const std::string &model) ``` #### loaded item doc **type** func **brief** Is model loaded **return** true if model loaded, else false **static** False **C++ defination code**: ```cpp bool loaded() ``` #### inputs\\_info item doc **type** func **brief** Get model input layer info **return** input layer info **static** False **C++ defination code**: ```cpp std::vector inputs_info() ``` #### outputs\\_info item doc **type** func **brief** Get model output layer info **return** output layer info **static** False **C++ defination code**: ```cpp std::vector outputs_info() ``` #### extra\\_info item doc **type** func **brief** Get model extra info define in MUD file **return** extra info, dict type, key value object, attention: key and value are all string type. **static** False **C++ defination code**: ```cpp std::map extra_info() ``` #### forward item doc **type** func **brief** forward run model, get output of model,\\nthis is specially for MaixPy, not efficient, but easy to use in MaixPy **param** **input**: direction [in], input tensor
    **return** output tensor. In C++, you should manually delete tensors in return value and return value. **static** False **C++ defination code**: ```cpp tensor::Tensors *forward(tensor::Tensors &inputs) ``` #### forward\\_image item doc **type** func **brief** forward model, param is image **param** **img**: input image
    **mean**: mean value, a list type, e.g. [0.485, 0.456, 0.406], default is empty list means not normalize.
    **scale**: scale value, a list type, e.g. [1/0.229, 1/0.224, 1/0.225], default is empty list means not normalize.
    **fit**: fit mode, if the image size of input not equal to model's input, it will auto resize use this fit method,
    default is image.Fit.FIT_FILL for easy coordinate calculation, but for more accurate result, use image.Fit.FIT_CONTAIN is better.
    **return** output tensor. In C++, you should manually delete tensors in return value and return value. **static** False **C++ defination code**: ```cpp tensor::Tensors *forward_image(image::Image &img, std::vector mean std::vector(), std::vector scale std::vector(), image::Fit fit image::Fit::FIT_FILL) ``` ### Object item doc **brief** Object for detect result **C++ defination code**: ```cpp class Object ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Constructor of Object for detect result **param** **x**: left top x
    **y**: left top y
    **w**: width
    **h**: height
    **class_id**: class id
    **score**: score
    **static** False **C++ defination code**: ```cpp Object(int x 0, int y 0, int w 0, int h 0, int class_id 0, float score 0) ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** Object info to string **return** Object info string **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### x item doc **type** var **brief** Object left top coordinate x **static** False **readonly** False **C++ defination code**: ```cpp int x ``` #### y item doc **type** var **brief** Object left top coordinate y **static** False **readonly** False **C++ defination code**: ```cpp int y ``` #### w item doc **type** var **brief** Object width **static** False **readonly** False **C++ defination code**: ```cpp int w ``` #### h item doc **type** var **brief** Object height **static** False **readonly** False **C++ defination code**: ```cpp int h ``` #### class\\_id item doc **type** var **brief** Object class id **static** False **readonly** False **C++ defination code**: ```cpp int class_id ``` #### score item doc **type** var **brief** Object score **static** False **readonly** False **C++ defination code**: ```cpp float score ```"},"/maixpy/api/maix/image.html":{"title":"maix.image","content":" title: maix.image maix.image module, image related definition and functions > This module is generated from [MaixCDK](https://github.com/sipeed/MaixCDK) > You can use `maix.image` to access this module. ## Module No module ## Enum ### Format item doc **brief** Image formats **attention** for developers, update this enum will also need to update the fmt_size in maix_image.cpp **values** **FMT_RGB888**: RGBRGB...RGB, R at the lowest address
    **FMT_BGR888**: BGRBGR...BGR, B at the lowest address
    **FMT_RGBA8888**: RGBARGBA...RGBA, R at the lowest address
    **FMT_BGRA8888**: BGRABGRA...BGRA, B at the lowest address
    **FMT_RGB565**:
    **FMT_BGR565**:
    **FMT_YUV422SP**: YYY...UVUVUV...UVUV
    **FMT_YUV422P**: YYY...UUU...VVV
    **FMT_YVU420SP**: YYY...VUVUVU...VUVU, NV21
    **FMT_YUV420SP**: YYY...UVUVUV...UVUV, NV12
    **FMT_YVU420P**: YYY...VVV...UUU
    **FMT_YUV420P**: YYY...UUU...VVV
    **FMT_GRAYSCALE**:
    **FMT_UNCOMPRESSED_MAX**:
    **FMT_COMPRESSED_MIN**:
    **FMT_JPEG**:
    **FMT_PNG**:
    **FMT_COMPRESSED_MAX**:
    **FMT_INVALID**: format not valid
    **C++ defination code**: ```cpp enum Format { FMT_RGB888 0, // RGBRGB...RGB, R at the lowest address FMT_BGR888, // BGRBGR...BGR, B at the lowest address FMT_RGBA8888, // RGBARGBA...RGBA, R at the lowest address FMT_BGRA8888, // BGRABGRA...BGRA, B at the lowest address FMT_RGB565, FMT_BGR565, FMT_YUV422SP, // YYY...UVUVUV...UVUV FMT_YUV422P, // YYY...UUU...VVV FMT_YVU420SP, // YYY...VUVUVU...VUVU, NV21 FMT_YUV420SP, // YYY...UVUVUV...UVUV, NV12 FMT_YVU420P, // YYY...VVV...UUU FMT_YUV420P, // YYY...UUU...VVV FMT_GRAYSCALE, FMT_UNCOMPRESSED_MAX, // compressed format below, not compressed should define upper FMT_COMPRESSED_MIN, FMT_JPEG, FMT_PNG, FMT_COMPRESSED_MAX, FMT_INVALID 0xFF // format not valid } ``` ### Fit item doc **brief** Object fit method **values** **FIT_NONE**: no object fit, keep original
    **FIT_FILL**: width to new width, height to new height, may be stretch
    **FIT_CONTAIN**: keep aspect ratio, fill blank area with black color
    **FIT_COVER**: keep aspect ratio, crop image to fit new size
    **FIT_MAX**:
    **C++ defination code**: ```cpp enum Fit { FIT_NONE 1, // no object fit, keep original FIT_FILL 0, // width to new width, height to new height, may be stretch FIT_CONTAIN, // keep aspect ratio, fill blank area with black color FIT_COVER, // keep aspect ratio, crop image to fit new size FIT_MAX } ``` ### ResizeMethod item doc **brief** Resize method **values** **NEAREST**:
    **BILINEAR**:
    **BICUBIC**:
    **AREA**:
    **LANCZOS**:
    **HAMMING**:
    **RESIZE_METHOD_MAX**:
    **C++ defination code**: ```cpp enum ResizeMethod { NEAREST 0, BILINEAR, BICUBIC, AREA, LANCZOS, HAMMING, RESIZE_METHOD_MAX } ``` ### ApriltagFamilies item doc **brief** Family of apriltag **values** **TAG16H5**:
    **TAG25H7**:
    **TAG25H9**:
    **TAG36H10**:
    **TAG36H11**:
    **ARTOOLKIT**:
    **C++ defination code**: ```cpp enum ApriltagFamilies { TAG16H5 1, TAG25H7 2, TAG25H9 4, TAG36H10 8, TAG36H11 16, ARTOOLKIT 32 } ``` ### TemplateMatch item doc **brief** Template match method **values** **SEARCH_EX**: Exhaustive search
    **SEARCH_DS**: Diamond search
    **C++ defination code**: ```cpp enum TemplateMatch { SEARCH_EX, // Exhaustive search SEARCH_DS, // Diamond search } ``` ### CornerDetector item doc **brief** CornerDetector class **values** **CORNER_FAST**:
    **CORNER_AGAST**:
    **C++ defination code**: ```cpp enum CornerDetector { CORNER_FAST, CORNER_AGAST } ``` ### EdgeDetector item doc **brief** EdgeDetector class **values** **EDGE_CANNY**:
    **EDGE_SIMPLE**:
    **C++ defination code**: ```cpp enum EdgeDetector { EDGE_CANNY, EDGE_SIMPLE, } ``` ## Variable ### fmt\\_size item doc **brief** Image format size in bytes **attention** It's a copy of this variable in MaixPy,
    so change it in C++ (e.g. update var in hello function) will not take effect the var inMaixPy.
    So we add const for this var to avoid this mistake. **value** **{
    3,
    3,
    4,
    4,
    2,
    2,
    2,
    2,
    1.5,
    1.5,
    1.5,
    1.5,
    1,
    0,
    0,
    0,
    0,
    0
    }** **readonly** True **C++ defination code**: ```cpp const std::vector fmt_size { 3, 3, 4, 4, 2, 2, 2, 2, 1.5, 1.5, 1.5, 1.5, 1, 0, 0, 0, 0, 0 } ``` ### fmt\\_names item doc **brief** Image format string **value** **{
    \"RGB888\",
    \"BGR888\",
    \"RGBA8888\",
    \"BGRA8888\",
    \"RGB565\",
    \"BGR565\",
    \"YUV422SP\",
    \"YUV422P\",
    \"YVU420SP\",
    \"YUV420SP\",
    \"YVU420P\"
    \"YUV420P\",
    \"GRAYSCALE\",
    \"MAX\"}** **readonly** True **C++ defination code**: ```cpp const std::vector fmt_names { \"RGB888\", \"BGR888\", \"RGBA8888\", \"BGRA8888\", \"RGB565\", \"BGR565\", \"YUV422SP\", \"YUV422P\", \"YVU420SP\", \"YUV420SP\", \"YVU420P\" \"YUV420P\", \"GRAYSCALE\", \"MAX\"} ``` ### COLOR\\_WHITE item doc **brief** Predefined color white **value** **image::Color::from_rgb(255, 255, 255)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_WHITE image::Color::from_rgb(255, 255, 255) ``` ### COLOR\\_BLACK item doc **brief** Predefined color black **value** **image::Color::from_rgb(0, 0, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_BLACK image::Color::from_rgb(0, 0, 0) ``` ### COLOR\\_RED item doc **brief** Predefined color red **value** **image::Color::from_rgb(255, 0, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_RED image::Color::from_rgb(255, 0, 0) ``` ### COLOR\\_GREEN item doc **brief** Predefined color green **value** **image::Color::from_rgb(0, 255, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_GREEN image::Color::from_rgb(0, 255, 0) ``` ### COLOR\\_BLUE item doc **brief** Predefined color blue **value** **image::Color::from_rgb(0, 0, 255)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_BLUE image::Color::from_rgb(0, 0, 255) ``` ### COLOR\\_YELLOW item doc **brief** Predefined color yellow **value** **image::Color::from_rgb(255, 255, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_YELLOW image::Color::from_rgb(255, 255, 0) ``` ### COLOR\\_PURPLE item doc **brief** Predefined color purple **value** **image::Color::from_rgb(143, 0, 255)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_PURPLE image::Color::from_rgb(143, 0, 255) ``` ### COLOR\\_ORANGE item doc **brief** Predefined color orange **value** **image::Color::from_rgb(255, 127, 0)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_ORANGE image::Color::from_rgb(255, 127, 0) ``` ### COLOR\\_GRAY item doc **brief** Predefined color gray **value** **image::Color::from_rgb(127, 127, 127)** **readonly** True **C++ defination code**: ```cpp const image::Color COLOR_GRAY image::Color::from_rgb(127, 127, 127) ``` ## Function ### load item doc **brief** Load image from file, and convert to Image object **param** **path**: image file path
    **format**: read as this format, if not match, will convert to this format, by default is RGB888
    **return** Image object **C++ defination code**: ```cpp image::Image *load(const char *path, image::Format format image::Format::FMT_RGB888) ``` ### from\\_bytes item doc **brief** Create image from bytes **param** **width**: image width
    **height**: image height
    **format**: image format
    **data**: image data, if data is None, will malloc memory for image data
    If the image is in jpeg format, data must be filled in.
    **copy**: if true and data is not None, will copy data to new buffer, else will use data directly. default is true to avoid memory leak.
    Use it carefully!!!
    **return** Image object **C++ defination code**: ```cpp image::Image *from_bytes(int width, int height, image::Format format, Bytes *data, bool copy true) ``` ### load\\_font item doc **brief** Load font from file **param** **name**: font name, used to identify font
    **path**: font file path, support ttf, ttc, otf
    **size**: font size, font height, by default is 16
    **return** error code, err::ERR_NONE is ok, other is error **C++ defination code**: ```cpp err::Err load_font(const std::string &name, const char *path, int size 16) ``` ### set\\_default\\_font item doc **brief** Set default font, if not call this method, default is hershey_plain **param** **name**: font name, supported names can be get by fonts()
    **return** error code, err::ERR_NONE is ok, other is error **C++ defination code**: ```cpp err::Err set_default_font(const std::string &name) ``` ### fonts item doc **brief** Get all loaded fonts **return** all loaded fonts, string list type **C++ defination code**: ```cpp std::vector *fonts() ``` ### string\\_size item doc **brief** Get text rendered width and height **param** **string**: text content
    **scale**: font scale, by default(value is 1)
    **thickness**: text thickness(line width), by default(value is 1)
    **return** text rendered width and height, [width, height] **C++ defination code**: ```cpp image::Size string_size(std::string string, float scale 1, int thickness 1, const std::string &font \"\") ``` ### cv2image item doc **brief** OpenCV Mat(numpy array object) to Image object **param** **array**: numpy array object, must be a 3 dim or 2 dim continuous array with shape hwc or hw
    **return** Image object **C++ defination code**: ```cpp image::Image *cv2image(py::array_t array, bool bgr true, bool copy true) ``` ### image2cv item doc **brief** Image object to OpenCV Mat(numpy array object) **param** **img**: Image object
    **return** numpy array object **C++ defination code**: ```cpp py::array_t image2cv(image::Image *img, bool bgr true, bool copy true) ``` ## Class ### Size item doc **brief** Image size type **C++ defination code**: ```cpp class Size ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Construct a new Size object **param** **width**: image width
    **height**: image height
    **static** False **C++ defination code**: ```cpp Size(int width 0, int height 0) ``` #### width item doc **type** func **brief** width of size **param** **width**: set new width, if not set, only return current width
    **static** False **C++ defination code**: ```cpp int width(int width 1) ``` #### height item doc **type** func **brief** height of size **param** **height**: set new height, if not set, only return current height
    **static** False **C++ defination code**: ```cpp int height(int height 1) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index**: 0 for width, 1 for height
    **return** int& width or height **static** False **C++ defination code**: ```cpp int &operator[](int index) ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** to string **static** False **C++ defination code**: ```cpp std::string __str__() ``` ### Line item doc **brief** Line class **C++ defination code**: ```cpp class Line ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Line constructor **param** **x1**: coordinate x1 of the straight line
    **y1**: coordinate y1 of the straight line
    **x2**: coordinate x2 of the straight line
    **y2**: coordinate y2 of the straight line
    **magnitude**: magnitude of the straight line after Hough transformation
    **theta**: angle of the straight line after Hough transformation
    **rho**: p value of the straight line after Hough transformation
    **static** False **C++ defination code**: ```cpp Line(int x1, int y1, int x2, int y2, int magnitude 0, int theta 0, int rho 0) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: get x1 of line
    [1] get y1 of line
    [2] get x2 of line
    [3] get y2 of line
    [4] get length of line
    [5] get magnitude of the straight line after Hough transformation
    [6] get angle of the straight line after Hough transformation (0 179 degrees)
    [7] get p value of the straight line after Hough transformation
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### x1 item doc **type** func **brief** get x1 of line **return** return x1 of the line, type is int **static** False **C++ defination code**: ```cpp int x1() ``` #### y1 item doc **type** func **brief** get y1 of line **return** return y1 of the line, type is int **static** False **C++ defination code**: ```cpp int y1() ``` #### x2 item doc **type** func **brief** get x2 of line **return** return x2 of the line, type is int **static** False **C++ defination code**: ```cpp int x2() ``` #### y2 item doc **type** func **brief** get y2 of line **return** return y2 of the line, type is int **static** False **C++ defination code**: ```cpp int y2() ``` #### length item doc **type** func **brief** get length of line **return** return length of the line, type is int **static** False **C++ defination code**: ```cpp int length() ``` #### magnitude item doc **type** func **brief** get magnitude of the straight line after Hough transformation **return** return magnitude, type is int **static** False **C++ defination code**: ```cpp int magnitude() ``` #### theta item doc **type** func **brief** get angle of the straight line after Hough transformation (0 179 degrees) **return** return angle, type is int **static** False **C++ defination code**: ```cpp int theta() ``` #### rho item doc **type** func **brief** get p value of the straight line after Hough transformation **return** return p value, type is int **static** False **C++ defination code**: ```cpp int rho() ``` ### Rect item doc **brief** Rect class **C++ defination code**: ```cpp class Rect ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Rect constructor **param** **corners**: corners of rect
    **x**: coordinate x of the straight line
    **y**: coordinate y of the straight line
    **w**: coordinate w of the straight line
    **h**: coordinate h of the straight line
    **magnitude**: magnitude of the straight line after Hough transformation
    **static** False **C++ defination code**: ```cpp Rect(std::vector> &corners, int x, int y, int w, int h, int magnitude 0) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: get x of rect
    [1] get y of rect
    [2] get w of rect
    [3] get h of rect
    [4] get magnitude of the straight line after Hough transformation
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### corners item doc **type** func **brief** get corners of rect **return** return the coordinate of the rect. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of rect **return** return the rectangle of the rect. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of rect **return** return x of the rect, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of rect **return** return y of the rect, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of rect **return** return w of the rect, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of rect **return** return h of the rect, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### magnitude item doc **type** func **brief** get magnitude of the straight line after Hough transformation **return** return magnitude, type is int **static** False **C++ defination code**: ```cpp int magnitude() ``` ### Circle item doc **brief** circle class **C++ defination code**: ```cpp class Circle ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Circle constructor **param** **x**: coordinate x of the circle
    **y**: coordinate y of the circle
    **r**: coordinate r of the circle
    **magnitude**: coordinate y2 of the straight line
    **static** False **C++ defination code**: ```cpp Circle(int x, int y, int r, int magnitude) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: get x of circle
    [1] get y of circle
    [2] get r of circle
    [3] get magnitude of the circle after Hough transformation
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### x item doc **type** func **brief** get x of circle **return** return x of the circle, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of circle **return** return y of the circle, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### r item doc **type** func **brief** get r of circle **return** return r of the circle, type is int **static** False **C++ defination code**: ```cpp int r() ``` #### magnitude item doc **type** func **brief** get magnitude of the circle after Hough transformation **return** return magnitude, type is int **static** False **C++ defination code**: ```cpp int magnitude() ``` ### Blob item doc **brief** Blob class **C++ defination code**: ```cpp class Blob ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Blob constructor **param** **rect**: blob rect, type is std::vector
    **corners**: blob corners, type is std::vector>
    **mini_corners**: blob mini_corners, type is std::vector>
    **cx**: blob center x, type is float
    **cy**: blob center y, type is float
    **pixels**: blob pixels, type is int
    **rotation**: blob rotation, type is float
    **code**: blob code, type is int
    **count**: blob count, type is int
    **perimeter**: blob perimeter, type is int
    **roundness**: blob roundness, type is float
    **x_hist_bins**: blob x_hist_bins, type is std::vector
    **y_hist_bins**: blob y_hist_bins, type is std::vector
    **static** False **C++ defination code**: ```cpp Blob(std::vector &rect, std::vector> &corners, std::vector> &mini_corners,float cx, float cy, int pixels, float rotation, int code, int count, int perimeter, float roundness, std::vector &x_hist_bins, std::vector &y_hist_bins) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: Returns the blob’s bounding box x coordinate
    [1] Returns the blob’s bounding box y coordinate
    [2] Returns the blob’s bounding box w coordinate
    [3] Returns the blob’s bounding box h coordinate
    [4] Returns the number of pixels that are part of this blob
    [5] Returns the centroid x position of the blob
    [6] Returns the centroid y position of the blob
    **return** int& width or height **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### corners item doc **type** func **brief** get blob corners **return** Returns a list of 4 (x,y) tuples of the 4 corners of the object.
    (x0, y0)___________(x1, y1)



    ___________
    (x3, y3) (x2, y2)
    note: the order of corners may change **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### mini\\_corners item doc **type** func **brief** get blob mini corners **return** Returns a list of 4 (x,y) tuples of the 4 corners than bound the min area rectangle of the blob.
    (x0, y0)___________(x1, y1)



    ___________
    (x3, y3) (x2, y2)
    note: the order of corners may change **static** False **C++ defination code**: ```cpp std::vector> mini_corners() ``` #### rect item doc **type** func **brief** get blob rect **return** Returns the center coordinates and width and height of the rectangle. format is (x, y, w, h)
    w
    (x, y) ___________

    h

    ___________ **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get blob x of the upper left coordinate **return** Returns the x coordinate of the upper left corner of the rectangle. **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get blob y of the upper left coordinate **return** Returns the y coordinate of the upper left corner of the rectangle. **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get blob width **return** Returns the blob’s bounding box w coordinate **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get blob height **return** Returns the blob’s bounding box h coordinate **static** False **C++ defination code**: ```cpp int h() ``` #### pixels item doc **type** func **brief** get blob pixels **return** Returns the number of pixels that are part of this blob. **static** False **C++ defination code**: ```cpp int pixels() ``` #### cx item doc **type** func **brief** get blob center x **return** Returns the centroid x position of the blob **static** False **C++ defination code**: ```cpp int cx() ``` #### cy item doc **type** func **brief** get blob center y **return** Returns the centroid y position of the blob **static** False **C++ defination code**: ```cpp int cy() ``` #### cxf item doc **type** func **brief** get blob center x **return** Returns the centroid x position of the blob **static** False **C++ defination code**: ```cpp float cxf() ``` #### cyf item doc **type** func **brief** get blob center y **return** Returns the centroid y position of the blob **static** False **C++ defination code**: ```cpp float cyf() ``` #### rotation item doc **type** func **brief** get blob rotation **return** Returns the rotation of the blob in radians (float). If the blob is like a pencil or pen this value will be unique for 0 180 degrees. **static** False **C++ defination code**: ```cpp float rotation() ``` #### rotation\\_rad item doc **type** func **brief** get blob rotation_rad **return** Returns the rotation of the blob in radians **static** False **C++ defination code**: ```cpp float rotation_rad() ``` #### rotation\\_deg item doc **type** func **brief** get blob rotation_deg **return** Returns the rotation of the blob in degrees. **static** False **C++ defination code**: ```cpp int rotation_deg() ``` #### code item doc **type** func **brief** get blob code **return** Returns a 32 bit binary number with a bit set in it for each color threshold that’s part of this blob **static** False **C++ defination code**: ```cpp int code() ``` #### count item doc **type** func **brief** get blob count **return** Returns the number of blobs merged into this blob. **static** False **C++ defination code**: ```cpp int count() ``` #### perimeter item doc **type** func **brief** get blob merge_cnt **return** Returns the number of pixels on this blob’s perimeter. **static** False **C++ defination code**: ```cpp int perimeter() ``` #### roundness item doc **type** func **brief** get blob roundness **return** Returns a value between 0 and 1 representing how round the object is **static** False **C++ defination code**: ```cpp float roundness() ``` #### elongation item doc **type** func **brief** get blob elongation **returnReturns** a value between 0 and 1 representing how long (not round) the object is **static** False **C++ defination code**: ```cpp float elongation() ``` #### area item doc **type** func **brief** get blob area **return** Returns the area of the bounding box around the blob **static** False **C++ defination code**: ```cpp int area() ``` #### density item doc **type** func **brief** get blob density **return** Returns the density ratio of the blob **static** False **C++ defination code**: ```cpp float density() ``` #### extent item doc **type** func **brief** Alias for blob.density() **return** Returns the density ratio of the blob **static** False **C++ defination code**: ```cpp float extent() ``` #### compactness item doc **type** func **brief** get blob compactness **return** Returns the compactness ratio of the blob **static** False **C++ defination code**: ```cpp float compactness() ``` #### solidity item doc **type** func **brief** get blob solidity **return** Returns the solidity ratio of the blob **static** False **C++ defination code**: ```cpp float solidity() ``` #### convexity item doc **type** func **brief** get blob convexity **return** Returns a value between 0 and 1 representing how convex the object is **static** False **C++ defination code**: ```cpp float convexity() ``` #### x\\_hist\\_bins item doc **type** func **brief** get blob x_hist_bins **return** Returns the x_hist_bins of the blob **static** False **C++ defination code**: ```cpp std::vector x_hist_bins() ``` #### y\\_hist\\_bins item doc **type** func **brief** get blob y_hist_bins **return** Returns the y_hist_bins of the blob **static** False **C++ defination code**: ```cpp std::vector y_hist_bins() ``` #### major\\_axis\\_line item doc **type** func **brief** get blob major_axis_line **return** Returns a line tuple (x1, y1, x2, y2) of the minor axis of the blob. **static** False **C++ defination code**: ```cpp std::vector major_axis_line() ``` #### minor\\_axis\\_line item doc **type** func **brief** get blob minor_axis_line **return** Returns a line tuple (x1, y1, x2, y2) of the minor axis of the blob. **static** False **C++ defination code**: ```cpp std::vector minor_axis_line() ``` #### enclosing\\_circle item doc **type** func **brief** get blob enclosing_circle **return** Returns a circle tuple (x, y, r) of the circle that encloses the min area rectangle of a blob. **static** False **C++ defination code**: ```cpp std::vector enclosing_circle() ``` #### enclosed\\_ellipse item doc **type** func **brief** get blob enclosed_ellipse **return** Returns an ellipse tuple (x, y, rx, ry, rotation) of the ellipse that fits inside of the min area rectangle of a blob. **static** False **C++ defination code**: ```cpp std::vector enclosed_ellipse() ``` ### QRCode item doc **brief** QRCode class **C++ defination code**: ```cpp class QRCode ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** QRCode constructor **param** **rect**: rect of corners, type is std::vector
    **corners**: corners of QRCode
    **payload**: payload of the QRCode
    **version**: version of the QRCode
    **ecc_level**: ecc_level of the QRCode
    **mask**: mask of the QRCode
    **data_type**: data_type of the QRCode
    **eci**: eci of the QRCode
    **static** False **C++ defination code**: ```cpp QRCode(std::vector &rect, std::vector> &corners, std::string &payload, int version, int ecc_level, int mask, int data_type, int eci) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: Returns the qrcode’s bounding box x coordinate
    [1] Returns the qrcode’s bounding box y coordinate
    [2] Returns the qrcode’s bounding box w coordinate
    [3] Returns the qrcode’s bounding box h coordinate
    [4] Not support this index, try to use payload() method
    [5] Returns the version of qrcode
    [6] Returns the error correction level of qrcode
    [7] Returns the mask of qrcode
    [8] Returns the datatype of qrcode
    [9] Returns the eci of qrcode
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### corners item doc **type** func **brief** get coordinate of QRCode **return** return the coordinate of the QRCode. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of QRCode **return** return the rectangle of the QRCode. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of QRCode **return** return x of the QRCode, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of QRCode **return** return y of the QRCode, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of QRCode **return** return w of the QRCode, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of QRCode **return** return h of the QRCode, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### payload item doc **type** func **brief** get QRCode payload **return** return area of the QRCode **static** False **C++ defination code**: ```cpp std::string payload() ``` #### version item doc **type** func **brief** get QRCode version **return** return version of the QRCode **static** False **C++ defination code**: ```cpp int version() ``` #### ecc\\_level item doc **type** func **brief** get QRCode error correction level **return** return error correction level of the QRCode **static** False **C++ defination code**: ```cpp int ecc_level() ``` #### mask item doc **type** func **brief** get QRCode mask **return** return mask of the QRCode **static** False **C++ defination code**: ```cpp int mask() ``` #### data\\_type item doc **type** func **brief** get QRCode dataType **return** return mask of the QRCode **static** False **C++ defination code**: ```cpp int data_type() ``` #### eci item doc **type** func **brief** get QRCode eci **return** return data of the QRCode **static** False **C++ defination code**: ```cpp int eci() ``` #### is\\_numeric item doc **type** func **brief** check QRCode is numeric **return** return true if the result type of the QRCode is numeric **static** False **C++ defination code**: ```cpp bool is_numeric() ``` #### is\\_alphanumeric item doc **type** func **brief** check QRCode is alphanumeric **return** return true if the result type of the QRCode is alphanumeric **static** False **C++ defination code**: ```cpp bool is_alphanumeric() ``` #### is\\_binary item doc **type** func **brief** check QRCode is binary **return** return true if the result type of the QRCode is binary **static** False **C++ defination code**: ```cpp bool is_binary() ``` #### is\\_kanji item doc **type** func **brief** check QRCode is kanji **return** return true if the result type of the QRCode is kanji **static** False **C++ defination code**: ```cpp bool is_kanji() ``` ### AprilTag item doc **brief** AprilTag class **C++ defination code**: ```cpp class AprilTag ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** AprilTag constructor **param** **rect**: Inlucdes the top left corner and the width and height of the rectangle. format is {x, y, w, h}, type is std::vector
    **corners**: Includes the four corners of the rectangle. format is {{x0, y0}, {x1, y1}, {x2, y2}, {x3, y3}}, type is std::vector>
    **id**: The id of the AprilTag
    **famliy**: The family of the AprilTag
    **centroid_x**: The x coordinate of the center of the AprilTag
    **centroid_y**: The y coordinate of the center of the AprilTag
    **rotation**: The rotation of the AprilTag
    **decision_margin**: The decision_margin of the AprilTag
    **hamming**: The hamming of the AprilTag
    **goodness**: The goodness of the AprilTag
    **x_translation**: The x_translation of the AprilTag
    **y_translation**: The y_translation of the AprilTag
    **z_translation**: The z_translation of the AprilTag
    **x_rotation**: The x_rotation of the AprilTag
    **y_rotation**: The y_rotation of the AprilTag
    **z_rotation**: The z_rotation of the AprilTag
    **static** False **C++ defination code**: ```cpp AprilTag(std::vector &rect, std::vector> &corners, int id, int famliy, float centroid_x, float centroid_y, float rotation, float decision_margin, int hamming, float goodness, float x_translation, float y_translation, float z_translation, float x_rotation, float y_rotation, float z_rotation) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: Returns the apriltag’s bounding box x coordinate
    [1] Returns the apriltag’s bounding box y coordinate
    [2] Returns the apriltag’s bounding box w coordinate
    [3] Returns the apriltag’s bounding box h coordinate
    [4] Returns the apriltag’s id
    [5] Returns the apriltag’s family
    [6] Not support
    [7] Not support
    [8] Not support
    [9] Not support
    [10] Returns the apriltag’s hamming
    [11] Not support
    [12] Not support
    [13] Not support
    [14] Not support
    [15] Not support
    [16] Not support
    [17] Not support
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### corners item doc **type** func **brief** get coordinate of AprilTag **return** return the coordinate of the AprilTag. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of AprilTag **return** return the rectangle of the AprilTag. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of AprilTag **return** return x of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of AprilTag **return** return y of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of AprilTag **return** return w of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of AprilTag **return** return h of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### id item doc **type** func **brief** get id of AprilTag **return** return id of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int id() ``` #### family item doc **type** func **brief** get family of AprilTag **return** return family of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int family() ``` #### cx item doc **type** func **brief** get cx of AprilTag **return** return cx of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int cx() ``` #### cxf item doc **type** func **brief** get cxf of AprilTag **return** return cxf of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float cxf() ``` #### cy item doc **type** func **brief** get cy of AprilTag **return** return cy of the AprilTag, type is int **static** False **C++ defination code**: ```cpp int cy() ``` #### cyf item doc **type** func **brief** get cyf of AprilTag **return** return cyf of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float cyf() ``` #### rotation item doc **type** func **brief** get rotation of AprilTag **return** return rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float rotation() ``` #### decision\\_margin item doc **type** func **brief** Get decision_margin of AprilTag **return** Returns the quality of the apriltag match (0.0 1.0) where 1.0 is the best. **static** False **C++ defination code**: ```cpp float decision_margin() ``` #### hamming item doc **type** func **brief** get hamming of AprilTag **return** Returns the number of accepted bit errors for this tag.
    return 0, means 0 bit errors will be accepted.
    1 is TAG25H7, means up to 1 bit error may be accepted
    2 is TAG25H9, means up to 3 bit errors may be accepted
    3 is TAG36H10, means up to 3 bit errors may be accepted
    4 is TAG36H11, means up to 4 bit errors may be accepted
    5 is ARTOOLKIT, means 0 bit errors will be accepted **static** False **C++ defination code**: ```cpp int hamming() ``` #### goodness item doc **type** func **brief** get goodness of AprilTag **return** return goodness of the AprilTag, type is float
    Note: This value is always 0.0 for now. **static** False **C++ defination code**: ```cpp float goodness() ``` #### x\\_translation item doc **type** func **brief** get x_translation of AprilTag **return** return x_translation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float x_translation() ``` #### y\\_translation item doc **type** func **brief** get y_translation of AprilTag **return** return y_translation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float y_translation() ``` #### z\\_translation item doc **type** func **brief** get z_translation of AprilTag **return** return z_translation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float z_translation() ``` #### x\\_rotation item doc **type** func **brief** get x_rotation of AprilTag **return** return x_rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float x_rotation() ``` #### y\\_rotation item doc **type** func **brief** get y_rotation of AprilTag **return** return y_rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float y_rotation() ``` #### z\\_rotation item doc **type** func **brief** get z_rotation of AprilTag **return** return z_rotation of the AprilTag, type is float **static** False **C++ defination code**: ```cpp float z_rotation() ``` ### DataMatrix item doc **brief** DataMatrix class **C++ defination code**: ```cpp class DataMatrix ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** DataMatrix constructor **param** **rect**: Inlucdes the top left corner and the width and height of the rectangle. format is {x, y, w, h}, type is std::vector
    **corners**: Includes the four corners of the rectangle. format is {{x0, y0}, {x1, y1}, {x2, y2}, {x3, y3}}, type is std::vector>
    **payload**: The payload of the DataMatrix
    **rotation**: The rotation of the DataMatrix
    **rows**: The rows of the DataMatrix
    **columns**: The columns of the DataMatrix
    **capacity**: The capacity of the DataMatrix
    **padding**: The padding of the DataMatrix
    **static** False **C++ defination code**: ```cpp DataMatrix(std::vector &rect, std::vector> &corners, std::string &payload, float rotation, int rows, int columns, int capacity, int padding) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: get x of DataMatrix
    [1] get y of DataMatrix
    [2] get w of DataMatrix
    [3] get h of DataMatrix
    [4] Not support this index, try to use payload() method
    [5] Not support this index, try to use rotation() method
    [6] get rows of DataMatrix
    [7] get columns of DataMatrix
    [8] get capacity of DataMatrix
    [9] get padding of DataMatrix
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### corners item doc **type** func **brief** get coordinate of DataMatrix **return** return the coordinate of the DataMatrix. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of DataMatrix **return** return the rectangle of the DataMatrix. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of DataMatrix **return** return x of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of DataMatrix **return** return y of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of DataMatrix **return** return w of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of DataMatrix **return** return h of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### payload item doc **type** func **brief** get payload of DataMatrix **return** return payload of the DataMatrix, type is std::string **static** False **C++ defination code**: ```cpp std::string payload() ``` #### rotation item doc **type** func **brief** get rotation of DataMatrix **return** return rotation of the DataMatrix, type is float **static** False **C++ defination code**: ```cpp float rotation() ``` #### rows item doc **type** func **brief** get rows of DataMatrix **return** return rows of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int rows() ``` #### columns item doc **type** func **brief** get columns of DataMatrix **return** return columns of the DataMatrix, type is int **static** False **C++ defination code**: ```cpp int columns() ``` #### capacity item doc **type** func **brief** get capacity of DataMatrix **return** returns how many characters could fit in this data matrix, type is int **static** False **C++ defination code**: ```cpp int capacity() ``` #### padding item doc **type** func **brief** get padding of DataMatrix **return** returns how many unused characters are in this data matrix, type is int **static** False **C++ defination code**: ```cpp int padding() ``` ### BarCode item doc **brief** BarCode class **C++ defination code**: ```cpp class BarCode ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** BarCode constructor **param** **rect**: Inlucdes the top left corner and the width and height of the rectangle. format is {x, y, w, h}, type is std::vector
    **corners**: Includes the four corners of the rectangle. format is {{x0, y0}, {x1, y1}, {x2, y2}, {x3, y3}}, type is std::vector>
    **payload**: The payload of the BarCode
    **type**: The type of the BarCode
    **rotation**: The rotation of the BarCode
    **quality**: The quality of the BarCode
    **static** False **C++ defination code**: ```cpp BarCode(std::vector &rect, std::vector> &corners, std::string &payload, int type, float rotation, int quality) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index [0]**: get x of BarCode
    [1] get y of BarCode
    [2] get w of BarCode
    [3] get h of BarCode
    [4] Not support this index, try to use payload() method
    [5] get type of BarCode
    [6] Not support this index, try to use rotation() method
    [7] get quality of BarCode
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### corners item doc **type** func **brief** get coordinate of BarCode **return** return the coordinate of the BarCode. **static** False **C++ defination code**: ```cpp std::vector> corners() ``` #### rect item doc **type** func **brief** get rectangle of BarCode **return** return the rectangle of the BarCode. format is {x, y, w, h}, type is std::vector **static** False **C++ defination code**: ```cpp std::vector rect() ``` #### x item doc **type** func **brief** get x of BarCode **return** return x of the BarCode, type is int **static** False **C++ defination code**: ```cpp int x() ``` #### y item doc **type** func **brief** get y of BarCode **return** return y of the BarCode, type is int **static** False **C++ defination code**: ```cpp int y() ``` #### w item doc **type** func **brief** get w of BarCode **return** return w of the BarCode, type is int **static** False **C++ defination code**: ```cpp int w() ``` #### h item doc **type** func **brief** get h of BarCode **return** return h of the BarCode, type is int **static** False **C++ defination code**: ```cpp int h() ``` #### payload item doc **type** func **brief** get payload of BarCode **return** return payload of the BarCode, type is std::string **static** False **C++ defination code**: ```cpp std::string payload() ``` #### type item doc **type** func **brief** get type of BarCode **return** return type of the BarCode, type is int **static** False **C++ defination code**: ```cpp int type() ``` #### rotation item doc **type** func **brief** get rotation of BarCode **return** return rotation of the BarCode, type is float. FIXME: always return 0.0 **static** False **C++ defination code**: ```cpp float rotation() ``` #### quality item doc **type** func **brief** get quality of BarCode **return** return quality of the BarCode, type is int **static** False **C++ defination code**: ```cpp int quality() ``` ### Statistics item doc **brief** Statistics class **C++ defination code**: ```cpp class Statistics ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Statistics constructor **param** **format**: The statistics source image format
    **l_statistics**: The statistics of the L channel. format is {mean, median, mode, std_dev, min, max, lq, uq}, type is std::vector
    **a_statistics**: The statistics of the A channel. format is {mean, median, mode, std_dev, min, max, lq, uq}, type is std::vector
    **b_statistics**: The statistics of the B channel. format is {mean, median, mode, std_dev, min, max, lq, uq}, type is std::vector
    **static** False **C++ defination code**: ```cpp Statistics(image::Format format, std::vector &l_statistics, std::vector &a_statistics, std::vector &b_statistics) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index**: array index
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### format item doc **type** func **brief** get format of Statistics source image **return** return format of the Statistics source image, type is image::Format **static** False **C++ defination code**: ```cpp image::Format format() ``` #### l\\_mean item doc **type** func **brief** get L channel mean **return** return L channel mean, type is int **static** False **C++ defination code**: ```cpp int l_mean() ``` #### l\\_median item doc **type** func **brief** get L channel median **return** return L channel median, type is int **static** False **C++ defination code**: ```cpp int l_median() ``` #### l\\_mode item doc **type** func **brief** get L channel mode **return** return L channel mode, type is int **static** False **C++ defination code**: ```cpp int l_mode() ``` #### l\\_std\\_dev item doc **type** func **brief** get L channel std_dev **return** return L channel std_dev, type is int **static** False **C++ defination code**: ```cpp int l_std_dev() ``` #### l\\_min item doc **type** func **brief** get L channel min **return** return L channel min, type is int **static** False **C++ defination code**: ```cpp int l_min() ``` #### l\\_max item doc **type** func **brief** get L channel max **return** return L channel max, type is int **static** False **C++ defination code**: ```cpp int l_max() ``` #### l\\_lq item doc **type** func **brief** get L channel lq **return** return L channel lq, type is int **static** False **C++ defination code**: ```cpp int l_lq() ``` #### l\\_uq item doc **type** func **brief** get L channel uq **return** return L channel uq, type is int **static** False **C++ defination code**: ```cpp int l_uq() ``` #### a\\_mean item doc **type** func **brief** get A channel mean **return** return A channel mean, type is int **static** False **C++ defination code**: ```cpp int a_mean() ``` #### a\\_median item doc **type** func **brief** get A channea median **return** return A channel median, type is int **static** False **C++ defination code**: ```cpp int a_median() ``` #### a\\_mode item doc **type** func **brief** get A channel mode **return** return A channel mode, type is int **static** False **C++ defination code**: ```cpp int a_mode() ``` #### a\\_std\\_dev item doc **type** func **brief** get A channel std_dev **return** return A channel std_dev, type is int **static** False **C++ defination code**: ```cpp int a_std_dev() ``` #### a\\_min item doc **type** func **brief** get A channel min **return** return A channel min, type is int **static** False **C++ defination code**: ```cpp int a_min() ``` #### a\\_max item doc **type** func **brief** get A channel max **return** return A channel max, type is int **static** False **C++ defination code**: ```cpp int a_max() ``` #### a\\_lq item doc **type** func **brief** get A channel lq **return** return A channel lq, type is int **static** False **C++ defination code**: ```cpp int a_lq() ``` #### a\\_uq item doc **type** func **brief** get A channel uq **return** return A channel uq, type is int **static** False **C++ defination code**: ```cpp int a_uq() ``` #### b\\_mean item doc **type** func **brief** get B channel mean **return** return B channel mean, type is int **static** False **C++ defination code**: ```cpp int b_mean() ``` #### b\\_median item doc **type** func **brief** get B channea median **return** return B channel median, type is int **static** False **C++ defination code**: ```cpp int b_median() ``` #### b\\_mode item doc **type** func **brief** get B channel mode **return** return B channel mode, type is int **static** False **C++ defination code**: ```cpp int b_mode() ``` #### b\\_std\\_dev item doc **type** func **brief** get B channel std_dev **return** return B channel std_dev, type is int **static** False **C++ defination code**: ```cpp int b_std_dev() ``` #### b\\_min item doc **type** func **brief** get B channel min **return** return B channel min, type is int **static** False **C++ defination code**: ```cpp int b_min() ``` #### b\\_max item doc **type** func **brief** get B channel max **return** return B channel max, type is int **static** False **C++ defination code**: ```cpp int b_max() ``` #### b\\_lq item doc **type** func **brief** get B channel lq **return** return B channel lq, type is int **static** False **C++ defination code**: ```cpp int b_lq() ``` #### b\\_uq item doc **type** func **brief** get B channel uq **return** return B channel uq, type is int **static** False **C++ defination code**: ```cpp int b_uq() ``` ### Displacement item doc **brief** Displacement class **C++ defination code**: ```cpp class Displacement ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Displacement constructor **param** **x_translation**: The x_translation of the Displacement
    **y_translation**: The y_translation of the Displacement
    **rotation**: The rotation of the Displacement
    **scale**: The scale of the Displacement
    **response**: The response of the Displacement
    **static** False **C++ defination code**: ```cpp Displacement(float x_translation, float y_translation, float rotation, float scale, float response) ``` #### \\_\\_getitem\\_\\_ item doc **type** func **brief** Subscript operator **param** **index**: array index
    **return** int& **static** False **C++ defination code**: ```cpp int &__getitem__(int index) ``` #### x\\_translation item doc **type** func **brief** get x_translation of Displacement **return** return x_translation of the Displacement, type is float **static** False **C++ defination code**: ```cpp float x_translation() ``` #### y\\_translation item doc **type** func **brief** get y_translation of Displacement **return** return y_translation of the Displacement, type is float **static** False **C++ defination code**: ```cpp float y_translation() ``` #### rotation item doc **type** func **brief** get rotation of Displacement **return** return rotation of the Displacement, type is float **static** False **C++ defination code**: ```cpp float rotation() ``` #### scale item doc **type** func **brief** get scale of Displacement **return** return scale of the Displacement, type is float **static** False **C++ defination code**: ```cpp float scale() ``` #### response item doc **type** func **brief** get response of Displacement **return** return response of the Displacement, type is float **static** False **C++ defination code**: ```cpp float response() ``` ### LBPKeyPoint item doc **brief** LBPKeyPoint class **C++ defination code**: ```cpp class LBPKeyPoint ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** LBPKeyPoint constructor **param** **data**: The data of the LBPKeyPoint
    **static** False **C++ defination code**: ```cpp LBPKeyPoint(std::valarray &data) ``` ### KeyPoint item doc **brief** KeyPoint class **C++ defination code**: ```cpp class KeyPoint ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** KeyPoint constructor **param** **x**: The x of the KeyPoint
    **y**: The y of the KeyPoint
    **score**: The score of the KeyPoint
    **octave**: The octave of the KeyPoint
    **angle**: The angle of the KeyPoint
    **matched**: The matched of the KeyPoint
    **desc**: The desc of the KeyPoint
    **static** False **C++ defination code**: ```cpp KeyPoint(uint16_t x, uint16_t y, uint16_t score, uint16_t octave, uint16_t angle, uint16_t matched, std::vector &desc) ``` ### KPTMatch item doc **brief** KPTMatch class **C++ defination code**: ```cpp class KPTMatch ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** KPTMatch constructor **param** **cx**: The cx of the KPTMatch
    **cy**: The cy of the KPTMatch
    **x**: The x of the KPTMatch
    **y**: The y of the KPTMatch
    **w**: The w of the KPTMatch
    **h**: The h of the KPTMatch
    **score**: The score of the KPTMatch
    **theta**: The theta of the KPTMatch
    **match**: The match of the KPTMatch
    **static** False **C++ defination code**: ```cpp KPTMatch(int cx, int cy, int x, int y, int w, int h, int score, int theta, int match) ``` ### ORBKeyPoint item doc **brief** ORBKeyPoint class **C++ defination code**: ```cpp class ORBKeyPoint ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** ORBKeyPoint constructor **param** **data**: The data of the ORBKeyPoint
    **threshold**: The threshold of the ORBKeyPoint
    **normalized**: The normalized of the ORBKeyPoint
    **static** False **C++ defination code**: ```cpp ORBKeyPoint(std::vector &data, int threshold, bool normalized) ``` #### get\\_data item doc **type** func **brief** get data of ORBKeyPoint **return** return data of the ORBKeyPoint, type is std::vector **static** False **C++ defination code**: ```cpp std::vector get_data() ``` ### HaarCascade item doc **brief** HaarCascade class **C++ defination code**: ```cpp class HaarCascade ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** HaarCascade constructor **param** **data**: The data of the HaarCascade
    **threshold**: The threshold of the HaarCascade
    **normalized**: The normalized of the HaarCascade
    **static** False **C++ defination code**: ```cpp HaarCascade() ``` ### Color item doc **brief** Color class **C++ defination code**: ```cpp class Color ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Color constructor **param** **alpha**: alpha channel, value range: 0 ~ 1
    **static** False **C++ defination code**: ```cpp Color(uint8_t ch1, uint8_t ch2 0, uint8_t ch3 0, float alpha 0, image::Format format image::FMT_GRAYSCALE) ``` #### r item doc **type** var **brief** Color red channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t r ``` #### g item doc **type** var **brief** Color green channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t g ``` #### b item doc **type** var **brief** Color blue channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t b ``` #### alpha item doc **type** var **brief** Color alpha channel, value from 0.0 to 1.0, float value **static** False **readonly** False **C++ defination code**: ```cpp float alpha ``` #### gray item doc **type** var **brief** Color gray channel **static** False **readonly** False **C++ defination code**: ```cpp uint8_t gray ``` #### format item doc **type** var **brief** Color format **static** False **readonly** False **C++ defination code**: ```cpp image::Format format ``` #### hex item doc **type** func **brief** Get color's hex value **static** False **C++ defination code**: ```cpp uint32_t hex() ``` #### from\\_rgb item doc **type** func **brief** Create Color object from RGB channels **static** True **C++ defination code**: ```cpp static image::Color from_rgb(uint8_t r, uint8_t g, uint8_t b) ``` #### from\\_bgr item doc **type** func **brief** Create Color object from BGR channels **static** True **C++ defination code**: ```cpp static image::Color from_bgr(uint8_t b, uint8_t g, uint8_t r) ``` #### from\\_gray item doc **type** func **brief** Create Color object from gray channel **static** True **C++ defination code**: ```cpp static image::Color from_gray(uint8_t gray) ``` #### from\\_rgba item doc **type** func **brief** Create Color object from RGBA channels **param** **alpha**: alpha channel, float value, value range: 0 ~ 1
    **static** True **C++ defination code**: ```cpp static image::Color from_rgba(uint8_t r, uint8_t g, uint8_t b, float alpha) ``` #### from\\_bgra item doc **type** func **brief** Create Color object from BGRA channels **param** **alpha**: alpha channel, float value, value range: 0 ~ 1
    **static** True **C++ defination code**: ```cpp static image::Color from_bgra(uint8_t b, uint8_t g, uint8_t r, float alpha) ``` #### from\\_hex item doc **type** func **brief** Create Color object from hex value **param** **hex**: hex value, e.g. 0x0000FF00, lower address if first channel
    **format**: color format, @see image::Format
    **static** True **C++ defination code**: ```cpp static image::Color from_hex(uint32_t hex, image::Format &format) ``` #### to\\_format item doc **type** func **brief** Convert Color format **param** **format**: format want to convert to, @see image::Format, only support RGB888, BGR888, RGBA8888, BGRA8888, GRAYSCALE.
    **static** False **C++ defination code**: ```cpp void to_format(const image::Format &format) ``` #### to\\_format2 item doc **type** func **brief** Convert color format and return a new Color object **param** **format**: format want to convert to, @see image::Format, only support RGB888, BGR888, RGBA8888, BGRA8888, GRAYSCALE.
    **return** new Color object, you need to delete it manually in C++. **static** False **C++ defination code**: ```cpp image::Color *to_format2(const image::Format &format) ``` ### Image item doc **brief** Image class **C++ defination code**: ```cpp class Image ``` #### \\_\\_init\\_\\_ item doc **type** func **brief** Image constructor **param** **width**: image width, should > 0
    **height**: image height, should > 0
    **format**: image format @see image::Format
    **static** False **C++ defination code**: ```cpp Image(int width, int height, image::Format format image::Format::FMT_RGB888) ``` #### format item doc **type** func **brief** Get image's format **see** image.Format **static** False **C++ defination code**: ```cpp image::Format format() ``` #### size item doc **type** func **brief** Get image's size, [width, height] **static** False **C++ defination code**: ```cpp image::Size size() ``` #### data\\_size item doc **type** func **brief** Get image's data size **static** False **C++ defination code**: ```cpp int data_size() ``` #### width item doc **type** func **brief** Get image's width **static** False **C++ defination code**: ```cpp int width() ``` #### height item doc **type** func **brief** Get image's height **static** False **C++ defination code**: ```cpp int height() ``` #### data item doc **type** func **brief** Get image's data pointer.\\nIn MaixPy is capsule object. **static** False **C++ defination code**: ```cpp void *data() ``` #### \\_\\_str\\_\\_ item doc **type** func **brief** To string method **static** False **C++ defination code**: ```cpp std::string __str__() ``` #### to\\_str item doc **type** func **brief** To string method **static** False **C++ defination code**: ```cpp std::string to_str() ``` #### get\\_pixel item doc **type** func **brief** Get pixel of image **param** **x**: pixel's coordinate x. x must less than image's width
    **y**: pixel's coordinate y. y must less than image's height
    **rgbtuple**: switch return value method. rgbtuple decides whether to split the return or not. default is false.
    **return** pixel value,
    According to image format and rgbtuple, return different value:
    format is FMT_RGB888, rgbtuple is true, return [R, G, B]; rgbtuple is false, return [RGB]
    foramt is FMT_BGR888, rgbtuple is true, return [B, G, R]; rgbtuple is false, return [BGR]
    format is FMT_GRAYSCALE, return [GRAY]; **static** False **C++ defination code**: ```cpp std::vector get_pixel(int x, int y, bool rgbtuple false) ``` #### set\\_pixel item doc **type** func **brief** Set pixel of image **param** **x**: pixel's coordinate x. x must less than image's width
    **y**: pixel's coordinate y. y must less than image's height
    **pixel**: pixel value, according to image format and size of pixel, has different operation:
    format is FMT_RGB888, pixel size must be 1 or 3, if size is 1, will split pixel[0] to [R, G, B]; if size is 3, will use pixel directly
    format is FMT_BGR888, pixel size must be 1 or 3, if size is 1, will split pixel[0] to [B, G, R]; if size is 3, will use pixel directly
    format is FMT_GRAYSCALE, pixel size must be 1, will use pixel directly
    **return** error code, Err::ERR_NONE is ok, other is error **static** False **C++ defination code**: ```cpp err::Err set_pixel(int x, int y, std::vector pixel) ``` #### to\\_tensor item doc **type** func **brief** Convert Image object to tensor::Tensor object **param** **chw**: if true, the shape of tensor is [C, H, W], else [H, W, C]
    **copy**: if true, will alloc memory for tensor data, else will use the memory of Image object
    **return** tensor::Tensor object pointer, an allocated tensor object **static** False **C++ defination code**: ```cpp tensor::Tensor *to_tensor(bool chw false, bool copy true) ``` #### to\\_bytes item doc **type** func **brief** Get image's data and convert to array bytes **param** **copy**: if true, will alloc memory and copy data to new buffer,
    else will use the memory of Image object, delete bytes object will not affect Image object,
    but delete Image object will make bytes object invalid, it may cause program crash !!!!
    So use this param carefully.
    **return** image's data bytes, need be delete by caller in C++. **static** False **C++ defination code**: ```cpp Bytes *to_bytes(bool copy true) ``` #### to\\_format item doc **type** func **brief** Convert image to specific format **param** **format**: format want to convert to, @see image::Format, only support RGB888, BGR888, RGBA8888, BGRA8888, GRAYSCALE, JPEG.
    **return** new image object. Need be delete by caller in C++. **throw** err.Exception, if two images' format not support, **or already the format**, will raise exception **static** False **C++ defination code**: ```cpp image::Image *to_format(const image::Format &format) ``` #### draw\\_image item doc **type** func **brief** Draw image on this image **param** **x**: left top corner of image point's coordinate x
    **y**: left top corner of image point's coordinate y
    **img**: image object to draw, the caller's channel must < the args' channel,
    e.g. caller is RGB888, args is RGBA8888, will throw exception, but caller is RGBA8888, args is RGB888 or RGBA8888 is ok
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_image(int x, int y, image::Image &img) ``` #### draw\\_rect item doc **type** func **brief** Fill rectangle color to image **param** **x**: left top corner of rectangle point's coordinate x
    **y**: left top corner of rectangle point's coordinate y
    **w**: rectangle width
    **h**: rectangle height
    **color**: rectangle color
    **thickness**: rectangle thickness(line width), by default(value is 1), 1 means fill rectangle
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_rect(int x, int y, int w, int h, const image::Color &color, int thickness 1) ``` #### draw\\_line item doc **type** func **brief** Draw line on image **param** **x1**: start point's coordinate x
    **y1**: start point's coordinate y
    **x2**: end point's coordinate x
    **y2**: end point's coordinate y
    **color**: line color @see image::Color
    **thickness**: line thickness(line width), by default(value is 1)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_line(int x1, int y1, int x2, int y2, const image::Color &color, int thickness 1) ``` #### draw\\_circle item doc **type** func **brief** Draw circle on image **param** **x**: circle center point's coordinate x
    **y**: circle center point's coordinate y
    **radius**: circle radius
    **color**: circle color @see image::Color
    **thickness**: circle thickness(line width), by default(value is 1), 1 means fill circle
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_circle(int x, int y, int radius, const image::Color &color, int thickness 1) ``` #### draw\\_ellipse item doc **type** func **brief** Draw ellipse on image **param** **x**: ellipse center point's coordinate x
    **y**: ellipse center point's coordinate y
    **a**: ellipse major axis length
    **b**: ellipse minor axis length
    **angle**: ellipse rotation angle
    **start_angle**: ellipse start angle
    **end_angle**: ellipse end angle
    **color**: ellipse color @see image::Color
    **thickness**: ellipse thickness(line width), by default(value is 1), 1 means fill ellipse
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_ellipse(int x, int y, int a, int b, float angle, float start_angle, float end_angle, const image::Color &color, int thickness 1) ``` #### draw\\_string item doc **type** func **brief** Draw text on image **param** **x**: text left top point's coordinate x
    **y**: text left top point's coordinate y
    **string**: text content
    **color**: text color @see image::Color, default is white
    **scale**: font scale, by default(value is 1)
    **thickness**: text thickness(line width), if negative, the glyph is filled, by default(value is 1)
    **wrap**: if true, will auto wrap text to next line if text width > image width, by default(value is true)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_string(int x, int y, const std::string &textstring, const image::Color &color image::COLOR_WHITE, float scale 1, int thickness 1, bool wrap true, int wrap_space 4, const std::string &font \"\") ``` #### draw\\_cross item doc **type** func **brief** Draw cross on image **param** **x**: cross center point's coordinate x
    **y**: cross center point's coordinate y
    **color**: cross color @see image::Color
    **size**: how long the lines of the cross extend, by default(value is 5). So the line length is `2 * size + thickness`
    **thickness**: cross thickness(line width), by default(value is 1)
    **static** False **C++ defination code**: ```cpp image::Image *draw_cross(int x, int y, const image::Color &color, int size 5, int thickness 1) ``` #### draw\\_arrow item doc **type** func **brief** Draw arrow on image **param** **x0**: start coordinate of the arrow x0
    **y0**: start coordinate of the arrow y0
    **x1**: end coordinate of the arrow x1
    **y1**: end coordinate of the arrow y1
    **color**: cross color @see image::Color
    **thickness**: cross thickness(line width), by default(value is 1)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_arrow(int x0, int y0, int x1, int y1, const image::Color &color, int thickness 1) ``` #### draw\\_edges item doc **type** func **brief** Draw edges on image **param** **corners**: edges, [[x0, y0], [x1, y1], [x2, y2], [x3, y3]]
    **color**: edges color @see image::Color
    **size**: the circle of radius size. TODO: support in the feature
    **thickness**: edges thickness(line width), by default(value is 1)
    **fill**: if true, will fill edges, by default(value is false)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_edges(std::vector> corners, const image::Color &color, int size 0, int thickness 1, bool fill false) ``` #### draw\\_keypoints item doc **type** func **brief** Draw keypoints on image **param** **keypoints**: keypoints, [x, y, rotation_andle_in_degrees], TODO: rotation_andle_in_degrees support in the feature
    **color**: keypoints color @see image::Color
    **size**: size of keypoints
    **thickness**: keypoints thickness(line width), by default(value is 1)
    **fill**: if true, will fill keypoints, by default(value is false)
    **return** this image object self **static** False **C++ defination code**: ```cpp image::Image *draw_keypoints(std::vector keypoints, const image::Color &color, int size 10, int thickness 1, bool fill false) ``` #### resize item doc **type** func **brief** Resize image, will create a new resized image object **param** **width**: new width, if value is 1, will use height to calculate aspect ratio
    **height**: new height, if value is 1, will use width to calculate aspect ratio
    **object_fit**: fill, contain, cover, by default is fill
    **method**: resize method, by default is bilinear
    **return** Always return a new resized image object even size not change, So in C++ you should take care of the return value to avoid memory leak.
    And it's better to judge whether the size has changed before calling this function to make the program more efficient.
    e.g.
    if img >width() ! width img >height() ! height:
    img img >resize(width, height); **static** False **C++ defination code**: ```cpp image::Image *resize(int width, int height, image::Fit object_fit image::Fit::FIT_FILL, image::ResizeMethod method image::ResizeMethod::NEAREST) ``` #### affine item doc **type** func **brief** Affine transform image, will create a new transformed image object **param** **src_points**: three source points, [x1, y1, x2, y2, x3, y3]
    **dst_points**: three destination points, [x1, y1, x2, y2, x3, y3]
    **width**: new width, if value is 1, will use height to calculate aspect ratio
    **height**: new height, if value is 1, will use width to calculate aspect ratio
    **method**: resize method, by default is bilinear
    **return** new transformed image object **static** False **C++ defination code**: ```cpp image::Image *affine(std::vector src_points, std::vector dst_points, int width 1, int height 1, image::ResizeMethod method image::ResizeMethod::BILINEAR) ``` #### copy item doc **type** func **brief** Copy image, will create a new copied image object **return** new copied image object **static** False **C++ defination code**: ```cpp image::Image *copy() ``` #### crop item doc **type** func **brief** Crop image, will create a new cropped image object **param** **x**: left top corner of crop rectangle point's coordinate x
    **y**: left top corner of crop rectangle point's coordinate y
    **w**: crop rectangle width
    **h**: crop rectangle height
    **return** new cropped image object **static** False **C++ defination code**: ```cpp image::Image *crop(int x, int y, int w, int h) ``` #### rotate item doc **type** func **brief** Rotate image, will create a new rotated image object **param** **angle**: anti clock wise rotate angle, if angle is 90 or 270, and width or height is 1, will swap width and height, or will throw exception
    **width**: new width, if value is 1, will use height to calculate aspect ratio
    **height**: new height, if value is 1, will use width to calculate aspect ratio
    **method**: resize method, by default is bilinear
    **return** new rotated image object **static** False **C++ defination code**: ```cpp image::Image *rotate(float angle, int width 1, int height 1, image::ResizeMethod method image::ResizeMethod::BILINEAR) ``` #### mean\\_pool item doc **type** func **brief** Finds the mean of x_div * y_div squares in the image and returns the modified image composed of the mean of each square. **param** **x_div**: The width of the squares.
    **y_div**: The height of the squares.
    **copy**: Select whether to return a new image or modify the original image. default is false.
    If true, returns a new image composed of the mean of each square; If false, returns the modified image composed of the mean of each square.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mean_pool(int x_div, int y_div, bool copy false) ``` #### midpoint\\_pool item doc **type** func **brief** Finds the midpoint of x_div * y_div squares in the image and returns the modified image composed of the mean of each square. **param** **x_div**: The width of the squares.
    **y_div**: The height of the squares.
    **bias**: The bias of the midpoint. default is 0.5.
    midpoint value is equal to (max * bias + min * (1 bias))
    **copy**: Select whether to return a new image or modify the original image. default is false.
    If true, returns a new image composed of the midpoint of each square; If false, returns the modified image composed of the midpoint of each square.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *midpoint_pool(int x_div, int y_div, double bias 0.5, bool copy false) ``` #### compress item doc **type** func **brief** JPEG compresses the image in place. **param** **quality**: The quality of the compressed image. default is 95.
    **return** Returns the compressed JPEG image **static** False **C++ defination code**: ```cpp image::Image *compress(int quality 95) ``` #### clear item doc **type** func **brief** Sets all pixels in the image to zero **param** **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *clear(image::Image *mask nullptr) ``` #### mask\\_rectange item doc **type** func **brief** Zeros a rectangular part of the image. If no arguments are supplied this method zeros the center of the image. **param** **x**: The x coordinate of the top left corner of the rectangle.
    **y**: The y coordinate of the top left corner of the rectangle.
    **w**: The width of the rectangle.
    **h**: The height of the rectangle.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mask_rectange(int x 1, int y 1, int w 1, int h 1) ``` #### mask\\_circle item doc **type** func **brief** Zeros a circular part of the image. If no arguments are supplied this method zeros the center of the image. **param** **x**: The x coordinate of the center of the circle.
    **y**: The y coordinate of the center of the circle.
    **radius**: The radius of the circle.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mask_circle(int x 1, int y 1, int radius 1) ``` #### mask\\_ellipse item doc **type** func **brief** Zeros a ellipse part of the image. If no arguments are supplied this method zeros the center of the image. **param** **x**: The x coordinate of the center of the ellipse.
    **y**: The y coordinate of the center of the ellipse.
    **radius_x**: The radius of the ellipse in the x direction.
    **radius_y**: The radius of the ellipse in the y direction.
    **rotation_angle_in_degrees**: The rotation angle of the ellipse in degrees.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mask_ellipse(int x 1, int y 1, int radius_x 1, int radius_y 1, float rotation_angle_in_degrees 0) ``` #### binary item doc **type** func **brief** Sets all pixels in the image to black or white depending on if the pixel is inside of a threshold in the threshold list thresholds or not. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the thresholds will be inverted before the operation. default is false.
    **zero**: If zero is true, the image will be set the pixels within the threshold to 0, other pixels remain unchanged. If zero is false, the image will be set to black or white. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **to_bitmap**: If true, the image will be converted to a bitmap image before thresholding. default is false. TODO: support in the feature
    **copy**: Select whether to return a new image or modify the original image. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *binary(std::vector> thresholds std::vector>(), bool invert false, bool zero false, image::Image *mask nullptr, bool to_bitmap false, bool copy false) ``` #### invert item doc **type** func **brief** Inverts the image in place. **return** Returns the image after the operation is completed **static** False **C++ defination code**: ```cpp image::Image *invert() ``` #### b\\_and item doc **type** func **brief** Performs a bitwise and operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_and(image::Image *other, image::Image *mask nullptr) ``` #### b\\_nand item doc **type** func **brief** Performs a bitwise nand operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_nand(image::Image *other, image::Image *mask nullptr) ``` #### b\\_or item doc **type** func **brief** Performs a bitwise or operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_or(image::Image *other, image::Image *mask nullptr) ``` #### b\\_nor item doc **type** func **brief** Performs a bitwise nor operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_nor(image::Image *other, image::Image *mask nullptr) ``` #### b\\_xor item doc **type** func **brief** Performs a bitwise xor operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_xor(image::Image *other, image::Image *mask nullptr) ``` #### b\\_xnor item doc **type** func **brief** Performs a bitwise xnor operation between the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *b_xnor(image::Image *other, image::Image *mask nullptr) ``` #### awb item doc **type** func **brief** Performs an auto white balance operation on the image. TODO: support in the feature **param** **max**: if True uses the white patch algorithm instead. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *awb(bool max false) ``` #### ccm item doc **type** func **brief** Multiples the passed (3x3) or (4x3) floating point color correction matrix with the image.\\nnote: Grayscale format is not support. **param** **matrix**: The color correction matrix to use. 3x3 or 4x3 matrix.
    Weights may either be positive or negative, and the sum of each column in the 3x3 matrix should generally be 1.
    example:
    {
    1, 0, 0,
    0, 1, 0,
    0, 0, 1,
    }
    Where the last row of the 4x3 matrix is an offset per color channel. If you add an offset you may wish to make the
    weights sum to less than 1 to account for the offset.
    example:
    {
    1, 0, 0,
    0, 1, 0,
    0, 0, 1,
    0, 0, 0,
    }
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *ccm(std::vector &matrix) ``` #### gamma item doc **type** func **brief** Quickly changes the image gamma, contrast, and brightness. Create a array whose size is usually 255,\\nand use the parameters gamma, contrast, and brightness to calculate the value of the array, and then map the\\nimage pixel value through the value of the array.\\nThe calculation method for array is: array[array_idx] (powf((array_idx / 255.0), (1 / gamma)) * contrast + brightness) * scale,\\n`powf` is a function used to calculate floating point power.\\n`array` is the array used for mapping.\\n`array_idx` is the index of the array, the maximum value is determined according to the image format, usually 255.\\n`scale` is a constant, the value is determined by the image format, usually 255.\\nMapping method:\\nAssume that a pixel value in the image is 128, then map the pixel value to the value of array[128]\\nUsers can adjust the value of the array through the gamma, contrast, and brightness parameters. **param** **gamma**: The contrast gamma greater than 1.0 makes the image darker in a non linear manner while less than 1.0 makes the image brighter. default is 1.0.
    **contrast**: The contrast value greater than 1.0 makes the image brighter in a linear manner while less than 1.0 makes the image darker. default is 1.0.
    **brightness**: The brightness value greater than 0.0 makes the image brighter in a constant manner while less than 0.0 makes the image darker. default is 0.0.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *gamma(double gamma 1.0, double contrast 1.0, double brightness 0.0) ``` #### gamma\\_corr item doc **type** func **brief** Alias for Image.gamma. **param** **gamma**: The contrast gamma greater than 1.0 makes the image darker in a non linear manner while less than 1.0 makes the image brighter. default is 1.0.
    **contrast**: The contrast value greater than 1.0 makes the image brighter in a linear manner while less than 1.0 makes the image darker. default is 1.0.
    **brightness**: The brightness value greater than 0.0 makes the image brighter in a constant manner while less than 0.0 makes the image darker. default is 0.0.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *gamma_corr(double gamma, double contrast 1.0, double brightness 0.0) ``` #### negate item doc **type** func **brief** Flips (numerically inverts) all pixels values in an image **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *negate() ``` #### replace item doc **type** func **brief** Replaces all pixels in the image with the corresponding pixels in the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **hmirror**: If true, the image will be horizontally mirrored before the operation. default is false.
    **vflip**: If true, the image will be vertically flipped before the operation. default is false.
    **transpose**: If true, the image can be used to rotate 90 degrees or 270 degrees.
    hmirror false, vflip false, transpose false, the image will not be rotated.
    hmirror false, vflip true, transpose true, the image will be rotated 90 degrees.
    hmirror true, vflip true, transpose false, the image will be rotated 180 degrees.
    hmirror true, vflip false, transpose true, the image will be rotated 270 degrees.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *replace(image::Image *other nullptr, bool hmirror false, bool vflip false, bool transpose false, image::Image *mask nullptr) ``` #### set item doc **type** func **brief** Alias for Image::replace. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **hmirror**: If true, the image will be horizontally mirrored before the operation. default is false.
    **vflip**: If true, the image will be vertically flipped before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *set(image::Image *other, bool hmirror false, bool vflip false, bool transpose false, image::Image *mask nullptr) ``` #### add item doc **type** func **brief** Adds the other image to the image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *add(image::Image *other, image::Image *mask nullptr) ``` #### sub item doc **type** func **brief** Subtracts the other image from the image. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **reverse**: If true, the image will be reversed before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *sub(image::Image *other, bool reverse false, image::Image *mask nullptr) ``` #### mul item doc **type** func **brief** Multiplies the image by the other image.\\nNote: This method is meant for image blending and cannot multiply the pixels in the image by a scalar like 2. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **invert**: If true, the image will be change the multiplication operation from a*b to 1/((1/a)*(1/b)).
    In particular, this lightens the image instead of darkening it (e.g. multiply versus burn operations). default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mul(image::Image *other, bool invert false, image::Image *mask nullptr) ``` #### div item doc **type** func **brief** Divides the image by the other image.\\nThis method is meant for image blending and cannot divide the pixels in the image by a scalar like 2. **param** **other**: The other image should be an image and should be the same size as the image being operated on. TODO: support path?
    **invert**: If true, the image will be change the division direction from a/b to b/a. default is false.
    **mod**: If true, the image will be change the division operation to the modulus operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *div(image::Image *other, bool invert false, bool mod false, image::Image *mask nullptr) ``` #### min item doc **type** func **brief** Caculate the minimum of each pixel in the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *min(image::Image *other, image::Image *mask nullptr) ``` #### max item doc **type** func **brief** Caculate the maximum of each pixel in the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *max(image::Image *other, image::Image *mask nullptr) ``` #### difference item doc **type** func **brief** Caculate the absolute value of the difference between each pixel in the image and the other image. **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *difference(image::Image *other, image::Image *mask nullptr) ``` #### blend item doc **type** func **brief** Blends the image with the other image.\\nres alpha * this_img / 256 + (256 alpha) * other_img / 256 **param** **other**: The other image should be an image and should be the same size as the image being operated on.
    **alpha**: The alpha value of the blend, the value range is [0, 256],default is 128.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *blend(image::Image *other, int alpha 128, image::Image *mask nullptr) ``` #### histeq item doc **type** func **brief** Runs the histogram equalization algorithm on the image. **param** **adaptive**: If true, an adaptive histogram equalization method will be run on the image instead which as generally better results than non adaptive histogram qualization but a longer run time. default is false.
    **clip_limit**: Provides a way to limit the contrast of the adaptive histogram qualization. Use a small value for this, like 10, to produce good histogram equalized contrast limited images. default is 1.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *histeq(bool adaptive false, int clip_limit 1, image::Image *mask nullptr) ``` #### mean item doc **type** func **brief** Standard mean blurring filter using a box filter.\\nThe parameters offset and invert are valid when threshold is True. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mean(int size, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### median item doc **type** func **brief** Runs the median filter on the image. The median filter is the best filter for smoothing surfaces while preserving edges but it is very slow. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **percentile**: This parameter controls the percentile of the value used in the kernel. You can set this to 0 for a min filter, 0.25 for a lower quartile filter, 0.75 for an upper quartile filter, and 1.0 for a max filter. default is 0.5.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *median(int size, double percentile 0.5, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### mode item doc **type** func **brief** Runs the mode filter on the image by replacing each pixel with the mode of their neighbors. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *mode(int size, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### midpoint item doc **type** func **brief** Runs the midpoint filter on the image.This filter finds the midpoint (max * bias + min * (1 bias)) of each pixel neighborhood in the image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **bias**: The bias of the midpoint. default is 0.5.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *midpoint(int size, double bias 0.5, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### morph item doc **type** func **brief** Convolves the image by a filter kernel. This allows you to do general purpose convolutions on an image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **kernel**: The kernel used for convolution. The kernel should be a list of lists of numbers. The kernel should be the same size as the actual kernel size.
    **mul**: This parameter is used to multiply the convolved pixel results. default is auto.
    **add**: This parameter is the value to be added to each convolution pixel result. default is 0.0.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *morph(int size, std::vector kernel, float mul 1, float add 0.0, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### gaussian item doc **type** func **brief** Convolves the image by a smoothing guassian kernel. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **unsharp**: If true, this method will perform an unsharp mask operation instead of gaussian filtering operation, this improves the clarity of image edges. default is false.
    **mul**: This parameter is used to multiply the convolved pixel results. default is auto.
    **add**: This parameter is the value to be added to each convolution pixel result. default is 0.0.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *gaussian(int size, bool unsharp false, float mul 1, float add 0.0, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### laplacian item doc **type** func **brief** Convolves the image by a edge detecting laplacian kernel. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **sharpen**: If True, this method will sharpen the image instead of an unthresholded edge detection image. Then increase the kernel size to improve image clarity. default is false.
    **mul**: This parameter is used to multiply the convolved pixel results. default is auto.
    **add**: This parameter is the value to be added to each convolution pixel result. default is 0.0.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *laplacian(int size, bool sharpen false, float mul 1, float add 0.0, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### bilateral item doc **type** func **brief** Convolves the image by a bilateral filter. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **color_sigma**: Controls how closely colors are matched using the bilateral filter. default is 0.1.
    **space_sigma**: Controls how closely pixels space wise are blurred with each other. default is 1.
    **threshold**: If true, which will enable adaptive thresholding of the image which sets pixels to white or black based on a pixel’s brightness in relation to the brightness of the kernel of pixels around them.
    default is false.
    **offset**: The larger the offset value, the lower brightness pixels on the original image will be set to white. default is 0.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *bilateral(int size, double color_sigma 0.1, double space_sigma 1, bool threshold false, int offset 0, bool invert false, image::Image *mask nullptr) ``` #### linpolar item doc **type** func **brief** Re project’s and image from cartessian coordinates to linear polar coordinates. **param** **reverse**: If true, the image will be reverse polar transformed. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *linpolar(bool reverse false) ``` #### logpolar item doc **type** func **brief** Re project’s and image from cartessian coordinates to log polar coordinates. **param** **reverse**: If true, the image will be reverse polar transformed. default is false.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *logpolar(bool reverse false) ``` #### lens\\_corr item doc **type** func **brief** Performs a lens correction operation on the image. TODO: support in the feature **param** **strength**: The strength of the lens correction. default is 1.8.
    **zoom**: The zoom of the lens correction. default is 1.0.
    **x_corr**: The x correction of the lens correction. default is 0.5.
    **y_corr**: The y correction of the lens correction. default is 0.5.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *lens_corr(double strength 1.8, double zoom 1.0, double x_corr 0.5, double y_corr 0.5) ``` #### rotation\\_corr item doc **type** func **brief** Performs a rotation correction operation on the image. TODO: support in the feature **param** **x_rotation**: The x rotation of the rotation correction. default is 0.0.
    **y_rotation**: The y rotation of the rotation correction. default is 0.0.
    **z_rotation**: The z rotation of the rotation correction. default is 0.0.
    **x_translation**: The x translation of the rotation correction. default is 0.0.
    **y_translation**: The y translation of the rotation correction. default is 0.0.
    **zoom**: The zoom of the rotation correction. default is 1.0.
    **fov**: The fov of the rotation correction. default is 60.0.
    **corners**: The corners of the rotation correction. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *rotation_corr(double x_rotation 0.0, double y_rotation 0.0, double z_rotation 0.0, double x_translation 0.0, double y_translation 0.0, double zoom 1.0, double fov 60.0, std::vector corners std::vector()) ``` #### get\\_histogram item doc **type** func **brief** Gets the histogram of the image. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the thresholds will be inverted before the operation. default is false.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **bins**: The number of bins to use for the histogram.
    In GRAYSCALE format, setting range is [2, 256], default is 100.
    In rgb888 format, setting range is [2, 100], default is 100.
    **l_bins**: The number of bins to use for the l channel of the histogram. Only valid in RGB888 format.
    If an invalid value is set, bins will be used instead. The setting range is [2, 100], default is 100.
    **a_bins**: The number of bins to use for the a channel of the histogram.
    Only valid in RGB888 format.The setting range is [2, 256], default is 256.
    **b_bins**: The number of bins to use for the b channel of the histogram.
    Only valid in RGB888 format. The setting range is [2, 256], default is 256.
    **difference**: difference may be set to an image object to cause this method to operate on the difference image between the current image and the difference image object.
    default is None.
    **return** Returns the histogram of the image **static** False **C++ defination code**: ```cpp std::map> get_histogram(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int bins 1, int l_bins 100, int a_bins 256, int b_bins 256, image::Image *difference nullptr) ``` #### get\\_statistics item doc **type** func **brief** Gets the statistics of the image. TODO: support in the feature **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **bins**: The number of bins to use for the statistics. default is 1.
    **l_bins**: The number of bins to use for the l channel of the statistics. default is 1.
    **a_bins**: The number of bins to use for the a channel of the statistics. default is 1.
    **b_bins**: The number of bins to use for the b channel of the statistics. default is 1.
    **difference**: The difference image to use for the statistics. default is None.
    **return** Returns the statistics of the image **static** False **C++ defination code**: ```cpp image::Statistics get_statistics(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int bins 1, int l_bins 1, int a_bins 1, int b_bins 1, image::Image *difference nullptr) ``` #### get\\_regression item doc **type** func **brief** Gets the regression of the image. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: The x stride to use for the regression. default is 2.
    **y_stride**: The y stride to use for the regression. default is 1.
    **area_threshold**: The area threshold to use for the regression. default is 10.
    **pixels_threshold**: The pixels threshold to use for the regression. default is 10.
    **robust**: If true, the regression will be robust. default is false.
    **return** Returns the regression of the image **static** False **C++ defination code**: ```cpp std::vector get_regression(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int x_stride 2, int y_stride 1, int area_threshold 10, int pixels_threshold 10, bool robust false) ``` #### save item doc **type** func **brief** Save image to file **param** **path**: file path
    **quality**: image quality, by default(value is 95), support jpeg and png format
    **return** error code, err::ERR_NONE is ok, other is error **static** False **C++ defination code**: ```cpp err::Err save(const char *path, int quality 95) ``` #### flood\\_fill item doc **type** func **brief** Flood fills a region of the image starting from location x, y. **param** **x**: The x coordinate of the seed point.
    **y**: The y coordinate of the seed point.
    **seed_threshold**: The seed_threshold value controls how different any pixel in the fill area may be from the original starting pixel. default is 0.05.
    **floating_threshold**: The floating_threshold value controls how different any pixel in the fill area may be from any neighbor pixels. default is 0.05.
    **color**: The color to fill the region with. default is white.
    **invert**: If true, the image will be inverted before the operation. default is false.
    **clear_background**: If true, the background will be cleared before the operation. default is false.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None. FIXME: the mask image works abnormally
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *flood_fill(int x, int y, float seed_threshold 0.05, float floating_threshold 0.05, image::Color color image::COLOR_WHITE, bool invert false, bool clear_background false, image::Image *mask nullptr) ``` #### erode item doc **type** func **brief** Erodes the image in place. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: The number of pixels in the kernel that are not 0. If it is less than or equal to the threshold, set the center pixel to black. default is (kernel_size 1).
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *erode(int size, int threshold 1, image::Image *mask nullptr) ``` #### dilate item doc **type** func **brief** Dilates the image in place. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: The number of pixels in the kernel that are not 0. If it is greater than or equal to the threshold, set the center pixel to white. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *dilate(int size, int threshold 0, image::Image *mask nullptr) ``` #### open item doc **type** func **brief** Performs erosion and dilation on an image in order. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for erosion and dilation, the actual threshold for erosion is (kernel_size 1 threshold), the actual threshold for dialation is threshold. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *open(int size, int threshold 0, image::Image *mask nullptr) ``` #### close item doc **type** func **brief** Performs dilation and erosion on an image in order. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for erosion and dilation, the actual threshold for erosion is (kernel_size 1 threshold), the actual threshold for dialation is threshold. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *close(int size, int threshold 0, image::Image *mask nullptr) ``` #### top\\_hat item doc **type** func **brief** Returns the image difference of the image and Image.open()’ed image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for open method. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *top_hat(int size, int threshold 0, image::Image *mask nullptr) ``` #### black\\_hat item doc **type** func **brief** Returns the image difference of the image and Image.close()’ed image. **param** **size**: Kernel size. The actual kernel size is ((size * 2) + 1) * ((size * 2) + 1). Use 1(3x3 kernel), 2(5x5 kernel).
    **threshold**: As the threshold for close method. default is 0.
    **mask**: Mask is another image to use as a pixel level mask for the operation. The mask should be an image with just black or white pixels and should be the same size as the image being operated on.
    Only pixels set in the mask are modified. default is None.
    **return** Returns the image after the operation is completed. **static** False **C++ defination code**: ```cpp image::Image *black_hat(int size, int threshold 0, image::Image *mask nullptr) ``` #### find\\_blobs item doc **type** func **brief** Finds all blobs in the image and returns a list of image.Blob class which describe each Blob.\\nPlease see the image.Blob object more more information. **param** **thresholds**: You can define multiple thresholds.
    For GRAYSCALE format, you can use {{Lmin, Lmax}, ...} to define one or more thresholds.
    For RGB888 format, you can use {{Lmin, Lmax, Amin, Amax, Bmin, Bmax}, ...} to define one or more thresholds.
    Where the upper case L,A,B represent the L,A,B channels of the LAB image format, and min, max represent the minimum and maximum values of the corresponding channels.
    **invert**: if true, will invert thresholds before find blobs, default is false
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: x stride is the number of x pixels to skip when doing the hough transform. default is 2
    **y_stride**: y_stride is the number of y pixels to skip when doing the hough transform. default is 1
    **area_threshold**: area threshold, if the blob area is smaller than area_threshold, the blob is not returned, default is 10
    **pixels_threshold**: pixels threshold, if the blob pixels is smaller than area_threshold, the blob is not returned,, default is 10.
    when x_stride and y_stride is equal to 1, pixels_threshold is equivalent to area_threshold
    **merge**: if True merges all not filtered out blobs whos bounding rectangles intersect each other. default is false
    **margin**: margin can be used to increase or decrease the size of the bounding rectangles for blobs during the intersection test.
    For example, with a margin of 1 blobs whos bounding rectangles are 1 pixel away from each other will be merged. default is 0
    **x_hist_bins_max**: if set to non zero populates a histogram buffer in each blob object with an x_histogram projection of all columns in the object. This value then sets the number of bins for that projection.
    **y_hist_bins_max**: if set to non zero populates a histogram buffer in each blob object with an y_histogram projection of all rows in the object. This value then sets the number of bins for that projection.
    **return** Return the blob when found blobs, format is (blob1, blob2, ...), you can use blob class methods to do more operations. **static** False **C++ defination code**: ```cpp std::vector find_blobs(std::vector> thresholds std::vector>(), bool invert false, std::vector roi std::vector(), int x_stride 2, int y_stride 1, int area_threshold 10, int pixels_threshold 10, bool merge false, int margin 0, int x_hist_bins_max 0, int y_hist_bins_max 0) ``` #### find\\_lines item doc **type** func **brief** Find lines in image **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: x stride is the number of x pixels to skip when doing the hough transform. default is 2
    **y_stride**: y_stride is the number of y pixels to skip when doing the hough transform. default is 1
    **threshold**: threshold threshold controls what lines are detected from the hough transform. Only lines with a magnitude greater than or equal to threshold are returned.
    The right value of threshold for your application is image dependent. default is 1000.
    **theta_margin**: theta_margin controls the merging of detected lines. default is 25.
    **rho_margin**: rho_margin controls the merging of detected lines. default is 25.
    **return** Return the line when found lines, format is (line1, line2, ...), you can use line class methods to do more operations **static** False **C++ defination code**: ```cpp std::vector find_lines(std::vector roi std::vector(), int x_stride 2, int y_stride 1, double threshold 1000, double theta_margin 25, double rho_margin 25) ``` #### find\\_line\\_segments item doc **type** func **brief** Finds all line segments in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **merge_distance**: The maximum distance between two lines to merge them. default is 0.
    **max_theta_difference**: The maximum difference between two lines to merge them. default is 15.
    **return** Return the line when found lines, format is (line1, line2, ...), you can use line class methods to do more operations **static** False **C++ defination code**: ```cpp std::vector find_line_segments(std::vector roi std::vector(), int merge_distance 0, int max_theta_difference 15) ``` #### find\\_circles item doc **type** func **brief** Find circles in image **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **x_stride**: x stride is the number of x pixels to skip when doing the hough transform. default is 2
    **y_stride**: y_stride is the number of y pixels to skip when doing the hough transform. default is 1
    **threshold**: threshold controls what circles are detected from the hough transform. Only circles with a magnitude greater than or equal to threshold are returned.
    The right value of threshold for your application is image dependent.
    **x_margin**: x_margin controls the merging of detected circles. Circles which are x_margin, y_margin, and r_margin pixels apart are merged. default is 10
    **y_margin**: y_margin controls the merging of detected circles. Circles which are x_margin, y_margin, and r_margin pixels apart are merged. default is 10
    **r_margin**: r_margin controls the merging of detected circles. Circles which are x_margin, y_margin, and r_margin pixels apart are merged. default is 10
    **r_min**: r_min controls the minimum circle radius detected. Increase this to speed up the algorithm. default is 2
    **r_max**: r_max controls the maximum circle radius detected. Decrease this to speed up the algorithm. default is min(roi.w / 2, roi.h / 2)
    **r_step**: r_step controls how to step the radius detection by. default is 2.
    **return** Return the circle when found circles, format is (circle1, circle2, ...), you can use circle class methods to do more operations **static** False **C++ defination code**: ```cpp std::vector find_circles(std::vector roi std::vector(), int x_stride 2, int y_stride 1, int threshold 2000, int x_margin 10, int y_margin 10, int r_margin 10, int r_min 2, int r_max 1, int r_step 2) ``` #### find\\_rects item doc **type** func **brief** Finds all rects in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **threshold**: The threshold to use for the rects. default is 10000.
    **return** Returns the rects of the image **static** False **C++ defination code**: ```cpp std::vector find_rects(std::vector roi std::vector(), int threshold 10000) ``` #### find\\_qrcodes item doc **type** func **brief** Finds all qrcodes in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the qrcodes of the image **static** False **C++ defination code**: ```cpp std::vector find_qrcodes(std::vector roi std::vector()) ``` #### find\\_apriltags item doc **type** func **brief** Finds all apriltags in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **families**: The families to use for the apriltags. default is TAG36H11.
    **fx**: The camera X focal length in pixels, default is 1.
    **fy**: The camera Y focal length in pixels, default is 1.
    **cx**: The camera X center in pixels, default is image.width / 2.
    **cy**: The camera Y center in pixels, default is image.height / 2.
    **return** Returns the apriltags of the image **static** False **C++ defination code**: ```cpp std::vector find_apriltags(std::vector roi std::vector(), image::ApriltagFamilies families image::ApriltagFamilies::TAG36H11, float fx 1, float fy 1, int cx 1, int cy 1) ``` #### find\\_datamatrices item doc **type** func **brief** Finds all datamatrices in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **effort**: Controls how much time to spend trying to find data matrix matches. default is 200.
    **return** Returns the datamatrices of the image **static** False **C++ defination code**: ```cpp std::vector find_datamatrices(std::vector roi std::vector(), int effort 200) ``` #### find\\_barcodes item doc **type** func **brief** Finds all barcodes in the image. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the barcodes of the image **static** False **C++ defination code**: ```cpp std::vector find_barcodes(std::vector roi std::vector()) ``` #### find\\_displacement item doc **type** func **brief** Finds the displacement between the image and the template. TODO: support in the feature\\nnote: this method must be used on power of 2 image sizes **param** **template_image**: The template image.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **template_roi**: The region of interest rectangle (x, y, w, h) to work in. If not specified, it is equal to the image rectangle.
    **logpolar**: If true, it will instead find rotation and scale changes between the two images. default is false.
    **return** Returns the displacement of the image **static** False **C++ defination code**: ```cpp image::Displacement find_displacement(image::Image &template_image, std::vector roi std::vector(), std::vector template_roi std::vector(), bool logpolar false) ``` #### find\\_template item doc **type** func **brief** Finds the template in the image. **param** **template_image**: The template image.
    **threshold**: Threshold is floating point number (0.0 1.0) where a higher threshold prevents false positives while lowering the detection rate while a lower threshold does the opposite.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image. Only valid in SEARCH_EX mode.
    **step**: The step size to use for the template. default is 2. Only valid in SEARCH_EX mode
    **search**: The search method to use for the template. default is SEARCH_EX.
    **return** Returns a bounding box tuple (x, y, w, h) for the matching location otherwise None. **static** False **C++ defination code**: ```cpp std::vector find_template(image::Image &template_image, float threshold, std::vector roi std::vector(), int step 2, image::TemplateMatch search image::TemplateMatch::SEARCH_EX) ``` #### find\\_features item doc **type** func **brief** Finds the features in the image. TODO: support in the feature **param** **cascade**: The cascade to use for the features. default is CASCADE_FRONTALFACE_ALT.
    **threshold**: The threshold to use for the features. default is 0.5.
    **scale**: The scale to use for the features. default is 1.5.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the features of the image **static** False **C++ defination code**: ```cpp std::vector find_features(int cascade, float threshold 0.5, float scale 1.5, std::vector roi std::vector()) ``` #### find\\_lbp item doc **type** func **brief** Finds the lbp in the image. TODO: support in the feature. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **return** Returns the lbp of the image **static** False **C++ defination code**: ```cpp image::LBPKeyPoint find_lbp(std::vector roi std::vector()) ``` #### find\\_keypoints item doc **type** func **brief** Finds the keypoints in the image. TODO: support in the feature. **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **threshold**: The threshold to use for the keypoints. default is 20.
    **normalized**: If true, the image will be normalized before the operation. default is false.
    **scale_factor**: The scale factor to use for the keypoints. default is 1.5.
    **max_keypoints**: The maximum number of keypoints to use for the keypoints. default is 100.
    **corner_detector**: The corner detector to use for the keypoints. default is CORNER_AGAST.
    **return** Returns the keypoints of the image **static** False **C++ defination code**: ```cpp image::ORBKeyPoint find_keypoints(std::vector roi std::vector(), int threshold 20, bool normalized false, float scale_factor 1.5, int max_keypoints 100, image::CornerDetector corner_detector image::CornerDetector::CORNER_AGAST) ``` #### find\\_edges item doc **type** func **brief** Finds the edges in the image. **param** **edge_type**: The edge type to use for the edges. default is EDGE_CANNY.
    **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **threshold**: The threshold to use for the edges. default is 20.
    **return** Returns the edges of the image **static** False **C++ defination code**: ```cpp image::Image* find_edges(image::EdgeDetector edge_type, std::vector roi std::vector(), std::vector threshold std::vector({100, 200})) ``` #### find\\_hog item doc **type** func **brief** Finds the hog in the image. TODO: support in the feature **param** **roi**: The region of interest, input in the format of (x, y, w, h), x and y are the coordinates of the upper left corner, w and h are the width and height of roi.
    default is None, means whole image.
    **size**: The size to use for the hog. default is 8.
    **return** Returns the hog of the image **static** False **C++ defination code**: ```cpp image::Image* find_hog(std::vector roi std::vector(), int size 8) ``` #### match\\_lbp\\_descriptor item doc **type** func **brief** Matches the lbp descriptor of the image. TODO: support in the feature **param** **desc1**: The descriptor to use for the match.
    **desc2**: The descriptor to use for the match.
    **return** Returns the match of the image **static** False **C++ defination code**: ```cpp int match_lbp_descriptor(image::LBPKeyPoint &desc1, image::LBPKeyPoint &desc2) ``` #### match\\_orb\\_descriptor item doc **type** func **brief** Matches the orb descriptor of the image. TODO: support in the feature **param** **desc1**: The descriptor to use for the match.
    **desc2**: The descriptor to use for the match.
    **threshold**: The threshold to use for the match. default is 95.
    **filter_outliers**: If true, the image will be filter_outliers before the operation. default is false.
    **return** Returns the match of the image **static** False **C++ defination code**: ```cpp image::KPTMatch match_orb_descriptor(image::ORBKeyPoint &desc1, image::ORBKeyPoint &desc2, int threshold 95, bool filter_outliers false) ```"}} \ No newline at end of file diff --git a/maixpy/static/search_index/index_1.json b/maixpy/static/search_index/index_1.json index e5384ee..87db5b3 100644 --- a/maixpy/static/search_index/index_1.json +++ b/maixpy/static/search_index/index_1.json @@ -1 +1 @@ -{"/maixpy/doc/zh/faq.html":{"title":"MaixPy FAQ(常见问题)","content":" title: MaixPy FAQ(常见问题) 此页面列出了 MaixPy 相关的常见问题和解决方案,如果你遇到了问题,请先在这里找寻答案。 如果这个页面找不到答案,可以到 [MaixHub 讨论版块](https://maixhub.com/discussion) 将问题的详细步骤发贴提问。 ## MaixPy v4 和 v1 v3 有什么区别? * MaixPy v4 使用 Python 语言,是吸取了 v1 v3 经验的集大成之作,有更好的配套软件和生态,更多的功能,更简单的使用方式和更完善的文档;硬件有很大提升的同时加个和另外两者的硬件价格想当甚至更便宜;另外也做了兼容 K210 的使用体验和 API,方便用户从 v1 快速迁移到 v4。 * v1 使用了 Micropython 语言,有很多局限性,比如第三方库支持有限;同时受限于 Maix I (K210) 的硬件性能,内存不够用,AI 模型支持有限,很多编解码不支持硬件加速等缺点。 * v3 也是使用了 Python 语言,基于 Maix II Dock (v831) 硬件,硬件 AI 模型支持有限,而且全志的基础生态不够开放,API 也不够完善,此版本仅作为 Maix II Dock (v831)上面使用,不会继续更新。 ## MaixPy 目前只支持 MaixCAM 吗,用其它同款芯片的板子行不行? MaixPy 目前仅支持 MaixCAM 系列板子,其它同款芯片的板子也不支持(包括 Sipeed 的同款芯片板子 比如 LicheeRV Nano),强烈不建议尝试,导致设备损坏(比如冒烟烧屏等)后果自负。 未来 Sipeed 出的 Maix 系列的产品都将继续得到 MaixPy 支持,目前如果 MaixCAM 有什么无法满足的需求,可以到 [MaixHub 讨论版块](https://maixhub.com/discussion) 提出需求或者发送邮件到 support@sipeed.com. ## 可以用除了官方搭配的摄像头或者屏幕以外的自己的摄像头或者屏幕吗? 不建议这样操作,除非你有够丰富的软硬件知识和经验,否则可能导致设备损坏。 官方搭配的配件对应的软硬件是调教过的,表现效果是最好的,上手即可使用,其它配件可能接口不同,驱动不同,软件不同,需要自己去调教,这是一个非常复杂的过程,不建议尝试。 当然,如果你是大佬,我们也欢迎你提交 PR! ## MaixVision 无法搜索到设备? * 确保设备通过 Type C 数据线连接到电脑,设备处于开机状态并且进入了功能选择界面。 * 确保设备驱动已经安装: * Windows 下可以在`设备管理器`中查看是否有 USB 虚拟网卡设备,如果有感叹号则是去动没有安装好,按照[快速开始](./index.html) 中的方法安装驱动即可。 * Linux 下可以通过`ifconfig`或者`ip addr`查看是否有`usb0`设备或者`lsusb`查看所有 USB 设备。 Linux 已经自带去动,所以识别不到检查硬件连接,设备系统是否是最新,以及设备是否已经正常启动即可。 * Mac OS 同 Linux 方法。"},"/maixpy/doc/zh/basic/python.html":{"title":"Python 基础知识","content":" title: Python 基础知识 MaixPy 的教程文档里面就不涉及具体的 Python 语法教程了,因为 Python 的教程实在是太多了,都做得很好,这里只介绍需要学什么,方向和线路指导即可。 ## Python 简介 Python 是一门解释性、面向对象、动态类型的高级编程语言。 * 解释性:不需要编译,直接运行,优点是开发快速,缺点是因为每次运行都要解释一遍代码,运行速度慢一点点,但是往往瓶颈还是开发者写的代码而不是语言本身。 * 面向对象:支持面向对象编程,可以定义类和对象,相比面向过程语言,更容易组织代码。更多自行搜索。 * 动态类型:变量不需要声明类型,可以直接赋值,类型会根据赋值自动确定,这样可以减少代码量,但是也容易出现类型错误,需要开发者自己注意。 总之,对于没有接触过 Python 的开发者来说,Python 非常容易上手,有大量现成的库,开发者群体巨大,开发应用周期短,非常值得学习! ## Python 环境安装 你可以按照你学习的 Python 教程在电脑上安装 Python; 也可以在 MaixVisioin 上连接设备后使用 MaixVision 编程然后在开发板运行。 ## 使用 MaixPy 需要的 Python 基础有哪些? * Python 的基本概念。 * 面向对象编程的基本概念。 * Python 的基本语法,包括: * tab 缩进对齐语法 * 变量、函数、类、对象、注释等 * 控制语句比如 if、for、while 等等 * 模块和导入模块 * 基本数据类型比如 int、float、str、list、dict、tuple 等等 * bytes 和 str 的区别和转换 * 异常处理,try except * 常用的内置函数,比如 print、open、len、range 等等 * 常用的内置模块,比如 os、sys、time、random、math 等等 掌握以上的基础知识就可以顺畅使用 MaixPy 编程了,配合后面的教程和例程,在不懂的时候查询搜索引擎或者官方文档,或者问 ChatGPT 就能顺利完成开发。 ## 对于已经有一门面向对象编程语言经验的开发者 如果你已经会一门面向对象语言比如 C++/Java/C# 等等,那只需要快速浏览一下 Python 的语法,就可以开始使用了。 比如 [菜鸟教程](https://www.runoob.com/python3/python3 tutorial.html) 或者 [Python 官方教程](https://docs.python.org/3/tutorial/index.html)。 或者个人开发者的博客,比如 [哇!是 Python](https://neucrack.com/p/59)。 ## 对于没有面向对象编程经验但是有 C 语言经验的开发者 如果只学了 C,缺乏对面向对象的理解,那么可以先学习一下面向对象的概念,然后再学习 Python,也是比较快的,可以自行搜索视频教程入门。 跟着视频教程入门之后可以看看文档教程,比如 [菜鸟教程](https://www.runoob.com/python3/python3 tutorial.html) 或者 [Python 官方教程](https://docs.python.org/3/tutorial/index.html) 就可以开动了! 在学了入门知识后,就可以按照 MaixPy 的文档和例程开始使用 MaixPy 编程了。 ## 对于编程新手 如果你从未接触过编程,那么你需要重头开始学习 Python,Python 作为入门语言也是比较合适的,具体可以搜一搜视频教程。 在学会了基础语法后,就能按照例程使用 MaixPy 编程了。"},"/maixpy/doc/zh/basic/linux_basic.html":{"title":"Linux 基础知识","content":" title: Linux 基础知识 ## 简介 本章内容对于刚入门的同学来说,可以先跳过此章节,在学会 MaixPy 基础开发后再来学习也是可以的。 最新的 MaixPy 支持的 MaixCAM 硬件支持跑 Linux 系统,所以 MaixPy 底层都是基于 Linux 系统进行开发的。 虽然 Sipeed 开发的 MaixPy 已经为开发者们做了很多工作,即使不知道 Linux 系统知识也能愉快使用,但是以防在某些情况下需要一些底层操作,以及方便未接触过 Linux 的开发者学习,这里写一些 Linux 基础知识。 ## 为什么需要 Linux 系统 具体的原因大家可以自行查阅,这里用通俗的看起来不太专业的话语简单举几个例子方便初学者理解: * 在单片机中,我们的程序是一个死循环程序,用上 Linux 后我们可以同时跑很多程序,每个程序看起来都独立在同时运行,每个程序具体怎么执行的由操作系统实现。 * 基于 Linux 的开发者众多,需要功能和驱动可以很方便地找到,不需要自己再实现一遍。 * 基于 Linux 配套的软件工具丰富,可以很方便地进行开发和调试,比如在本教程没有提到的一些 Linux 通用工具理论上也是可以使用的。 ## 文件系统 什么是文件系统? * 就像电脑的文件系统一样,Linux 上会将硬件磁盘用文件系统进行管理,这样我们可以很方便地向磁盘读写数据。 * 对于学过单片机没有接触过文件系统开发的同学来讲,可以理解为我们有一个 Flash 或者 TF 卡,我们可以通过 API 读写 Flash 存取数据,断电后也能保存数据,但是 Flash 具有读写寿命,我们往往需要写一套程序去保证 Flash 读写寿命,而文件系统就可以理解成这样一套成熟的程序,文件系统帮我们完成了具体如何管理 Flash 空间和读写,我们只需调用文件系统的 API 即可,大大减少了我们的开发工作量并且用成熟的程序保证了稳定性和安全性。 ## 在电脑和设备(开发板)之间传输文件 既然设备有 Linux 和文件系统,那我们怎么发送文件到设备呢? 对于 MaixPy 我们配套了 MaixVision, 在后面的版本也会支持文件管理功能,在此之前可以用下面的方法: 这里我们主要介绍通过网络传输的方式,其它方式可自行探索`传输文件到 Linux`: * 确保设备和电脑连接到了同一个局域网,比如: * MaixCAM 的 USB 口连接到电脑会创建一个虚拟网卡,在电脑端的设备管理器就能看到,设备的 IP 可以在设备的`设置 >设备信息`中看到设备名和 IP。 * 也可以在设备`设置 >WiFi`中连接到和电脑相同的局域网。 * 电脑使用 SCP 或者 SFTP 协议传输文件到设备,具体的软件有很多,具体的软件和使用方法可以自行搜索,比如: * 在 Windows 上可以使用 WinSCP 或者 FileZilla,或者 scp 命令等。 * 在 Linux 上可以使用 FileZilla 或者 scp 命令 等。 * 在 Mac 上可以使用 FileZilla 或者 scp 命令 等。 ## 终端和命令行 终端就是通过`终端`这个软件与 Linux 系统进行通信和操作的工具,类似于 Windows 的`cmd`或者`PowerShell`。 比如我们可以在电脑的 Window 系统中的 powershell 或者 Linux系统中的 终端 工具中输入`ssh root@maixcam xxxx.local` 这里具体的名字在设备的`设置 >设备信息`中可以看到,这样我们就可以通过终端连接到设备了(用户名和密码都是`root`)。 然后我们通过输入命令来操作设备,比如`ls`命令可以列出设备文件系统中当前目录下的文件, `cd` 用来切换当前所在的目录(就像电脑文件管理中点击文件夹切换目录一样), ```shell cd / # 切换到根目录 ls # 显示当前目录(根目录)下的所有文件 ``` 然后会显示类似下面的内容: ```shell bin lib media root tmp boot lib64 mnt run usr dev linuxrc opt sbin var etc lost+found proc sys ``` 更多命令学习请自行搜索`Linux 命令行使用教程`,这里只是为了让初学者知道基本概念,这样有开发者提到时可以知道是什么意思。"},"/maixpy/doc/zh/basic/maixvision.html":{"title":"MaixVision -- MaixPy 编程 + 图形化积木编程","content":" title: MaixVision MaixPy 编程 + 图形化积木编程 ## 简介 MaixVision 是专为 Maix 生态打造的一款开发者编程工具,支持 MaixPy 编程和图形化积木编程,同时支持在线运行和调试,以及实时预览图像,可以同步设备显示屏的图像,方便调试和开发。 以及支持打包应用和安装应用到设备,方便用户一键生成、安装应用。 同时还集成一些方便开发的小工具,比如文件管理,阈值编辑器,二维码生成等等。 ## 使用 MaixPy 编程和在线运行 按照[快速开始](../index.html)的步骤连接设备,我们可以很方便地使用 MaixPy 编程和在线运行。 ## 实时预览图像 MaixPy 提供`display`模块,可以将图像显示到屏幕上,同时,在调用`display`模块的`show`方法时,会将图像发送到 MaixVision 显示,比如代码: ```python from maix import display, camera cam camera.Camera(640, 480) disp display.Display() while 1: disp.show(cam.read()) ``` 这里我们用摄像头读取了图像,然后通过`disp.show()`方法将图像显示到屏幕上,同时也会发送到 MaixVision 显示。 当我们点击了右上角的`暂停`按钮,就会停止发送图像到 MaixVision 显示。 ## 计算图像的直方图 在上一步中我们可以在 MaixVision 中实时看到图像,我们用鼠标框选一个区域,图像下方就能看到这个区域的直方图了,选择不同的颜色表示方法,可以看到不同的颜色通道的直方图。 这个功能方便我们在做某些图像处理算法时找到一些合适的参数。 ## 使用图形化积木编程 开发中,敬请期待。 ## 区分`设备文件系统`和`电脑文件系统` 这里我们有一个比较重要的概念需要掌握:**分清楚`设备文件系统`和`电脑文件系统`**。 * **电脑文件系统**:运行在电脑上,在 MaixVision 中打开文件或者工程都是打开的电脑里面的文件,保存也是自动保存到电脑的文件系统。 * **设备文件系统**:程序运行时会将程序发送到设备上运行,所以代码里面使用的文件都是从设备文件系统读取。 所以常见的问题是有同学在电脑上保存了文件`D:\\data\\a.jpg`,然后在设备上使用这个文件`img image.load(\"D:\\data\\a.jpg\")`,这样当然是找不到文件的,因为设备上没有`D:\\data\\a.jpg`这个文件。 具体如何将电脑的文件发送到设备上,参考下面的章节。 ## 传输文件到设备 开发中,敬请期待。 目前可以用其它工具代替: 先知道设备的 ip 地址或者设备名称,MaixVision 就可以搜索到, 或者在设备`设置 >系统信息`中看到,比如类似 `maixcam xxxx.local` 或者 `192.168.0.123`。 用户名和密码都是 `root`, 使用 `SFTP` 协议传输文件,端口号是 `22`。 然后不同系统下都有很多好用的软件: ### Windows 下 使用 [WinSCP](https://winscp.net/eng/index.php) 或者 [FileZilla](https://filezilla project.org/) 等工具连接设备,将文件传输到设备上,选择 `SFTP` 协议填写设备和账号信息连接即可。 具体不懂的可以自行搜索。 ### Linux 下 终端使用 `scp` 命令传输文件到设备上,比如: ```bash scp /path/to/your/file.py root@maixcam xxxx.local:/root ``` ### Mac 下 * **方法一**:终端使用 `scp` 命令传输文件到设备上,比如: ```bash scp /path/to/your/file.py root@maixcam xxxx.local:/root ``` * **方法二**:使用 [FileZilla](https://filezilla project.org/) 等工具连接设备,将文件传输到设备上,选择 `SFTP` 协议填写设备和账号信息连接即可。"},"/maixpy/doc/zh/basic/app.html":{"title":"应用开发和应用商店","content":" title: 应用开发和应用商店 ## 应用生态简介 为了让开发板做到开箱即用,以及方便用户无门槛地使用,以及方便开发者分享自己的有趣应用,并且能有有效的渠道获取到反馈甚至是收益,我们推出了一个简易的应用框架,包括: * **[应用商店](https://maixhub.com/app)**: 开发者上传分享应用,用户无需开发直接下载使用,开发者可以获取到一定的现金收益(来自 MaixHub 官方以及用户打赏)。 * **出厂内置大量应用**: 官方提供了一些常用的应用,比如找色块、AI 物体检测追踪、找二维码、人脸识别等等,用户可以直接使用,也可以作为串口模块直接使用。 * **MaixPy + MaixCDK** 软件开发包:使用 [MaixPy](https://github.com/sipeed/maixpy) 或者 [MaixCDK](https://github.com/sipeed/MaixCDK) 可以用 Python 或者 C/C++ 语言快速开发嵌入式 AI 视觉听觉应用,超高效率实现你的有趣想法。 * **MaixVision** 配套电脑端开发工具: 全新的电脑端代码开发工具,快速上手、调试、运行、上传代码、安装应用到设备,一键式开发,甚至支持图像化积木式编程,小学生也能轻松上手。 大家可以多多关注应用商店,也可以在应用商店中分享自己的应用,大家一起共建活跃的社区。"},"/maixpy/doc/zh/basic/os.html":{"title":"升级和烧录系统","content":" title: 升级和烧录系统 ## 介绍 如果你购买了官方(Sipeed)的带 TF 卡的套餐,一般来说出厂已经烧录好了系统,可以跳过这一步直接使用。 但是为了防止出厂烧录的系统版本过旧,强烈建议先按照教程升级到最新的系统。 ## 如何确认系统是否需要升级 * 在开机后的功能选择界面,点击`设置`,然后点击`设备信息`,可以看到系统的版本号。 * 到[系统发布历史页面]()查看最新系统的版本号以及更新日志,如果在你的版本后有重要更新,建议升级。 > 如果最新系统和当前系统对比只是 MaixPy 固件的常规更新,也可以不升级,在 `设置` 中的 `更新 MaixPy` 中单独更新 `MaixPy` 即可。 ## 获得最新系统 在 [MaixPy 发布页面](https://github.com/sipeed/MaixPy/releases) 找到最新的系统镜像文件,比如`maixcam_os_20240401_maixpy_v4.1.0.xz`。 备用地址: * [Sourceforge](https://sourceforge.net/projects/maixpy/files/) ## 烧录系统到 MaixCAM 参考 [MaixCAM 系统烧录](https://wiki.sipeed.com/hardware/zh/maixcam/os.html) 教程。"},"/maixpy/doc/zh/basic/python_pkgs.html":{"title":"添加额外的 Python 软件包","content":" title: 添加额外的 Python 软件包 ## 简介 MaixPy 基于 Python 语言,提供了大量方便嵌入式应用开发的功能和 API,除此之外,你也可以使用其它的 Python 包来扩展功能。 ## 安装额外的 Python 包 > 注意可能不是所有 Python 包都支持,一般只支持纯 Python 包,不支持 C 扩展包, C 扩展包可能需要你手动在电脑交叉编译(比较复杂,这里就不介绍了)。 ### 方法一: 使用 Python 代码来安装 在 MaixVision 中使用 Python 代码来安装你需要的包,比如: ```python import os os.system(\"pip install 包名\") ``` 要更新一个包,可以使用: ```python import os os.system(\"pip install upgrade 包名\") ``` ### 方法二: 终端使用 pip 命令安装 使用[Linux 基础](./linux_basic.html)中介绍的终端使用方法,使用 `pip install 包名` 安装你需要的包。"},"/maixpy/doc/zh/basic/app_usage.html":{"title":"应用使用说明","content":" title: 应用使用说明 开机后会自动进入应用选择界面,内置各种应用均发布在 [MaixHub 应用商店](https://maixhub.com/app), 可以在这里找到对应应用的介绍和使用说明。 上手用得比较多的是 `设置 > 语言`, 以及 `设置 > WiFi`,`应用商店`应用可以用来升级和安装应用,连接上可以连接互联网的 WiFi 后即可在[MaixHub 应用商店](https://maixhub.com/app)扫码安装应用。 另外,你编写的应用也可以上传到[MaixHub 应用商店](https://maixhub.com/app)分享给其他人使用,质量合格和优秀的应用都会得到官方红包打赏,优秀应用也会得到大家的赞同和支持。 无论是小到一个采集传感器的数据小应用还是功能复杂的应用,让我们一起来创造更多有趣的东西吧!"},"/maixpy/doc/zh/basic/maixpy_upgrade.html":{"title":"更新 MaixPy","content":" title: 更新 MaixPy 有两种方法,如果第一次上手使用,为了降低难度,可以直接使用出厂 TF 卡自带的 MaixPy 固件尝试,以后再考虑更新。 不过因为不知道你拿到手的是什么时候出厂的 TF 卡,所以建议都更新一下系统。 ## 直接更新系统 按照 [升级和烧录系统](./os.html) 中的操作升级到最新的系统,里面就包含了最新的 MaixPy 固件。 ## 只更新 MaixPy 固件 在 [MaixPy 仓库 release 页面](https://github.com/sipeed/MaixPy/releases) 看到最新的版本信息和更新日志,其中包含了 MaixPy 固件信息,以及对应版本使用的系统信息。 如果不想更新系统(因为一般系统变动不大,可以看 MaixPy 更新日志中是否有系统改动相关,再决定是否更新系统),则可以只更新 MaixPy 固件。 * 在设置中设置 WiFi, 让系统联网。 * 点击设置应用中的 `更新 MaixPy` 进行更新。 > 如果你会使用终端, 也可以在终端中使用 `pip install MaixPy U` 来更新 MaixPy。"},"/maixpy/doc/zh/pro/compile_os.html":{"title":"","content":""},"/maixpy/doc/zh/modules/thermal_cam.html":{"title":"","content":""},"/maixpy/doc/zh/modules/tof.html":{"title":"","content":""},"/maixpy/doc/zh/vision/yolov5.html":{"title":"MaixPy 使用 YOLOv5 模型进行目标检测","content":" title: MaixPy 使用 YOLOv5 模型进行目标检测 ## 目标检测概念 目标检测是指在图像或视频中检测出目标的位置和类别,比如在一张图中检测出苹果、飞机等物体,并且标出物体的位置。 和分类不同的是多了一个位置信息,所以目标检测的结果一般是一个矩形框,框出物体的位置。 ## MaixPy 中使用目标检测 MaixPy 默认提供了 `YOLOv5` 模型,可以直接使用: ```python from maix import camera, display, image, nn, app detector nn.YOLOv5(model \"/root/models/yolov5s.mud\") cam camera.Camera(detector.input_width(), detector.input_height(), detector.input_format()) dis display.Display() while not app.need_exit(): img cam.read() objs detector.detect(img, conf_th 0.5, iou_th 0.45) for obj in objs: img.draw_rect(obj.x, obj.y, obj.w, obj.h, color image.COLOR_RED) msg f'{detector.labels[obj.class_id]}: {obj.score:.2f}' img.draw_string(obj.x, obj.y, msg, color image.COLOR_RED) dis.show(img) ``` 效果视频:


    > 关于 MaixPy 介绍请看 [MaixPy 官网首页](../../index.html) ## 获得 MaixCAM 设备 在 [Sipeed 淘宝](https://sipeed.taobao.com) 或者 [Sipeed 速卖通](https://sipeed.aliexpress.com) 店铺购买 MaixCAM 开发板。 **建议购买带 `TF 卡`、`摄像头`、`2.3寸触摸屏`、`外壳`、`Type C一转二小板`、`4P串口座子+线`的套餐**,方便后续使用和开发,**后面的教程都默认你已经有了这些配件**(包括屏幕)。 另外需要准备一根 `Type C` 数据线,尽量买质量好点的防止供电和连接不稳定。 >! 注意,目前只支持 MaixCAM 开发板,其它同型号芯片的开发板均不支持,包括 Sipeed 的同型号芯片开发板,请注意不要买错造成不必要的时间和金钱浪费。 ## 上手体验 插入套餐里面的 TF 卡,使用 `Type C` 数据线连接 `MaixCAM` 设备给设备供电,等待设备开机,开机会进入功能选择界面。 > 如果屏幕没有显示,请确认购买了配套的 TF 卡,如果确认有 TF 卡,可以尝试[更新系统](./basic/os.html)。 > 如果你没有购买 TF 卡套餐,你需要按照[升级和烧录系统](./basic/os.html)的方法烧录最新的系统到 TF 卡。 开机后可以看到功能选择界面,在设置中可以切换语言,可以自行尝试内置的各种应用和功能。 ## 作为串口模块使用 内置的各种应用可以直接当成串口模块使用,比如`找色块`、`找人脸`、`找二维码`等等, > 如果是想把设备当成主控使用(或者你还不懂什么是串口模块)可以跳过这一步。 使用方法: * 硬件连接: 可以给设备接上`Type C一转二小板`,这样我们就能将设备通过串口连接到你的主控上了,比如`Arduino`、`树莓派`、`STM32`等等。 * 打开你想用的应用,比如二维码识别,当设备扫描到二维码就会通过串口把结果发送给你的主控了。 > 发送的串口波特率是 `115200`,数据格式是 `8N1`,协议遵循 [Maix 串口通信协议标准](https://wiki.sipeed.com/maixcdk/docs/doc/convention/protoco.md),可以在[MaixHub APP](https://maixhub.com/app) 找到对应的应用介绍查看协议。 ## 准备连接电脑和设备 为了后面电脑(PC)能和 设备(MaixCAM)通信,我们要让它们在同一个局域网内,提供了两种方式: * **方法一**:无线连接, 设备使用 WiFi 连接到电脑连接的同一个路由器或者 WiFi 热点下: 在设备的`设置 > WiFi 设置`中连接到你的 WiFi 即可。 * **方法二**:有线连接, 设备通过 USB 线连接到电脑,设备会虚拟成一个 USB 网卡,这样和电脑就通过 USB 在同一局域网了。 方案二在不同电脑系统中有不同设置方法: * **Linux**: 无需额外设置,插上 USB 线即可, 使用 `ifconfig` 或者 `ip addr` 查看到 `usb0` 网卡 * **Windows**: 可以先确认`网络适配器`里面是否多了一个 RNDIS 设备,如果有就直接能用。否则需要手动安装 RNDIS 网卡驱动: * 打开电脑的`设备管理器`。 * 然后在`其它设备`里面找个一个带问号的 RNDIS 设备,右键选择`更新驱动程序`。 * 选择`浏览计算机以查找驱动程序`,然后选择`让我从计算机上的可用驱动程序列表中选择`。 * 选择`网络适配器`,然后点击`下一步`。 * 左边选择`Microsoft`,右边选择`远程 NDIS 兼容设备`,然后点击`下一步`, 选择`是`。 * 装好后的效果 ![RNDIS](../../static/image/rndis_windows.jpg) * **MacOS**: 无需额外设置,插上 USB 线即可, 使用 `ifconfig` 或者 `ip addr` 查看到 `usb0` 网卡 ## 开发环境准备 * 下载 [MaixVision](https://wiki.sipeed.com/maixvision) 并安装。 * 使用 Type C 连接设备和电脑,打开 MaixVision,点击左下角的`“连接”`按钮,会自动搜索设备,稍等一下就能看到设备,点击设备有点的连接按钮以连接设备。 如果没有扫描到设备,你也可以在设备的 `设置 > 设备信息` 中查看设备的 IP 地址手动输入。 这里有 MaixVision 的使用示例视频: ## 运行例程 点击 MaixVision 左侧的`示例代码`,选择一个例程,点击左下角`运行`按钮将代码发送到设备上运行。 比如: * `hello.py`,点击`运行`按钮,就能看到 MaixVision 终端有来自设备打印的`Hello MaixPy!`了。 * `camera_display.py`,这个例程会打开摄像头并在屏幕上显示摄像头的画面。 ```python from maix import camera, display, app disp display.Display() # 构造一个显示对象,并初始化屏幕 cam camera.Camera(640, 480) # 构造一个摄像头对象,手动设置了分辨率为 640x480, 并初始化摄像头 while not app.need_exit(): # 一直循环,直到程序退出(可以通过按下设备的功能按键退出或者 MaixVision 点击停止按钮退出) img cam.read() # 读取摄像头画面保存到 img 变量,可以通过 print(img) 来打印 img 的详情 disp.show(img) # 将 img 显示到屏幕上 ``` * `yolov5.py` 会检测摄像头画面中的物体框出来并显示到屏幕上,支持 80 种物体的检测,具体请看[YOLOv5 物体检测](./vision/yolov5.html)。 其它例程可以自行尝试。 ## 安装应用到设备 上面是在设备中运行代码,`MaixVision` 断开后代码就会停止运行,如果想让代码出现在开机菜单中,可以打包成应用安装到设备上。 点击 `MaixVision` 左下侧的安装应用按钮,填写应用信息,会将应用安装到设备上,然后在设备上就能看到应用了。 也可以选择打包应用,将你的应用分享到[MaixHub 应用商店](https://maixhub.com/app)。 > 默认例程没有显式编写退出功能,进入应用后按下设备的功能按键即可退出应用。(对于 MaixCAM 是 user 键) 如果想让程序开机自启动,可以在 `设置 > 开机启动` 中设置。 ## 下一步 看到这里,如果你觉得不错,**请务必来 [github](https://github.com/sipeed/MaixPy) 给 MaixPy 开源项目点一个 star(需要先登录 github), 你的 star 和认同是我们不断维护和添加新功能的动力!** 到这里你已经体验了一遍使用和开发流程了,接下来可以学习 `MaixPy` 语法和功能相关的内容,请按照左边的目录进行学习,如果遇到 `API` 使用问题,可以在[API 文档](/api/)中查找。 学习前最好带着自己学习的目的学,比如做一个有趣的小项目,这样学习效果会更好,项目和经验都可以分享到[MaixHub 分享广场](https://maixhub.com/share),会获得现金奖励哦! ## 分享交流 * **[MaixHub 项目和经验分享](https://maixhub.com/share)** :分享你的项目和经验,获得现金打赏,获得官方打赏的基本要求: * **可复现型**:较为完整的项目制作复现过程。 * **炫耀型**:无详细的项目复现过程,但是项目展示效果吸引人。 * Bug 解决经验型:解决了某个难题的过程和具体解决方法分享。 * [MaixPy 官方论坛](https://maixhub.com/discussion/maixpy)(提问和交流) * QQ 群: (建议在 QQ 群提问前先发个帖,方便群友快速了解你需要了什么问题,复现过程是怎样的) * MaixPy (v4) AI 视觉交流大群: 862340358 * Telegram: [MaixPy](https://t.me/maixpy)。 * 商业合作或批量购买请联系 support@sipeed.com 。"},"/maixpy/doc/zh/source_code/add_c_module.html":{"title":"","content":""},"/maixpy/doc/zh/source_code/contribute.html":{"title":"参与 MaixPy 文档修改和贡献代码","content":" title: 参与 MaixPy 文档修改和贡献代码 ## 参与 MaixPy 文档修改 * 点击要修改的文档右上角的`编辑本页`按钮,进入 github 源文档页面。 * 保证已经登录了 GitHub 账号。 * 在 github 预案文档页面点击右上角铅笔按钮修改文档内容。 * github 会提示需要 fork 一份到自己的仓库,点击 fork 按钮。 > 这一步就是将 MaixPy 源码仓库复刻一份到你自己的账号下,这样你就可以自由修改了。 * 修改文档内容,然后在页面底部填写修改说明,点击提交修改。 * 然后在你的仓库中找到 Pull requests 按钮,点击创建一个 Pull requests。 * 然后在弹出的页面中填写修改说明,点击提交 Pull requests,其它人和管理员就可以在[Pull requests 页面](https://github.com/sipeed/MaixPy/pulls)看到你的修改了。 * 等待管理员审核通过后,你的修改就会合并到 MaixPy 源码仓库中了。 * 合并成功后,文档会自动更新到 [MaixPy 官方文档](https://wiki.sipeed.com/maixpy)。 > 文档经过 CDN 缓存了的,可能需要等待一段时间才能看到更新,紧急更新可以联系管理员手动刷新。 > 也可以访问 [en.wiki.sipeed.com/maixpy](https://en.wiki.sipeed.com/maixpy) 查看 github pages 服务版本,这个是没有缓存实时更新的。 ## 参与 MaixPy 代码贡献 * 访问 MaixPy 代码仓库地址:[github.com/sipeed/MaixPy](https://github.com/sipeed/MaixPy) * 在修改代码前最好先创建一个 [issue](https://github.com/sipeed/MaixPy/issues) ,描述你要修改的内容让大家知道你的想法和计划,这样大家可以参与修改讨论,以免重复劳动。 * 点击右上角的 fork 按钮,将 MaixPy 代码仓库复刻一份到你自己的账号下。 * 然后在你的账号下 clone 一份代码到本地。 * 修改代码后提交到你的仓库中。 * 然后在你的仓库中找到 Pull requests 按钮,点击创建一个 Pull requests。 * 然后在弹出的页面中填写修改说明,点击提交 Pull requests,其它人和管理员就可以在[Pull requests 页面](https://github.com/sipeed/MaixPy/pulls)看到你的修改了。 * 等待管理员审核通过后,你的修改就会合并到 MaixPy 源码仓库中了。 > 需要注意的是 MaixPy 的代码大多数是从 [MaixCDK](https://github.com/sipeed/MaixCDK) 自动生成的,所以如果你修改 C/C++ 源码,很有可能你需要先修改这个仓库。"},"/maixpy/doc/zh/peripheral/wdt.html":{"title":"","content":""},"/maixpy/doc/zh/peripheral/spi.html":{"title":"","content":""},"/maixpy/doc/zh/vision/ai.html":{"title":"AI 视觉基本知识","content":" title: AI 视觉基本知识 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 如果没有 AI 基础,在学习 AI 前可以先看[什么是人工智能(AI)和机器学习](https://wiki.sipeed.com/ai/zh/basic/what_is_ai.html) 了解一下 AI 的基本概念。 然后我们使用的视觉 AI 一般都是基于`深度神经网络学习`这个方法,有兴趣可以看看[深度神经网络(DNN)基础知识](https://wiki.sipeed.com/ai/zh/basic/dnn_basic.html) ## MaixPy 中使用视觉 AI 在 MaixPy 中使用视觉 AI 很简单,默认提供了常用的 AI 模型,不需要自己训练模型就可以直接使用,在[MaixHub 模型库](https://maixhub.com/model/zoo) 中选择`maixcam` 就可以找到。 并且在底层已经封装好的 API,只需要简单的调用就可以实现。 如果你想训练自己的模型,也可以先从[MaixHub 在线训练](https://maixhub.com/model/training/project) 开始,在线平台只需要点点点就能训练出模型,不需要购买昂贵的机器,不需要搭建复杂的开发环境,也不需要写代码,非常适合入门,也适合懒得翻代码的老手。 一般训练得到了模型文件,直接传输到设备上,调用 MaixPy 的 API 就可以使用了,具体的调用方法看后文。"},"/maixpy/doc/zh/vision/self_learn_detector.html":{"title":"","content":""},"/maixpy/doc/zh/vision/apriltag.html":{"title":"","content":""},"/maixpy/doc/zh/vision/self_learn_classifier.html":{"title":"","content":""},"/maixpy/doc/zh/vision/find_blobs.html":{"title":"MaixPy 找色块","content":" title: MaixPy 找色块 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 在视觉应用中,找色块是一个非常常见的需求,比如机器人找色块,自动化生产线找色块等等。 即需要识别画面中的特定的颜色区域,获取这个区域的位置和大小等信息。 ## 使用设备自带的找色块应用 打开设备,选择`找色块`应用,然后在下方选择要识别的颜色,或者自定义颜色,即可以识别到对应的颜色了,同时串口也会输出识别到的坐标和颜色信息。 ### 自定义颜色的方法 TODO: ### 串口协议 TODO: ## 使用 MaixPy 找色块 `maix.image.Image`中提供了`find_blobs`方法,可以方便的找色块。 ```python from maix import image, camera, display cam camera.Camera(320, 240) disp display.Display() thresholds [[0, 100, 120, 10, 0, 30]] while 1: img cam.read() blobs img.find_blobs(thresholds) for blob in blobs: img.draw_rectangle(blob[0], blob[1], blob[2], blob[3], color (255, 0, 0)) disp.show(img) ``` 这里的 `thresholds` 是一个颜色阈值列表,每个元素是一个颜色阈值,同时找到多个阈值就传入多个,每个颜色阈值的格式为 `[L_MIN, L_MAX, A_MIN, A_MAX, B_MIN, B_MAX]`,这里的 `L`、`A`、`B` 是`LAB`颜色空间的三个通道,`L` 通道是亮度,`A` 通道是红绿通道,`B` 通道是蓝黄通道。 可以在上面使用`找色块`应用中找到被检测物体对应的颜色阈值。 更多参数和用法请参考 API 文档。"},"/maixpy/doc/zh/vision/classify.html":{"title":"MaixPy 使用 AI 模型进行物体分类","content":" title: MaixPy 使用 AI 模型进行物体分类 ## 物体分类概念 比如眼前有两张图片,一张图里面是苹果,另一张是飞机,物体分类的任务就是把两张图分别依次输入给 AI 模型,模型会依次输出两个结果,一个是苹果,一个是飞机。 ## MaixPy 中使用物体分类 MaixPy 默认提供了 `imagenet` 数据集训练得到的 `1000`分类模型,可以直接使用: ```python from maix import camera, display, image, nn classifier nn.Classifier(model \"/root/models/mobilenetv2.mud\") cam camera.Camera(classifier.input_width(), classifier.input_height(), classifier.input_format()) dis display.Display() while 1: img cam.read() res classifier.classify(img) max_idx, max_prob res[0] msg f\"{max_prob:5.2f}: {classifier.labels[max_idx]}\" img.draw_string(10, 10, msg, image.COLOR_RED) dis.show(img) ``` 效果视频: 这里使用了摄像头拍摄图像,然后传给 `classifier`进行识别,得出结果后,将结果显示在屏幕上。 更多 API 使用参考 [maix.nn](/api/maix/nn.html) 模块的文档。 ## 训练自己的分类模型 请到[MaixHub](https://maixhub.com) 学习并训练分类模型,创建项目时选择`分类模型`即可。"},"/maixpy/doc/zh/vision/image_ops.html":{"title":"MaixPy 图像基础操作","content":" title: MaixPy 图像基础操作 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 视觉应用中图像占据非常重要的位置,不管是图片还是视频,因为视频本质上就是一帧帧的图像,所以图像处理是视觉应用的基础。 ## API 文档 本文介绍常用方法, 更多 API 参考 [maix.image](/api/maix/image.html) 模块的文档。 ## 图像格式 MaixPy 提供基础图像模块`image`,里面最重要的就是`image.Image`类,用于图像的创建以及各种图像基础操作,以及图像加载和保存等。 图像格式有很多,一般我们用`image.Format.FMT_RGB888` 或者 `image.Format.FMT_RGBA8888` 或者 `image.Format.FMT_GRAYSCALE`或者`image.Format.FMT_BGR888`等。 大家知道 `RGB` 三色可以合成任意颜色,所以一般情况下我们使用 `image.Format.FMT_RGB888`就足够, `RGB888` 在内存中是 `RGB packed` 排列,即在内存中的排列: `像素1_红色, 像素1_绿色, 像素1_蓝色, 像素2_红色, 像素2_绿色, 像素2_蓝色, ...` 依次排列。 ## 创建图像 创建图像很简单,只需要指定图像的宽度和高度以及图像格式即可: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) print(img) print(img.width(), img.height(), img.format()) ``` `320` 是图像的宽度,`240` 是图像的高度,`image.Format.FMT_RGB888` 是图像的格式,格式参数可以省略,默认是`image.Format.FMT_RGB888`。 这里通过`img.width()`、`img.height()`、`img.format()`可以获取图像的宽度、高度和格式。 ## 显示到屏幕 MaixPy 提供了`maix.display.Display`类,可以方便的显示图像: ```python from maix import image, display disp display.Display() img image.Image(320, 240, image.Format.FMT_RGB888) disp.show(img) ``` 注意这里因为没有图像数据,所以显示的是黑色的图像,修改画面看后文。 ## 从文件系统读取图像 MaixPy 提供了`maix.image.load`方法,可以从文件系统读取图像: ```python from maix import image img image.load(\"/root/image.jpg\") print(img) ``` 注意这里`/root/image.jpg` 是提前传输到了板子上的,方法可以看前面的教程。 可以支持 `jpg` 和 `png` 格式的图像。 ## 保存图像到文件系统 MaixPy 的`maix.image.Image`提供了`save`方法,可以保存图像到文件系统: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) # do something with img img.save(\"/root/image.jpg\") ``` ## 画框 `image.Image`提供了`draw_rect`方法,可以在图像上画框: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_rect(10, 10, 100, 100, image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x`, `y`, `w`, `h`, `color`,`x` 和 `y` 是框的左上角坐标,`w` 和 `h` 是框的宽度和高度,`color` 是框的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 可以用`thickness`指定框的线宽,默认是`1`, 也可以画实心框,传参 `thickness 1` 即可: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_rect(10, 10, 100, 100, (255, 0, 0), thickness 1) ``` ## 写字符串 `image.Image`提供了`draw_string`方法,可以在图像上写字: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_string(10, 10, \"Hello MaixPy\", image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x`, `y`, `text`, `color`,`x` 和 `y` 是文字的左上角坐标,`text` 是要写的文字,`color` 是文字的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 还可以放大字体,传参 `scale` 即可: ```python img.draw_string(10, 10, \"Hello MaixPy\", image.Color.from_rgb(255, 0, 0), scale 2) ``` 获取字体的宽度和高度: ```python w, h img.string_size(\"Hello MaixPy\", scale 2) print(w, h) ``` **注意**这里`scale`是放大倍数,默认是`1`,和`draw_string`应该保持一致。 ## 画线 `image.Image`提供了`draw_line`方法,可以在图像上画线: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_line(10, 10, 100, 100, image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x1`, `y1`, `x2`, `y2`, `color`,`x1` 和 `y1` 是线的起点坐标,`x2` 和 `y2` 是线的终点坐标,`color` 是线的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 ## 画圆 `image.Image`提供了`draw_circle`方法,可以在图像上画圆: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_circle(100, 100, 50, image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x`, `y`, `r`, `color`,`x` 和 `y` 是圆心坐标,`r` 是半径,`color` 是圆的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 ## 缩放图像 `image.Image`提供了`resize`方法,可以缩放图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.resize(160, 120) print(img, img_new) ``` 注意这里`resize`方法返回一个新的图像对象,原图像不变。 ## 剪裁图像 `image.Image`提供了`crop`方法,可以剪裁图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.crop(10, 10, 100, 100) print(img, img_new) ``` 注意这里`crop`方法返回一个新的图像对象,原图像不变。 ## 旋转图像 `image.Image`提供了`rotate`方法,可以旋转图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.rotate(90) print(img, img_new) ``` 注意这里`rotate`方法返回一个新的图像对象,原图像不变。 ## 拷贝图像 `image.Image`提供了`copy`方法,可以拷贝一份独立的图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.copy() print(img, img_new) ``` ## 仿射变换 `image.Image`提供了`affine`方法,可以进行仿射变换,即提供当前图中三个及以上的点坐标,以及目标图中对应的点坐标,可以自动进行图像的旋转、缩放、平移等操作变换到目标图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.affine([(10, 10), (100, 10), (10, 100)], [(10, 10), (100, 20), (20, 100)]) print(img, img_new) ``` 更多参数和用法请参考 API 文档。 ## 画关键点 `image.Image`提供了`draw_keypoints`方法,可以在图像上画关键点: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) keypoints [(10, 10), (100, 10), (10, 100)] img.draw_keypoints(keypoints, image.Color.from_rgb(255, 0, 0), size 10, thickness 1, fill False) ``` 在坐标`(10, 10)`、`(100, 10)`、`(10, 100)`画三个红色的关键点,关键点的大小是`10`,线宽是`1`,不填充。 ## 画十字 `image.Image`提供了`draw_cross`方法,可以在图像上画十字: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_cross(100, 100, image.Color.from_rgb(255, 0, 0), size 5, thickness 1) ``` 在坐标`(100, 100)`画一个红色的十字,十字的延长大小是`5`,所以线段长度为`2 * size + thickness`, 线宽是`1`。 ## 画箭头 `image.Image`提供了`draw_arrow`方法,可以在图像上画箭头: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_arrow(10, 10, 100, 100, image.Color.from_rgb(255, 0, 0), thickness 1) ``` 在坐标`(10, 10)`画一个红色的箭头,箭头的终点是`(100, 100)`,线宽是`1`。 ## 画图 `image.Image`提供了`draw_image`方法,可以在图像上画图: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img2 image.Image(100, 100, image.Format.FMT_RGB888) img2.draw_rect(10, 10, 90, 90, image.Color.from_rgb(255, 0, 0)) img.draw_image(10, 10, img2) ``` ## 转换格式 `image.Image`提供了`to_format`方法,可以转换图像格式: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.to_format(image.Format.FMT_BGR888) print(img, img_new) img_jpg img.to_format(image.Format.FMT_JPEG) print(img, img_new) ``` 注意这里`to_format`方法返回一个新的图像对象,原图像不变。 ## 和 Numpy/OpenCV 格式互相转换 另外还可以转换成`numpy`数组,这样就能给`numpy`和`opencv`等库使用: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_np image.image2cv(img) img2 image.cv2image(img_np) print(type(img_np), img_np, img_np.shape) print(type(img2), img2) ``` ## 和 bytes 数据互相转换 `image.Image`提供了`to_bytes`方法,可以转换图像为`bytes`数据: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) data img.to_bytes() print(type(data), len(data), img.data_size()) img2 image.Image(320, 240, image.Format.FMT_RGB888, data) print(img2) ``` 这里`to_bytes`获得一个新的`bytes`对象,是独立的内存,不会影响原图。 `image.Image`构造函数中传入`data`参数可以直接从`bytes`数据构造图像对象,注意新的图像也是独立的内存,不会影响到`data`。 因为涉及到内存拷贝,所以这个方法比较耗时,不建议频繁使用。 > 如果你想用不拷贝的方式优化程序(不建议轻易使用,写不好代码会导致程序容易崩溃,),请看 API 文档。 ## 更多基础 API 使用方法 更多 API 使用方法请参考 [maix.image](/api/maix/image.html) 模块的文档。"},"/maixpy/doc/zh/vision/maixhub_train.html":{"title":"使用 MaixHub 在线训练 AI 模型给 MaixPy 使用","content":" title: 使用 MaixHub 在线训练 AI 模型给 MaixPy 使用 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 MaixHub 提供了在线训练 AI 模型的功能,可以直接在浏览器中训练模型,不需要购买昂贵的机器,不需要搭建复杂的开发环境,也不需要写代码,非常适合入门,也适合懒得翻代码的老手。 ## 使用方法 请到 [MaixHub](https://maixhub.com) 注册账号,然后登录,主页有视频教程,学习即可。 注意 `物体分类模型` 比 `物体检测模型` 更简单,因为物体检测需要标注物体在图中的位置,会比较麻烦, 如果是初学者建议先从物体分类开始。"},"/maixpy/doc/zh/vision/object_track.html":{"title":"","content":""},"/maixpy/doc/zh/vision/display.html":{"title":"MaixPy 屏幕使用","content":" title: MaixPy 屏幕使用 update: date: 2024 03 31 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 MaixPy 提供了`display`模块,可以将图像显示到屏幕上,同时,也可以将图像发送到 MaixVision 显示,方便调试和开发。 ## API 文档 本文介绍常用方法,更多 API 请看 API 文档的 [display](/api/maix/display.md) 部分。 ## 使用屏幕 * 导入`display`模块: ```python from maix import display ``` * 创建一个`Display`对象: ```python disp display.Display() ``` * 显示图像: ```python disp.show(img) ``` 这里`img`对象是`maix.image.Image`对象,可以通过`camera`模块的`read`方法获取,也可以通过`image`模块的`load`方法加载文件系统中的图像,也可以通过`image`模块的`Image`类创建一个空白图像。 比如: ```python from maix import image, display disp display.Display() img image.load(\"/root/dog.jpg\") disp.show(img) ``` 这里需要先把`dog.jpg`文件传到设备的`/root`目录下。 显示文字: ```python from maix import image, display disp display.Display() img image.Image(320, 240) img.draw_rectangle(0, 0, disp.width(), disp.height(), color image.Color.from_rgb(255, 0, 0), thickness 1) img.draw_rectangle(10, 10, 100, 100, color image.Color.from_rgb(255, 0, 0)) img.draw_string(10, 10, \"Hello MaixPy!\", color image.Color.from_rgb(255, 255, 255)) disp.show(img) ``` 从摄像头读取图像并显示: ```python from maix import camera, display, app disp display.Display() cam camera.Camera(320, 240) while not app.need_exit(): img cam.read() disp.show(img) ``` > 这里用了一个`while not app.need_exit():` 是方便程序在其它地方调用`app.set_exit_flag()`方法后退出循环。 ## 显示到 MaixVision 在使用 MaixVision 运行代码时,能够将图像显示到 MaixVision 上,方便调试和开发。 在调用`show`方法时,会自动压缩图像并发送到 MaixVision 显示。 当然,如果你没有屏幕,或者为了节省内存不想初始化屏幕,也可以直接调用`image.Image`对象的`send_to_maixvision`方法发送图像到 MaixVision 显示。 ```python from maix import image img image.Image(320, 240) img.draw_rectangle(0, 0, img.width(), img.height(), color image.Color.from_rgb(255, 0, 0), thickness 1) img.draw_rectangle(10, 10, 100, 100, color image.Color.from_rgb(255, 0, 0)) img.draw_string(10, 10, \"Hello MaixPy!\", color image.Color.from_rgb(255, 255, 255)) img.send_to_maixvision() ```"},"/maixpy/doc/zh/vision/body_key_points.html":{"title":"","content":""},"/maixpy/doc/zh/vision/qrcode.html":{"title":"","content":""}} \ No newline at end of file +{"/maixpy/doc/zh/basic/app.html":{"title":"应用开发和应用商店","content":" title: 应用开发和应用商店 ## 应用生态简介 为了让开发板做到开箱即用,以及方便用户无门槛地使用,以及方便开发者分享自己的有趣应用,并且能有有效的渠道获取到反馈甚至是收益,我们推出了一个简易的应用框架,包括: * **[应用商店](https://maixhub.com/app)**: 开发者上传分享应用,用户无需开发直接下载使用,开发者可以获取到一定的现金收益(来自 MaixHub 官方以及用户打赏)。 * **出厂内置大量应用**: 官方提供了一些常用的应用,比如找色块、AI 物体检测追踪、找二维码、人脸识别等等,用户可以直接使用,也可以作为串口模块直接使用。 * **MaixPy + MaixCDK** 软件开发包:使用 [MaixPy](https://github.com/sipeed/maixpy) 或者 [MaixCDK](https://github.com/sipeed/MaixCDK) 可以用 Python 或者 C/C++ 语言快速开发嵌入式 AI 视觉听觉应用,超高效率实现你的有趣想法。 * **MaixVision** 配套电脑端开发工具: 全新的电脑端代码开发工具,快速上手、调试、运行、上传代码、安装应用到设备,一键式开发,甚至支持图像化积木式编程,小学生也能轻松上手。 大家可以多多关注应用商店,也可以在应用商店中分享自己的应用,大家一起共建活跃的社区。 ## 打包应用 使用 MaixPy + MaixVison 可以方便地开发、打包、安装应用: * 在 MaixVision 中使用 MaixPy 开发应用程序,可以是单个文件,也可以是一个工程目录。 * 连接设备。 * 点点击 MaixVision 左下角的 安装 按钮,会弹出一个界面填写应用的基本信息,id 是用来判别应用的 id,一个设备不能同时安装相同 id 的不同应用,所以 id 应该与 MaixHub 上面已经有的应用 id 不同,应用名字可以重复。以及图标等。 * 点击打包应用,会将应用打包成一个安装包,如果你要上传到 [MaixHub 应用商店](https://maixhub./com/app),用这个打包好的文件即可。 * 点击 安装应用,这会将打包好的应用安装到设备。 * 断开与设备的连接,就能看到设备功能选择界面多了一个你的应用,直接点进去就能运行。 > 如果你用 MaixCDK 开发,使用 `maixcdk relrease` 就能打包出来一个应用,具体看 MaixCDK 的文档。 ## 退出应用 如果你只是写了比较简单的应用,没有做界面和返回按钮,默认可以按设备上的功能按键(一般是 USER 或者 FUNC 或者 OK 按钮)或者返回按钮(如果有这个按键,MaixCAM 默认没有这个按键)来退出应用。 ## 应用开发基本准则 * 因为默认都配了触摸屏幕,推荐都写一个简单的界面显示,最好有触摸交互。实现方法可以在例子里面找找参考。 * 界面和按钮不要太小,因为 MaixCAM 默认的屏幕是 2.3寸 552x368分辨率,PPI 比较高屏幕比较小,要让手指能很容易戳到并且不会点错。 * 每个应用实现的主要功能实现一个简单的串口交互,基于[串口协议](https://github.com/sipeed/MaixCDK/blob/master/docs/doc/convention/protocol.md) ([例程](https://github.com/sipeed/MaixPy/tree/main/examples/communication/protocol)),这样用户可以直接当成串口模块使用,比如人脸检测应用,可以在检测到人脸后通过串口输出坐标。"},"/maixpy/doc/zh/basic/os.html":{"title":"升级和烧录系统","content":" title: 升级和烧录系统 ## 介绍 如果你购买了官方(Sipeed)的带 TF 卡的套餐,一般来说出厂已经烧录好了系统,可以跳过这一步直接使用。 但是为了防止出厂烧录的系统版本过旧,强烈建议先按照教程升级到最新的系统。 ## 如何确认系统是否需要升级 * 在开机后的功能选择界面,点击`设置`,然后点击`设备信息`,可以看到系统的版本号。 * 到[MaixPy 发布历史页面](https://github.com/sipeed/MaixPy/releases)查看更新日志,里面有 MaixPy 固件和系统镜像的更新说明,如果在你的版本后有重要更新,建议升级。 > 如果最新系统和当前系统对比只是 MaixPy 固件的常规更新,也可以不升级,在 `设置` 中的 `更新 MaixPy` 中单独更新 `MaixPy` 即可。 ## 获得最新系统 在 [MaixPy 发布页面](https://github.com/sipeed/MaixPy/releases) 找到最新的系统镜像文件,比如`maixcam_os_20240401_maixpy_v4.1.0.xz`。 备用地址: * [Sourceforge](https://sourceforge.net/projects/maixpy/files/) ## 烧录系统到 MaixCAM 参考 [MaixCAM 系统烧录](https://wiki.sipeed.com/hardware/zh/maixcam/os.html) 教程。"},"/maixpy/doc/zh/basic/python_pkgs.html":{"title":"添加额外的 Python 软件包","content":" title: 添加额外的 Python 软件包 ## 简介 MaixPy 基于 Python 语言,提供了大量方便嵌入式应用开发的功能和 API,除此之外,你也可以使用其它的 Python 包来扩展功能。 ## 安装额外的 Python 包 > 注意可能不是所有 Python 包都支持,一般只支持纯 Python 包,不支持 C 扩展包, C 扩展包可能需要你手动在电脑交叉编译(比较复杂,这里就不介绍了)。 ### 方法一: 使用 Python 代码来安装 在 MaixVision 中使用 Python 代码来安装你需要的包,比如: ```python import os os.system(\"pip install 包名\") ``` 要更新一个包,可以使用: ```python import os os.system(\"pip install upgrade 包名\") ``` ### 方法二: 终端使用 pip 命令安装 使用[Linux 基础](./linux_basic.html)中介绍的终端使用方法,使用 `pip install 包名` 安装你需要的包。"},"/maixpy/doc/zh/basic/app_usage.html":{"title":"应用使用说明","content":" title: 应用使用说明 开机后会自动进入应用选择界面,内置各种应用均发布在 [MaixHub 应用商店](https://maixhub.com/app), 可以在这里找到对应应用的介绍和使用说明。 上手用得比较多的是 `设置 > 语言`, 以及 `设置 > WiFi`,`应用商店`应用可以用来升级和安装应用,连接上可以连接互联网的 WiFi 后即可在[MaixHub 应用商店](https://maixhub.com/app)扫码安装应用。 另外,你编写的应用也可以上传到[MaixHub 应用商店](https://maixhub.com/app)分享给其他人使用,质量合格和优秀的应用都会得到官方红包打赏,优秀应用也会得到大家的赞同和支持。 无论是小到一个采集传感器的数据小应用还是功能复杂的应用,让我们一起来创造更多有趣的东西吧!"},"/maixpy/doc/zh/faq.html":{"title":"MaixPy FAQ(常见问题)","content":" title: MaixPy FAQ(常见问题) 此页面列出了 MaixPy 相关的常见问题和解决方案,如果你遇到了问题,请先在这里找寻答案。 如果这个页面找不到答案,可以到 [MaixHub 讨论版块](https://maixhub.com/discussion) 将问题的详细步骤发贴提问。 ## MaixVision 无法搜索到设备? 先确认连接方式是 WiFi 还是 USB 线, **WiFi**: * 确认 WiFi 是否正确连接上并且获取到 IP 地址, 可以在 `设置 >设备信息` 或者`设置 >WiFi` 里面看到 `ip`。 **USB线**: * 确保设备通过 Type C 数据线连接到电脑,设备处于开机状态并且进入了功能选择界面。 * 确保设备驱动已经安装: * Windows 下可以在`设备管理器`中查看是否有 USB 虚拟网卡设备,如果有感叹号则是去动没有安装好,按照[快速开始](./index.html) 中的方法安装驱动即可。 * Linux 下可以通过`ifconfig`或者`ip addr`查看是否有`usb0`设备或者`lsusb`查看所有 USB 设备。 Linux 已经自带去动,所以识别不到检查硬件连接,设备系统是否是最新,以及设备是否已经正常启动即可。 * Mac OS 同 Linux 方法。 * 另外 检查 USB 线缆的质量,换一个高质量的线缆。 * 另外 检查电脑 USB 口的质量,比如实测某些小主机 USB 口 EMI 设计太糟糕,外接一个质量好点的 USB HUB 反而可以使用了,也可以换 USB 口 或者直接换台电脑。 ## MaixVision 运行摄像头例程显示图像卡顿 默认配的 GC4653 摄像头最高帧率为 30 帧,摄像头例程正常情况下 MaixVision 的显示肉眼不会有卡顿感,如果卡顿,首先考虑传输问题: * 检查网络连接质量,比如 WiFi。 * 如果用的 USB 连接,检查 USB 线质量, 电脑 USB 口质量,可以尝试换台电脑或者 USB 口 或者 USB 线缆尝试对比。 ## MaixPy v4 和 v1 v3 有什么区别? * MaixPy v4 使用 Python 语言,是吸取了 v1 v3 经验的集大成之作,有更好的配套软件和生态,更多的功能,更简单的使用方式和更完善的文档;硬件有很大提升的同时加个和另外两者的硬件价格想当甚至更便宜;另外也做了兼容 K210 的使用体验和 API,方便用户从 v1 快速迁移到 v4。 * v1 使用了 Micropython 语言,有很多局限性,比如第三方库支持有限;同时受限于 Maix I (K210) 的硬件性能,内存不够用,AI 模型支持有限,很多编解码不支持硬件加速等缺点。 * v3 也是使用了 Python 语言,基于 Maix II Dock (v831) 硬件,硬件 AI 模型支持有限,而且全志的基础生态不够开放,API 也不够完善,此版本仅作为 Maix II Dock (v831)上面使用,不会继续更新。 ## MaixPy 目前只支持 MaixCAM 吗,用其它同款芯片的板子行不行? MaixPy 目前仅支持 MaixCAM 系列板子,其它同款芯片的板子也不支持(包括 Sipeed 的同款芯片板子 比如 LicheeRV Nano),强烈不建议尝试,导致设备损坏(比如冒烟烧屏等)后果自负。 未来 Sipeed 出的 Maix 系列的产品都将继续得到 MaixPy 支持,目前如果 MaixCAM 有什么无法满足的需求,可以到 [MaixHub 讨论版块](https://maixhub.com/discussion) 提出需求或者发送邮件到 support@sipeed.com. ## 可以用除了官方搭配的摄像头或者屏幕以外的自己的摄像头或者屏幕吗? 不建议这样操作,除非你有够丰富的软硬件知识和经验,否则可能导致设备损坏。 官方搭配的配件对应的软硬件是调教过的,表现效果是最好的,上手即可使用,其它配件可能接口不同,驱动不同,软件不同,需要自己去调教,这是一个非常复杂的过程,不建议尝试。 当然,如果你是大佬,我们也欢迎你提交 PR!"},"/maixpy/doc/zh/basic/python.html":{"title":"Python 基础知识","content":" title: Python 基础知识 MaixPy 的教程文档里面就不涉及具体的 Python 语法教程了,因为 Python 的教程实在是太多了,都做得很好,这里只介绍需要学什么,方向和线路指导即可。 ## Python 简介 Python 是一门解释性、面向对象、动态类型的高级编程语言。 * 解释性:不需要编译,直接运行,优点是开发快速,缺点是因为每次运行都要解释一遍代码,运行速度慢一点点,但是往往瓶颈还是开发者写的代码而不是语言本身。 * 面向对象:支持面向对象编程,可以定义类和对象,相比面向过程语言,更容易组织代码。更多自行搜索。 * 动态类型:变量不需要声明类型,可以直接赋值,类型会根据赋值自动确定,这样可以减少代码量,但是也容易出现类型错误,需要开发者自己注意。 总之,对于没有接触过 Python 的开发者来说,Python 非常容易上手,有大量现成的库,开发者群体巨大,开发应用周期短,非常值得学习! ## Python 环境安装 你可以按照你学习的 Python 教程在电脑上安装 Python; 也可以在 MaixVisioin 上连接设备后使用 MaixVision 编程然后在开发板运行。 ## 使用 MaixPy 需要的 Python 基础有哪些? * Python 的基本概念。 * 面向对象编程的基本概念。 * Python 的基本语法,包括: * tab 缩进对齐语法 * 变量、函数、类、对象、注释等 * 控制语句比如 if、for、while 等等 * 模块和导入模块 * 基本数据类型比如 int、float、str、list、dict、tuple 等等 * bytes 和 str 的区别和转换 * 异常处理,try except * 常用的内置函数,比如 print、open、len、range 等等 * 常用的内置模块,比如 os、sys、time、random、math 等等 掌握以上的基础知识就可以顺畅使用 MaixPy 编程了,配合后面的教程和例程,在不懂的时候查询搜索引擎或者官方文档,或者问 ChatGPT 就能顺利完成开发。 ## 对于已经有一门面向对象编程语言经验的开发者 如果你已经会一门面向对象语言比如 C++/Java/C# 等等,那只需要快速浏览一下 Python 的语法,就可以开始使用了。 比如 [菜鸟教程](https://www.runoob.com/python3/python3 tutorial.html) 或者 [Python 官方教程](https://docs.python.org/3/tutorial/index.html)。 或者个人开发者的博客,比如 [哇!是 Python](https://neucrack.com/p/59)。 ## 对于没有面向对象编程经验但是有 C 语言经验的开发者 如果只学了 C,缺乏对面向对象的理解,那么可以先学习一下面向对象的概念,然后再学习 Python,也是比较快的,可以自行搜索视频教程入门。 跟着视频教程入门之后可以看看文档教程,比如 [菜鸟教程](https://www.runoob.com/python3/python3 tutorial.html) 或者 [Python 官方教程](https://docs.python.org/3/tutorial/index.html) 就可以开动了! 在学了入门知识后,就可以按照 MaixPy 的文档和例程开始使用 MaixPy 编程了。 ## 对于编程新手 如果你从未接触过编程,那么你需要重头开始学习 Python,Python 作为入门语言也是比较合适的,具体可以搜一搜视频教程。 在学会了基础语法后,就能按照例程使用 MaixPy 编程了。"},"/maixpy/doc/zh/basic/linux_basic.html":{"title":"Linux 基础知识","content":" title: Linux 基础知识 ## 简介 本章内容对于刚入门的同学来说,可以先跳过此章节,在学会 MaixPy 基础开发后再来学习也是可以的。 最新的 MaixPy 支持的 MaixCAM 硬件支持跑 Linux 系统,所以 MaixPy 底层都是基于 Linux 系统进行开发的。 虽然 Sipeed 开发的 MaixPy 已经为开发者们做了很多工作,即使不知道 Linux 系统知识也能愉快使用,但是以防在某些情况下需要一些底层操作,以及方便未接触过 Linux 的开发者学习,这里写一些 Linux 基础知识。 ## 为什么需要 Linux 系统 具体的原因大家可以自行查阅,这里用通俗的看起来不太专业的话语简单举几个例子方便初学者理解: * 在单片机中,我们的程序是一个死循环程序,用上 Linux 后我们可以同时跑很多程序,每个程序看起来都独立在同时运行,每个程序具体怎么执行的由操作系统实现。 * 基于 Linux 的开发者众多,需要功能和驱动可以很方便地找到,不需要自己再实现一遍。 * 基于 Linux 配套的软件工具丰富,可以很方便地进行开发和调试,比如在本教程没有提到的一些 Linux 通用工具理论上也是可以使用的。 ## 文件系统 什么是文件系统? * 就像电脑的文件系统一样,Linux 上会将硬件磁盘用文件系统进行管理,这样我们可以很方便地向磁盘读写数据。 * 对于学过单片机没有接触过文件系统开发的同学来讲,可以理解为我们有一个 Flash 或者 TF 卡,我们可以通过 API 读写 Flash 存取数据,断电后也能保存数据,但是 Flash 具有读写寿命,我们往往需要写一套程序去保证 Flash 读写寿命,而文件系统就可以理解成这样一套成熟的程序,文件系统帮我们完成了具体如何管理 Flash 空间和读写,我们只需调用文件系统的 API 即可,大大减少了我们的开发工作量并且用成熟的程序保证了稳定性和安全性。 ## 在电脑和设备(开发板)之间传输文件 既然设备有 Linux 和文件系统,那我们怎么发送文件到设备呢? 对于 MaixPy 我们配套了 MaixVision, 在后面的版本也会支持文件管理功能,在此之前可以用下面的方法: 这里我们主要介绍通过网络传输的方式,其它方式可自行探索`传输文件到 Linux`: * 确保设备和电脑连接到了同一个局域网,比如: * MaixCAM 的 USB 口连接到电脑会创建一个虚拟网卡,在电脑端的设备管理器就能看到,设备的 IP 可以在设备的`设置 >设备信息`中看到设备名和 IP。 * 也可以在设备`设置 >WiFi`中连接到和电脑相同的局域网。 * 电脑使用 SCP 或者 SFTP 协议传输文件到设备,具体的软件有很多,具体的软件和使用方法可以自行搜索,比如: * 在 Windows 上可以使用 WinSCP 或者 FileZilla,或者 scp 命令等。 * 在 Linux 上可以使用 FileZilla 或者 scp 命令 等。 * 在 Mac 上可以使用 FileZilla 或者 scp 命令 等。 ## 终端和命令行 终端就是通过`终端`这个软件与 Linux 系统进行通信和操作的工具,类似于 Windows 的`cmd`或者`PowerShell`。 比如我们可以在电脑的 Window 系统中的 powershell 或者 Linux系统中的 终端 工具中输入`ssh root@maixcam xxxx.local` 这里具体的名字在设备的`设置 >设备信息`中可以看到,这样我们就可以通过终端连接到设备了(用户名和密码都是`root`)。 然后我们通过输入命令来操作设备,比如`ls`命令可以列出设备文件系统中当前目录下的文件, `cd` 用来切换当前所在的目录(就像电脑文件管理中点击文件夹切换目录一样), ```shell cd / # 切换到根目录 ls # 显示当前目录(根目录)下的所有文件 ``` 然后会显示类似下面的内容: ```shell bin lib media root tmp boot lib64 mnt run usr dev linuxrc opt sbin var etc lost+found proc sys ``` 更多命令学习请自行搜索`Linux 命令行使用教程`,这里只是为了让初学者知道基本概念,这样有开发者提到时可以知道是什么意思。"},"/maixpy/doc/zh/basic/maixvision.html":{"title":"MaixVision -- MaixPy 编程 + 图形化积木编程","content":" title: MaixVision MaixPy 编程 + 图形化积木编程 ## 简介 MaixVision 是专为 Maix 生态打造的一款开发者编程工具,支持 MaixPy 编程和图形化积木编程,同时支持在线运行和调试,以及实时预览图像,可以同步设备显示屏的图像,方便调试和开发。 以及支持打包应用和安装应用到设备,方便用户一键生成、安装应用。 同时还集成一些方便开发的小工具,比如文件管理,阈值编辑器,二维码生成等等。 ## 使用 MaixPy 编程和在线运行 按照[快速开始](../index.html)的步骤连接设备,我们可以很方便地使用 MaixPy 编程和在线运行。 ## 实时预览图像 MaixPy 提供`display`模块,可以将图像显示到屏幕上,同时,在调用`display`模块的`show`方法时,会将图像发送到 MaixVision 显示,比如代码: ```python from maix import display, camera cam camera.Camera(640, 480) disp display.Display() while 1: disp.show(cam.read()) ``` 这里我们用摄像头读取了图像,然后通过`disp.show()`方法将图像显示到屏幕上,同时也会发送到 MaixVision 显示。 当我们点击了右上角的`暂停`按钮,就会停止发送图像到 MaixVision 显示。 ## 计算图像的直方图 在上一步中我们可以在 MaixVision 中实时看到图像,我们用鼠标框选一个区域,图像下方就能看到这个区域的直方图了,选择不同的颜色表示方法,可以看到不同的颜色通道的直方图。 这个功能方便我们在做某些图像处理算法时找到一些合适的参数。 ## 使用图形化积木编程 开发中,敬请期待。 ## 区分`设备文件系统`和`电脑文件系统` 这里我们有一个比较重要的概念需要掌握:**分清楚`设备文件系统`和`电脑文件系统`**。 * **电脑文件系统**:运行在电脑上,在 MaixVision 中打开文件或者工程都是打开的电脑里面的文件,保存也是自动保存到电脑的文件系统。 * **设备文件系统**:程序运行时会将程序发送到设备上运行,所以代码里面使用的文件都是从设备文件系统读取。 所以常见的问题是有同学在电脑上保存了文件`D:\\data\\a.jpg`,然后在设备上使用这个文件`img image.load(\"D:\\data\\a.jpg\")`,这样当然是找不到文件的,因为设备上没有`D:\\data\\a.jpg`这个文件。 具体如何将电脑的文件发送到设备上,参考下面的章节。 ## 传输文件到设备 开发中,敬请期待。 目前可以用其它工具代替: 先知道设备的 ip 地址或者设备名称,MaixVision 就可以搜索到, 或者在设备`设置 >系统信息`中看到,比如类似 `maixcam xxxx.local` 或者 `192.168.0.123`。 用户名和密码都是 `root`, 使用 `SFTP` 协议传输文件,端口号是 `22`。 然后不同系统下都有很多好用的软件: ### Windows 下 使用 [WinSCP](https://winscp.net/eng/index.php) 或者 [FileZilla](https://filezilla project.org/) 等工具连接设备,将文件传输到设备上,选择 `SFTP` 协议填写设备和账号信息连接即可。 具体不懂的可以自行搜索。 ### Linux 下 终端使用 `scp` 命令传输文件到设备上,比如: ```bash scp /path/to/your/file.py root@maixcam xxxx.local:/root ``` ### Mac 下 * **方法一**:终端使用 `scp` 命令传输文件到设备上,比如: ```bash scp /path/to/your/file.py root@maixcam xxxx.local:/root ``` * **方法二**:使用 [FileZilla](https://filezilla project.org/) 等工具连接设备,将文件传输到设备上,选择 `SFTP` 协议填写设备和账号信息连接即可。"},"/maixpy/doc/zh/basic/maixpy_upgrade.html":{"title":"更新 MaixPy","content":" title: 更新 MaixPy 有两种方法,如果第一次上手使用,为了降低难度,可以直接使用出厂 TF 卡自带的 MaixPy 固件尝试,以后再考虑更新。 不过因为不知道你拿到手的是什么时候出厂的 TF 卡,所以建议都更新一下系统。 ## 直接更新系统 按照 [升级和烧录系统](./os.html) 中的操作升级到最新的系统,里面就包含了最新的 MaixPy 固件。 ## 只更新 MaixPy 固件 在 [MaixPy 仓库 release 页面](https://github.com/sipeed/MaixPy/releases) 看到最新的版本信息和更新日志,其中包含了 MaixPy 固件信息,以及对应版本使用的系统信息。 如果不想更新系统(因为一般系统变动不大,可以看 MaixPy 更新日志中是否有系统改动相关,再决定是否更新系统),则可以只更新 MaixPy 固件。 * 在设置中设置 WiFi, 让系统联网。 * 点击设置应用中的 `更新 MaixPy` 进行更新。 > 如果你会使用终端, 也可以在终端中使用 `pip install MaixPy U` 来更新 MaixPy。"},"/maixpy/doc/zh/pro/compile_os.html":{"title":"","content":""},"/maixpy/doc/zh/modules/thermal_cam.html":{"title":"","content":""},"/maixpy/doc/zh/modules/tof.html":{"title":"","content":""},"/maixpy/doc/zh/video/jpeg_streaming.html":{"title":"MaixPy 视频流 JPEG 推流 / 发送图片到服务器","content":" title: MaixPy 视频流 JPEG 推流 / 发送图片到服务器 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 有时需要将图像发送到服务器,或者将摄像头的视频推送到服务器,这里提供一个最简单的方法,即压缩成 `JPEG` 图片,然后一张一张地发送到服务器。 注意,这是一种最简单的方法,不算很正规的视频推流方法,也不适合高分辨率高帧率的视频流,因为这只是一张一张发送图片,如果要高效推送视频流,请使用后文的 `RTSP` 或者 `RTMP` 模块。 ## 使用方法 ```python from maix import image import requests # create image img image.Image(640, 480, image.Format.FMT_RGB) # draw something img.draw_rect(60, 60, 80, 80, image.Color.from_rgb(255, 0, 0)) # convert to jpeg jpeg img.to_format(image.Format.FMT_JPEG) # image.Format.FMT_PNG # get jpeg bytes jpeg_bytes jpeg.to_bytes() # faster way, borrow memory from jpeg object, # but be carefully, when jpeg object is deleted, jpeg_bytes object MUST NOT be used, or program will crash # jpeg_bytes jpeg.to_bytes(copy False) # send image binary bytes to server url \"http://192.168.0.123:8080/upload\" res requests.post(url, data jpeg_bytes) print(res.status_code) print(res.text) ``` 可以看到,先将图片转换成了 `JPEG` 格式,然后将 `JPEG` 图片的二进制数据通过`TCP`发送到服务器。"},"/maixpy/doc/zh/source_code/faq.html":{"title":"MaixPy Source Code FAQ","content":"MaixPy Source Code FAQ ## subprocess.CalledProcessError: Command '('lsb_release', ' a')' returned non zero exit status 1. Edit `/usr/bin/lsb_release` as root, change the first line from `#!/usr/bin/python3` to `python3`. Then compile again and it should work. ## ImportError: arg(): could not convert default argument 'format: maix::image::Format' in method '.__init__' into a Python object (type not registered yet?) Pybind11 need you to register `image::Format` first, then you can use it in `camera::Camera`, to we must fist define `image::Format` in generated `build/maixpy_wrapper.cpp` source file. To achieve this, edit `components/maix/headers_priority.txt`, the depended on should be placed before the one use it. e.g. ``` maix_image.hpp maix_camera.hpp ```"},"/maixpy/doc/zh/source_code/build.html":{"title":"MaixPy develop source code guide","content":" title: MaixPy develop source code guide ## Get source code ```shell git clone https://github.com/sipeed/MaixPy cd MaixPy ``` ## Build and pack to wheel ```shell python setup.py bdist_wheel maixcam ``` `maixcam` Can be replaced with other board config, see [setup.py]([./configs](https://github.com/sipeed/MaixPy/blob/main/setup.py)) 's `platform_names` variable. After build success, you will find wheel file in `dist` directory, use `pip install U MaixPy****.wheel` on your device to install or upgrade. > `python setup.py bdist_wheel maixcam skip build` will not execute build command and only pack wheel, so you can use `maixcdk menuconfig` and `maixcdk build` first to customize building. ## Build manually ```shell maixcdk build ``` ## Run test after modify source code * First, build source code by ```shell maixcdk build ``` * If build for PC self(platform `linux`): Then execute `./run.sh your_test_file_name.py` to run python script. ```shell cd test ./run.sh examples/hello_maix.py ``` * If cross compile for borad: * The fastest way is copy `maix` dir to device's `/usr/lib/python3.11/site packages/` directory, then run script on device. * Or pack wheel and install on device by `pip install U MaixPy****.wheel`, then run script on device. ## Preview documentation locally Documentation in [docs](https://github.com/sipeed/MaixPy/tree/main/docs) directory, use `Markdown` format, you can use [teedoc](https://github.com/teedoc/teedoc) to generate web version documentation. And the API doc is generated when build MaixPy firmware, **if you don't build MaixPy, the API doc will be empty**. ```shell pip install teedoc U cd docs teedoc install i https://pypi.tuna.tsinghua.edu.cn/simple teedoc serve ``` Then visit `http://127.0.0.1:2333` to preview documentation on web browser. ## For developers who want to contribute See [MaixPy develop source code guide](./contribute.html) If you encounter any problems when use source code, please refer to [FAQ](./faq.html) first."},"/maixpy/doc/zh/source_code/maixcdk.html":{"title":"切换到 MaixCDK 使用 C/C++ 开发应用","content":" title: 切换到 MaixCDK 使用 C/C++ 开发应用 除了使用 MaixPy 开发,还有对应的 C/C++ SDK 可以使用,项目名称为 [MaixCDK](https://github.com/sipeed/MaixCDK)。 ## MaixCDK 介绍 MaixPy 基于 MaixCDK 构建,MaixPy 的大多数 API 都是基于 MaixCDK 的 API 自动生成的,所以 MaixPy 有的功能 MaixCDK 都包含。 如果你更熟悉 C/C++ 编程,或者需要更高的性能,可以使用 MaixCDK 进行开发。 ## MaixCDK 使用 MaixCDK 代码仓库地址:[github.com/sipeed/MaixCDK](https://github.com/sipeed/MaixCDK), 你可以在这里找到 MaixCDK 的代码和文档。"},"/maixpy/doc/zh/vision/classify.html":{"title":"MaixPy 使用 AI 模型进行物体分类","content":" title: MaixPy 使用 AI 模型进行物体分类 ## 物体分类概念 比如眼前有两张图片,一张图里面是苹果,另一张是飞机,物体分类的任务就是把两张图分别依次输入给 AI 模型,模型会依次输出两个结果,一个是苹果,一个是飞机。 ## MaixPy 中使用物体分类 MaixPy 默认提供了 `imagenet` 数据集训练得到的 `1000`分类模型,可以直接使用: ```python from maix import camera, display, image, nn classifier nn.Classifier(model \"/root/models/mobilenetv2.mud\") cam camera.Camera(classifier.input_width(), classifier.input_height(), classifier.input_format()) dis display.Display() while 1: img cam.read() res classifier.classify(img) max_idx, max_prob res[0] msg f\"{max_prob:5.2f}: {classifier.labels[max_idx]}\" img.draw_string(10, 10, msg, image.COLOR_RED) dis.show(img) ``` 效果视频: 这里使用了摄像头拍摄图像,然后传给 `classifier`进行识别,得出结果后,将结果显示在屏幕上。 更多 API 使用参考 [maix.nn](/api/maix/nn.html) 模块的文档。 ## 训练自己的分类模型 请到[MaixHub](https://maixhub.com) 学习并训练分类模型,创建项目时选择`分类模型`即可。"},"/maixpy/doc/zh/vision/image_ops.html":{"title":"MaixPy 图像基础操作","content":" title: MaixPy 图像基础操作 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 视觉应用中图像占据非常重要的位置,不管是图片还是视频,因为视频本质上就是一帧帧的图像,所以图像处理是视觉应用的基础。 ## API 文档 本文介绍常用方法, 更多 API 参考 [maix.image](/api/maix/image.html) 模块的文档。 ## 图像格式 MaixPy 提供基础图像模块`image`,里面最重要的就是`image.Image`类,用于图像的创建以及各种图像基础操作,以及图像加载和保存等。 图像格式有很多,一般我们用`image.Format.FMT_RGB888` 或者 `image.Format.FMT_RGBA8888` 或者 `image.Format.FMT_GRAYSCALE`或者`image.Format.FMT_BGR888`等。 大家知道 `RGB` 三色可以合成任意颜色,所以一般情况下我们使用 `image.Format.FMT_RGB888`就足够, `RGB888` 在内存中是 `RGB packed` 排列,即在内存中的排列: `像素1_红色, 像素1_绿色, 像素1_蓝色, 像素2_红色, 像素2_绿色, 像素2_蓝色, ...` 依次排列。 ## 创建图像 创建图像很简单,只需要指定图像的宽度和高度以及图像格式即可: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) print(img) print(img.width(), img.height(), img.format()) ``` `320` 是图像的宽度,`240` 是图像的高度,`image.Format.FMT_RGB888` 是图像的格式,格式参数可以省略,默认是`image.Format.FMT_RGB888`。 这里通过`img.width()`、`img.height()`、`img.format()`可以获取图像的宽度、高度和格式。 ## 显示到屏幕 MaixPy 提供了`maix.display.Display`类,可以方便的显示图像: ```python from maix import image, display disp display.Display() img image.Image(320, 240, image.Format.FMT_RGB888) disp.show(img) ``` 注意这里因为没有图像数据,所以显示的是黑色的图像,修改画面看后文。 ## 从文件系统读取图像 MaixPy 提供了`maix.image.load`方法,可以从文件系统读取图像: ```python from maix import image img image.load(\"/root/image.jpg\") print(img) ``` 注意这里`/root/image.jpg` 是提前传输到了板子上的,方法可以看前面的教程。 可以支持 `jpg` 和 `png` 格式的图像。 ## 保存图像到文件系统 MaixPy 的`maix.image.Image`提供了`save`方法,可以保存图像到文件系统: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) # do something with img img.save(\"/root/image.jpg\") ``` ## 画框 `image.Image`提供了`draw_rect`方法,可以在图像上画框: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_rect(10, 10, 100, 100, image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x`, `y`, `w`, `h`, `color`,`x` 和 `y` 是框的左上角坐标,`w` 和 `h` 是框的宽度和高度,`color` 是框的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 可以用`thickness`指定框的线宽,默认是`1`, 也可以画实心框,传参 `thickness 1` 即可: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_rect(10, 10, 100, 100, (255, 0, 0), thickness 1) ``` ## 写字符串 `image.Image`提供了`draw_string`方法,可以在图像上写字: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_string(10, 10, \"Hello MaixPy\", image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x`, `y`, `text`, `color`,`x` 和 `y` 是文字的左上角坐标,`text` 是要写的文字,`color` 是文字的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 还可以放大字体,传参 `scale` 即可: ```python img.draw_string(10, 10, \"Hello MaixPy\", image.Color.from_rgb(255, 0, 0), scale 2) ``` 获取字体的宽度和高度: ```python w, h img.string_size(\"Hello MaixPy\", scale 2) print(w, h) ``` **注意**这里`scale`是放大倍数,默认是`1`,和`draw_string`应该保持一致。 ## 画线 `image.Image`提供了`draw_line`方法,可以在图像上画线: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_line(10, 10, 100, 100, image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x1`, `y1`, `x2`, `y2`, `color`,`x1` 和 `y1` 是线的起点坐标,`x2` 和 `y2` 是线的终点坐标,`color` 是线的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 ## 画圆 `image.Image`提供了`draw_circle`方法,可以在图像上画圆: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_circle(100, 100, 50, image.Color.from_rgb(255, 0, 0)) ``` 这里的参数依次是:`x`, `y`, `r`, `color`,`x` 和 `y` 是圆心坐标,`r` 是半径,`color` 是圆的颜色,可以使用`image.Color.from_rgb`方法创建颜色。 ## 缩放图像 `image.Image`提供了`resize`方法,可以缩放图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.resize(160, 120) print(img, img_new) ``` 注意这里`resize`方法返回一个新的图像对象,原图像不变。 ## 剪裁图像 `image.Image`提供了`crop`方法,可以剪裁图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.crop(10, 10, 100, 100) print(img, img_new) ``` 注意这里`crop`方法返回一个新的图像对象,原图像不变。 ## 旋转图像 `image.Image`提供了`rotate`方法,可以旋转图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.rotate(90) print(img, img_new) ``` 注意这里`rotate`方法返回一个新的图像对象,原图像不变。 ## 拷贝图像 `image.Image`提供了`copy`方法,可以拷贝一份独立的图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.copy() print(img, img_new) ``` ## 仿射变换 `image.Image`提供了`affine`方法,可以进行仿射变换,即提供当前图中三个及以上的点坐标,以及目标图中对应的点坐标,可以自动进行图像的旋转、缩放、平移等操作变换到目标图像: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.affine([(10, 10), (100, 10), (10, 100)], [(10, 10), (100, 20), (20, 100)]) print(img, img_new) ``` 更多参数和用法请参考 API 文档。 ## 画关键点 `image.Image`提供了`draw_keypoints`方法,可以在图像上画关键点: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) keypoints [(10, 10), (100, 10), (10, 100)] img.draw_keypoints(keypoints, image.Color.from_rgb(255, 0, 0), size 10, thickness 1, fill False) ``` 在坐标`(10, 10)`、`(100, 10)`、`(10, 100)`画三个红色的关键点,关键点的大小是`10`,线宽是`1`,不填充。 ## 画十字 `image.Image`提供了`draw_cross`方法,可以在图像上画十字: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_cross(100, 100, image.Color.from_rgb(255, 0, 0), size 5, thickness 1) ``` 在坐标`(100, 100)`画一个红色的十字,十字的延长大小是`5`,所以线段长度为`2 * size + thickness`, 线宽是`1`。 ## 画箭头 `image.Image`提供了`draw_arrow`方法,可以在图像上画箭头: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img.draw_arrow(10, 10, 100, 100, image.Color.from_rgb(255, 0, 0), thickness 1) ``` 在坐标`(10, 10)`画一个红色的箭头,箭头的终点是`(100, 100)`,线宽是`1`。 ## 画图 `image.Image`提供了`draw_image`方法,可以在图像上画图: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img2 image.Image(100, 100, image.Format.FMT_RGB888) img2.draw_rect(10, 10, 90, 90, image.Color.from_rgb(255, 0, 0)) img.draw_image(10, 10, img2) ``` ## 转换格式 `image.Image`提供了`to_format`方法,可以转换图像格式: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_new img.to_format(image.Format.FMT_BGR888) print(img, img_new) img_jpg img.to_format(image.Format.FMT_JPEG) print(img, img_new) ``` 注意这里`to_format`方法返回一个新的图像对象,原图像不变。 ## 和 Numpy/OpenCV 格式互相转换 另外还可以转换成`numpy`数组,这样就能给`numpy`和`opencv`等库使用: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) img_np image.image2cv(img) img2 image.cv2image(img_np) print(type(img_np), img_np, img_np.shape) print(type(img2), img2) ``` ## 和 bytes 数据互相转换 `image.Image`提供了`to_bytes`方法,可以转换图像为`bytes`数据: ```python from maix import image img image.Image(320, 240, image.Format.FMT_RGB888) data img.to_bytes() print(type(data), len(data), img.data_size()) img2 image.Image(320, 240, image.Format.FMT_RGB888, data) print(img2) ``` 这里`to_bytes`获得一个新的`bytes`对象,是独立的内存,不会影响原图。 `image.Image`构造函数中传入`data`参数可以直接从`bytes`数据构造图像对象,注意新的图像也是独立的内存,不会影响到`data`。 因为涉及到内存拷贝,所以这个方法比较耗时,不建议频繁使用。 > 如果你想用不拷贝的方式优化程序(不建议轻易使用,写不好代码会导致程序容易崩溃,),请看 API 文档。 ## 更多基础 API 使用方法 更多 API 使用方法请参考 [maix.image](/api/maix/image.html) 模块的文档。"},"/maixpy/doc/zh/vision/maixhub_train.html":{"title":"使用 MaixHub 在线训练 AI 模型给 MaixPy 使用","content":" title: 使用 MaixHub 在线训练 AI 模型给 MaixPy 使用 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 MaixHub 提供了在线训练 AI 模型的功能,可以直接在浏览器中训练模型,不需要购买昂贵的机器,不需要搭建复杂的开发环境,也不需要写代码,非常适合入门,也适合懒得翻代码的老手。 ## 使用 MaixHub 训练模型的基本步骤 ### 确认要识别的数据类型和模型类型 要训练一个 AI 模型,需要先确定是什么数据和模型,目前 MaixHub(2024.4)提供了图像数据的`物体分类模型`和`物体检测模型`,都是图像识别模型, `物体分类模型` 比 `物体检测模型` 更简单,因为物体检测需要标注物体在图中的位置,会比较麻烦,物体分类则只需要给出图像中是什么,不需要坐标,所以更简单, 如果是初学者建议先从物体分类开始。 ### 采集数据 如前面的 AI 基础所说,要训练模型,必须准备训练用的数据集让 AI 学习,对于图像训练,我们需要创建一个数据集,并且上传图片到数据集。 保证设备已经连接网络(WiFi)。 打开设备上的 MaixHub 应用选择 采集数据 来拍照并一键上传到 MaixHub。需要先在 MaixHub 创建数据集,然后点击 设备 上传数据,会出现一个 二维码,设备扫描二维码来与MaixHub 建立连接。 注意要分清训练集和验证集的区别,要想实机运行的效果和训练效果相当,验证集的数据一定要和实机运行拍摄的图像质量一样,训练集也建议用设备拍摄的,如果要用网上的图片,一定只能用在训练集,不要用在验证集,因为数据量小,数据集与实机运行越接近越好。 ### 标注数据 对于分类模型,在上传的时候就顺便已经标注好了,即上传时选择好了图片属于那个分类。 对于目标检测模型,上传完成后需要进行手动标注,即在每一张图中框出要被识别物体的坐标大小和分类。 这个标注过程你也可以选择自己在自己的电脑中离线用比如 labelimg 这样的软件标注完毕后使用数据集中的导入功能导入到 MaixHub。 标注时善用快捷键标注起来会更快,后面MaixHub 也会增加更多辅助标注和自动标注工具(目前在上传视频处有自动标注工具也可以尝试使用)。 ### 训练模型 选择训练参数训练,选择对应的设备平台,选择 maixcam,等待排队训练,可以实时看到训练进度,等待完成即可。 ### 部署模型 训练完成后,可以设备的 MaixHub 应用中选择 部署 功能,扫码进行部署。 设备开会自动下载模型并且运行起来,模型会被存在本地,后面也能选择再次运行。 如果你觉得识别效果很不错,可以一键分享到模型库让更多人使用。 ## 使用方法 请到 [MaixHub](https://maixhub.com) 注册账号,然后登录,主页有视频教程,学习即可。 注意教程如果是使用了 M2dock 这个开发板,和 MaixCAM也是类似的,只是设备(板子)上使用的 MaixHub 应用可能稍微有点区别,大体上是相同的,请注意举一反三。"},"/maixpy/doc/zh/vision/ai.html":{"title":"AI 视觉基本知识","content":" title: AI 视觉基本知识 update: date: 2024 04 03 author: neucrack version: 1.0.0 content: 初版文档 ## 简介 如果没有 AI 基础,在学习 AI 前可以先看[什么是人工智能(AI)和机器学习](https://wiki.sipeed.com/ai/zh/basic/what_is_ai.html) 了解一下 AI 的基本概念。 然后我们使用的视觉 AI 一般都是基于`深度神经网络学习`这个方法,有兴趣可以看看[深度神经网络(DNN)基础知识](https://wiki.sipeed.com/ai/zh/basic/dnn_basic.html) ## MaixPy 中使用视觉 AI 在 MaixPy 中使用视觉 AI 很简单,默认提供了常用的 AI 模型,不需要自己训练模型就可以直接使用,在[MaixHub 模型库](https://maixhub.com/model/zoo) 中选择`maixcam` 就可以找到。 并且在底层已经封装好的 API,只需要简单的调用就可以实现。 如果你想训练自己的模型,也可以先从[MaixHub 在线训练](https://maixhub.com/model/training/project) 开始,在线平台只需要点点点就能训练出模型,不需要购买昂贵的机器,不需要搭建复杂的开发环境,也不需要写代码,非常适合入门,也适合懒得翻代码的老手。 一般训练得到了模型文件,直接传输到设备上,调用 MaixPy 的 API 就可以使用了,具体的调用方法看后文。"},"/maixpy/doc/zh/source_code/add_c_module.html":{"title":"给 MaixPy 添加一个 C/C++ 模块","content":" title: 给 MaixPy 添加一个 C/C++ 模块 ## 简介 有时候需要高效地执行某个函数, Python 的速度无法满足时,就可以使用 C/C++ 或者其它编译型语言来实现。 ## 通用函数封装 如果你想封装的函数实现的功能不依赖 MaixPy 的其它功能,直接使用 Python 使用 C/C++ 添加模块的通用方法,具体方法可以自行百度,比如 ffi, ctype 等 > 欢迎 PR 添加方法 ## 如果你的模块还想依赖 MaixPy 的其它基础 API 你需要先学会编译使用 [MaixCDK](https://github.com/sipeed/MaixCDK), 因为 MaixPy 就是从 MaixCDK 生成的 API, MaixPy 里面有的功能 MaixCDK 里面也有, 然后 。。。TODO"},"/maixpy/doc/zh/source_code/contribute.html":{"title":"参与 MaixPy 文档修改和贡献代码","content":" title: 参与 MaixPy 文档修改和贡献代码 ## 参与 MaixPy 文档修改 * 点击要修改的文档右上角的`编辑本页`按钮,进入 github 源文档页面。 * 保证已经登录了 GitHub 账号。 * 在 github 预案文档页面点击右上角铅笔按钮修改文档内容。 * github 会提示需要 fork 一份到自己的仓库,点击 fork 按钮。 > 这一步就是将 MaixPy 源码仓库复刻一份到你自己的账号下,这样你就可以自由修改了。 * 修改文档内容,然后在页面底部填写修改说明,点击提交修改。 * 然后在你的仓库中找到 Pull requests 按钮,点击创建一个 Pull requests。 * 然后在弹出的页面中填写修改说明,点击提交 Pull requests,其它人和管理员就可以在[Pull requests 页面](https://github.com/sipeed/MaixPy/pulls)看到你的修改了。 * 等待管理员审核通过后,你的修改就会合并到 MaixPy 源码仓库中了。 * 合并成功后,文档会自动更新到 [MaixPy 官方文档](https://wiki.sipeed.com/maixpy)。 > 文档经过 CDN 缓存了的,可能需要等待一段时间才能看到更新,紧急更新可以联系管理员手动刷新。 > 也可以访问 [en.wiki.sipeed.com/maixpy](https://en.wiki.sipeed.com/maixpy) 查看 github pages 服务版本,这个是没有缓存实时更新的。 ## 参与 MaixPy 代码贡献 * 访问 MaixPy 代码仓库地址:[github.com/sipeed/MaixPy](https://github.com/sipeed/MaixPy) * 在修改代码前最好先创建一个 [issue](https://github.com/sipeed/MaixPy/issues) ,描述你要修改的内容让大家知道你的想法和计划,这样大家可以参与修改讨论,以免重复劳动。 * 点击右上角的 fork 按钮,将 MaixPy 代码仓库复刻一份到你自己的账号下。 * 然后在你的账号下 clone 一份代码到本地。 * 修改代码后提交到你的仓库中。 * 然后在你的仓库中找到 Pull requests 按钮,点击创建一个 Pull requests。 * 然后在弹出的页面中填写修改说明,点击提交 Pull requests,其它人和管理员就可以在[Pull requests 页面](https://github.com/sipeed/MaixPy/pulls)看到你的修改了。 * 等待管理员审核通过后,你的修改就会合并到 MaixPy 源码仓库中了。 > 需要注意的是 MaixPy 的代码大多数是从 [MaixCDK](https://github.com/sipeed/MaixCDK) 自动生成的,所以如果你修改 C/C++ 源码,很有可能你需要先修改这个仓库。"},"/maixpy/doc/zh/peripheral/wdt.html":{"title":"","content":""},"/maixpy/doc/zh/peripheral/spi.html":{"title":"","content":""},"/maixpy/doc/zh/vision/qrcode.html":{"title":"MaixPy 二维码识别","content":" title: MaixPy 二维码识别 update: date: 2024 04 03 author: lxowalle version: 1.0.0 content: 初版文档 阅读本文前,确保已经知晓如何开发MaixPy,详情请阅读[MaixVision MaixPy 编程 + 图形化积木编程](../basic/maixvision.html) ## 简介 本文介绍如何使用MaixPy来识别二维码 ## 使用 MaixPy 识别二维码 MaixPy的 `maix.image.Image`中提供了`find_qrcodes`方法,用来识别二维码。 ### 如何识别二维码 一个简单的示例,实现识别二维码并画框 ```python from maix import image, camera, display cam camera.Camera(320, 240) disp display.Display() while 1: img cam.read() qrcodes img.find_qrcodes() for qr in qrcodes: corners qr.corners() for i in range(4): img.draw_line(corners[i][0], corners[i][1], corners[(i + 1) % 4][0], corners[(i + 1) % 4][1], image.COLOR_RED) img.draw_string(qr.x(), qr.y() 15, qr.payload(), image.COLOR_RED) disp.show(img) ``` 步骤: 1. 导入image、camera、display模块 ```python from maix import image, camera, display ``` 2. 初始化摄像头和显示 ```python cam camera.Camera(320, 240) # 初始化摄像头,输出分辨率320x240 RGB格式 disp display.Display() ``` 3. 从摄像头获取图片并显示 ```python while 1: img cam.read() disp.show(img) ``` 4. 调用`find_qrcodes`方法识别摄像头中的二维码 ```python qrcodes img.find_qrcodes() ``` `img`是通过`cam.read()`读取到的摄像头图像,当初始化的方式为`cam camera.Camera(320, 240)`时,`img`对象是一张分辨率为320x240的RGB图。 `img.find_qrcodes`用来寻找二维码,并将查询结果保存到`qrocdes`,以供后续处理 5. 处理识别二维码的结果并显示到屏幕上 ```python for qr in qrcodes: corners qr.corners() for i in range(4): img.draw_line(corners[i][0], corners[i][1], corners[(i + 1) % 4][0], corners[(i + 1) % 4][1], image.COLOR_RED) img.draw_string(qr.x(), qr.y() 15, qr.payload(), image.COLOR_RED) ``` `qrcodes`是通过`img.find_qrcodes()`查询二维码的结果,如果找不到二维码则`qrcodes`内部为空 `qr.corners()`用来获取已扫描到的二维码的四个顶点坐标,`img.draw_line()`利用这四个顶点坐标画出二维码的形状 `img.draw_string`用来显示二维码的内容和位置等信息,其中`qr.x()`和`qr.y()`用来获取二维码左上角坐标x和坐标y,`qr.payload()`用来获取二维码的内容 ### 常用参数说明 列举常用参数说明,如果没有找到可以实现应用的参数,则需要考虑是否使用其他算法实现,或者基于目前算法的结果扩展所需的功能 参数 说明 示例 roi 设置算法计算的矩形区域,roi [x, y, w, h],x,y表示矩形区域左上角坐标,w,h表示矩形区域的宽度和高度,默认为整张图片 计算坐标为(50,50),宽和高为100的区域
    ```img.find_qrcodes(roi [50, 50, 100, 100])``` 本文介绍常用方法,更多 API 请看 API 文档的 [image](../../../api/maix/image.html) 部分。"},"/maixpy/doc/zh/vision/yolov5.html":{"title":"MaixPy 使用 YOLOv5 模型进行目标检测","content":" title: MaixPy 使用 YOLOv5 模型进行目标检测 ## 目标检测概念 目标检测是指在图像或视频中检测出目标的位置和类别,比如在一张图中检测出苹果、飞机等物体,并且标出物体的位置。 和分类不同的是多了一个位置信息,所以目标检测的结果一般是一个矩形框,框出物体的位置。 ## MaixPy 中使用目标检测 MaixPy 默认提供了 `YOLOv5` 模型,可以直接使用: ```python from maix import camera, display, image, nn, app detector nn.YOLOv5(model \"/root/models/yolov5s.mud\") cam camera.Camera(detector.input_width(), detector.input_height(), detector.input_format()) dis display.Display() while not app.need_exit(): img cam.read() objs detector.detect(img, conf_th 0.5, iou_th 0.45) for obj in objs: img.draw_rect(obj.x, obj.y, obj.w, obj.h, color image.COLOR_RED) msg f'{detector.labels[obj.class_id]}: {obj.score:.2f}' img.draw_string(obj.x, obj.y, msg, color image.COLOR_RED) dis.show(img) ``` 效果视频:

    NwT}j% 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�UXHk3>C#( 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 E4->9B*#H0l diff --git a/maixpy/static/image/maixcam_back.png b/maixpy/static/image/maixcam_back.png new file mode 100644 index 0000000000000000000000000000000000000000..44c5ed0d10971b4b1e337224d71cf1730f1ddd64 GIT binary patch literal 264001 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 Y2G<8d1H4sL>=hzynJAT)reCuws5EE^l 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%0D+6A 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 V@Sp7&L!sDH|ww}W@O6BO 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