diff --git a/docs/hardware/en/maixcam/maixcam_pro.md b/docs/hardware/en/maixcam/maixcam_pro.md index 1588b197..54ab41ca 100644 --- a/docs/hardware/en/maixcam/maixcam_pro.md +++ b/docs/hardware/en/maixcam/maixcam_pro.md @@ -1,117 +1,117 @@ ---- -title: MaixCAM-Pro -- Rapid Deployment of AI Vision and Auditory Applications ---- - -
- -![maixcam-pro](/static/image/maixcam_pro.png) - -
- -
- Taobao - AliExpress -
- - -## Introduction to MaixCAM-Pro - -MaixCAM is a hardware product designed for the rapid implementation of AI vision, auditory, and AIoT applications. It serves as a platform for quickly verifying product prototypes and rapid mass production. MaixCAM-Pro provides a powerful yet cost-effective processor, along with accessories such as a camera, display, WiFi, and a comprehensive, easy-to-use software ecosystem. - -
- For more usage, visit MaixPy -
- -**Application Scenarios and Target Audience**: -* **AI Algorithm Implementation**: AI algorithm engineers can quickly deploy their AI models onto hardware (MaixCAM) with easy-to-use model conversion tools and SDK. -* **STEM Education**: Offers an easy-to-use MaixPy SDK and development tools, as well as an online model training platform, allowing teachers to focus on teaching without the need for software or hardware development, enabling students to get started quickly. -* **University Research and Education**: Provides rich documentation and tutorials suitable for students at all levels, with RISC-V and AI frontier technologies being helpful for research purposes. -* **A Powerful Tool for Maker and Engineer Prototyping**: Thoughtfully designed hardware, rich peripherals, and extremely easy-to-use software help quickly bring your creative ideas and products to life without getting bogged down in basic software and hardware development. -* **Enterprise Product Upgrades and Deployment**: Quickly deploy products without expensive R&D costs, or use them as an auxiliary tool, for example, in production line QA, or for adding AI vision capabilities to legacy equipment. -* **Competition Assistant**: MaixCAM + MaixPy + MaixCDK can quickly implement various innovations and functions, making it suitable as a designated platform for competitions. Maix products and MaixPy have already been used in various competitions and have won awards. - - -## Overview of MaixCAM-Pro Hardware - -> Compared with [MaixCAM](./README.md), MaixCAM-Pro has redesigned PCB and casing, and upgraded some peripherals. Differences with MaixCAM are in **bold**. - -| Component | Description | -| --- | --- | -| CPU Main Core | 1GHz RISC-V C906 processor (plus an optional 1GHz ARM A53 core), running Linux | -| CPU Small Core | 700MHz RISC-V C906, running RTOS | -| CPU Low Power Core | 25~300MHz 8051 processor for low-power applications | -| NPU | 1TOPS@INT8, supports BF16 models, supports operators for common models such as Mobilenetv2, YOLOv5, YOLOv8 | -| Memory | 256MB DDR3 | -| Storage | TF card boot / SD NAND boot | -| Camera | Supports up to 5MP camera, officially supports 4MP GC4653 and OS04A10 cameras (4-lane MIPI CSI input, 22-pin interface, dual CSI split supported) | -| Display | **2.4-inch high-definition IPS capacitive touch screen, resolution 640x480** (2-lane MIPI DSI output, standard 31-pin interface, 6-pin capacitive touch) | -| Audio Output | Built-in PA amplifier + **1W speaker** | -| Audio Input | Built-in analog silicon microphone for direct voice recording | -| Network | Onboard WiFi6 + BLE5.4 module, customizable Ethernet version | -| USB | Type-C USB2.0, support device and host mode, support USB camera | -| IO Interface | **2.54mm PMOD interface, 12 IO + Vsys/3.3v/GND interface + 1.25mm 6-pin extension interface** | -| Buttons | 1 x RST button + 1 x USER (function) button + **1 x power button** | -| LED | Power indicator + User LED + **illumination LED** | -| Codec | H.264 / H.265 / MJPEG hardware decoding, supports 2k@30fps encoding and decoding | -| Peripherals | I2C/SPI/UART/ADC/PWM/WDT, etc. | -| Power | **Independent power management chip AXP2101, supports lithium battery charging and discharging, available with lithium battery version** | -| Case | **3D-printed acrylic case, standard 1/4 inch threaded hole** | -| IMU | **Onboard six-axis IMU sensor (3-axis accelerometer + 3-axis gyroscope)** | -| RTC | **Onboard BM8653 RTC chip + button cell, keeps time even when powered off** | -| Dimensions | **No-battery version: 67x51x12mm, battery version thickness: 16mm** | - - -## MaixCAM Software Ecosystem - -We don't just provide hardware; MaixCAM comes with a complete software ecosystem, including: - -| Name | Description | Image/Video | -| --- | --- | --- | -| **[MaixPy](https://wiki.sipeed.com/maixpy/)** | Python development package with rich and easy-to-use APIs optimized for MaixCAM, supporting hardware acceleration, with extensive documentation and tutorials | Visit [MaixPy homepage](https://wiki.sipeed.com/maixpy/) | -| [MaixVision](https://wiki.sipeed.com/maixvision) | AI vision IDE for programming, code execution, real-time image preview, even graphical programming, lowering development and usage thresholds | ![MaixVision](../../assets/maixcam/maixvision.jpg) | -| [MaixHub](https://maixhub.com) | Online AI model training platform that allows training and deployment of models with a single click, without needing AI knowledge or expensive training equipment | ![MaixVision](../../assets/maixcam/maixhub.jpg) | -| [MaixCDK](https://github.com/sipeed/MaixCDK) | C++ version of MaixPy for developers familiar with C/C++ to get started immediately | Visit [MaixCDK homepage](https://github.com/sipeed/MaixCDK) | -| [App Store](https://maixhub.com/app) | Provides various applications and tools for direct download and use, allowing developers to share their apps | Visit [MaixHub App Store](https://maixhub.com/app) | -| [Community Plaza](https://maixhub.com/share) | Developers share their projects and experiences | Visit [MaixHub Community Plaza](https://maixhub.com/share) | - - -## Resource Summary - -### MaixCAM Exclusive Resources (Provided by Sipeed) - -* [MaixCAM-Pro Official Documentation](https://wiki.sipeed.com/maixcam-pro) (This documentation) -* [MaixPy Official Documentation](https://wiki.sipeed.com/maixpy/) (Python SDK) ([MaixPy Source Code](https://github.com/sipeed/MaixPy)) -* [MaixCDK](https://github.com/sipeed/MaixCDK) (C/C++ SDK) ([MaixCDK Source Code](https://github.com/sipeed/MaixCDK)) -* [System Source Code](https://github.com/sipeed/LicheeRV-Nano-Build) -* [Hardware-related Materials](https://dl.sipeed.com/shareURL/MaixCAM/MaixCAM_Pro) -* Case and Stand: See [Case Documentation](./assemble.md). The casing and bracket 3D model files are also open source. Please visit [makerworld.com](https://makerworld.com/) (recommended) or [makerworld.com.cn](https://makerworld.com.cn) and search for `MaixCAM`. -* Interface Diagram: -![maixcam_pro_io](../../assets/maixcam/maixcam_pro_io.png) - - -### Chip Resources - -MaixCAM-Pro is based on the Sophgo SG2002 chip, so the related documents can also be referenced, along with the documents of Sipeed's LicheeRV-Nano core board. ->! Note: MaixCAM-Pro can use the documents of LicheeRV-Nano and SG2002. **LicheeRV-Nano and other SG2002-based products cannot use MaixPy, MaixCDK, or MaixVision software**, so please make sure you purchase the correct product to avoid wasting time and money. -> If you want to get started developing applications quickly, choose MaixCAM. If you are an experienced Linux developer interested in developing based on original SG2002 resources, you may consider choosing LicheeRV-Nano. - -* [Datasheet](https://github.com/sophgo/sophgo-doc/releases) (Register-level data) -* [LicheeRV-Nano Development Board Documentation](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/1_intro.html) -* [Toolchain Download](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz) -* [Sophgo SDK Development Documentation Summary](https://developer.sophgo.com/thread/471.html) -* [Sophgo HDK Development Documentation Summary](https://developer.sophgo.com/thread/472.html) -* [Sophgo TPU Development Documentation Summary](https://developer.sophgo.com/thread/473.html) -* [Sophgo TDL Development Documentation Summary](https://developer.sophgo.com/thread/556.html) (High-level API encapsulation based on TPU) - -### Community Resources - -* [MaixHub App Store](https://maixhub.com/app) -* [MaixHub Community Plaza](https://maixhub.com/share) -* [makerworld.com](https://makerworld.com/) (recommended) or [makerworld.com.cn](https://makerworld.com.cn), search for `MaixCAM` -* [Bilibili](https://bilibili.com) - Search for `MaixCAM` or `MaixPy` - -## Purchase - -* [Sipeed Taobao](https://sipeed.taobao.com/) -* [AliExpress](https://www.aliexpress.com/store/911876460) - +--- +title: MaixCAM-Pro -- Rapid Deployment of AI Vision and Auditory Applications +--- + +
+ +![maixcam-pro](/static/image/maixcam_pro.png) + +
+ +
+ Taobao + AliExpress +
+ + +## Introduction to MaixCAM-Pro + +MaixCAM is a hardware product designed for the rapid implementation of AI vision, auditory, and AIoT applications. It serves as a platform for quickly verifying product prototypes and rapid mass production. MaixCAM-Pro provides a powerful yet cost-effective processor, along with accessories such as a camera, display, WiFi, and a comprehensive, easy-to-use software ecosystem. + +
+ For more usage, visit MaixPy +
+ +**Application Scenarios and Target Audience**: +* **AI Algorithm Implementation**: AI algorithm engineers can quickly deploy their AI models onto hardware (MaixCAM) with easy-to-use model conversion tools and SDK. +* **STEM Education**: Offers an easy-to-use MaixPy SDK and development tools, as well as an online model training platform, allowing teachers to focus on teaching without the need for software or hardware development, enabling students to get started quickly. +* **University Research and Education**: Provides rich documentation and tutorials suitable for students at all levels, with RISC-V and AI frontier technologies being helpful for research purposes. +* **A Powerful Tool for Maker and Engineer Prototyping**: Thoughtfully designed hardware, rich peripherals, and extremely easy-to-use software help quickly bring your creative ideas and products to life without getting bogged down in basic software and hardware development. +* **Enterprise Product Upgrades and Deployment**: Quickly deploy products without expensive R&D costs, or use them as an auxiliary tool, for example, in production line QA, or for adding AI vision capabilities to legacy equipment. +* **Competition Assistant**: MaixCAM + MaixPy + MaixCDK can quickly implement various innovations and functions, making it suitable as a designated platform for competitions. Maix products and MaixPy have already been used in various competitions and have won awards. + + +## Overview of MaixCAM-Pro Hardware + +> Compared with [MaixCAM](./README.md), MaixCAM-Pro has redesigned PCB and casing, and upgraded some peripherals. Differences with MaixCAM are in **bold**. + +| Component | Description | +| --- | --- | +| CPU Main Core | 1GHz RISC-V C906 processor (plus an optional 1GHz ARM A53 core), running Linux | +| CPU Small Core | 700MHz RISC-V C906, running RTOS | +| CPU Low Power Core | 25~300MHz 8051 processor for low-power applications | +| NPU | 1TOPS@INT8, supports BF16 models, supports operators for common models such as Mobilenetv2, YOLOv5, YOLOv8 | +| Memory | 256MB DDR3 | +| Storage | TF card boot / SD NAND boot | +| Camera | Supports up to 5MP camera, officially supports 4MP GC4653 and OS04A10 cameras (4-lane MIPI CSI input, 22-pin interface, dual CSI split supported) | +| Display | **2.4-inch high-definition IPS capacitive touch screen, resolution 640x480** (2-lane MIPI DSI output, standard 31-pin interface, 6-pin capacitive touch) | +| Audio Output | Built-in PA amplifier + **1W speaker** | +| Audio Input | Built-in analog silicon microphone for direct voice recording | +| Network | Onboard WiFi6 + BLE5.4 module, customizable Ethernet version | +| USB | Type-C USB2.0, support device and host mode, support USB camera | +| IO Interface | **2.54mm PMOD interface, 12 IO + Vsys/3.3v/GND interface + 1.25mm 6-pin extension interface** | +| Buttons | 1 x RST button + 1 x USER (function) button + **1 x power button** | +| LED | Power indicator + User LED + **illumination LED** | +| Codec | H.264 / H.265 / MJPEG hardware decoding, supports 2k@30fps encoding and decoding | +| Peripherals | I2C/SPI/UART/ADC/PWM/WDT, etc. | +| Power | **Independent power management chip AXP2101, supports lithium battery charging and discharging, available with lithium battery version** | +| Case | **3D-printed acrylic case, standard 1/4 inch threaded hole** | +| IMU | **Onboard six-axis IMU sensor (3-axis accelerometer + 3-axis gyroscope)** | +| RTC | **Onboard BM8653 RTC chip + button cell, keeps time even when powered off** | +| Dimensions | **No-battery version: 67x51x12mm, battery version thickness: 16mm** | + + +## MaixCAM Software Ecosystem + +We don't just provide hardware; MaixCAM comes with a complete software ecosystem, including: + +| Name | Description | Image/Video | +| --- | --- | --- | +| **[MaixPy](https://wiki.sipeed.com/maixpy/)** | Python development package with rich and easy-to-use APIs optimized for MaixCAM, supporting hardware acceleration, with extensive documentation and tutorials | Visit [MaixPy homepage](https://wiki.sipeed.com/maixpy/) | +| [MaixVision](https://wiki.sipeed.com/maixvision) | AI vision IDE for programming, code execution, real-time image preview, even graphical programming, lowering development and usage thresholds | ![MaixVision](../../assets/maixcam/maixvision.jpg) | +| [MaixHub](https://maixhub.com) | Online AI model training platform that allows training and deployment of models with a single click, without needing AI knowledge or expensive training equipment | ![MaixVision](../../assets/maixcam/maixhub.jpg) | +| [MaixCDK](https://github.com/sipeed/MaixCDK) | C++ version of MaixPy for developers familiar with C/C++ to get started immediately | Visit [MaixCDK homepage](https://github.com/sipeed/MaixCDK) | +| [App Store](https://maixhub.com/app) | Provides various applications and tools for direct download and use, allowing developers to share their apps | Visit [MaixHub App Store](https://maixhub.com/app) | +| [Community Plaza](https://maixhub.com/share) | Developers share their projects and experiences | Visit [MaixHub Community Plaza](https://maixhub.com/share) | + + +## Resource Summary + +### MaixCAM Exclusive Resources (Provided by Sipeed) + +* [MaixCAM-Pro Official Documentation](https://wiki.sipeed.com/maixcam-pro) (This documentation) +* [MaixPy Official Documentation](https://wiki.sipeed.com/maixpy/) (Python SDK) ([MaixPy Source Code](https://github.com/sipeed/MaixPy)) +* [MaixCDK](https://github.com/sipeed/MaixCDK) (C/C++ SDK) ([MaixCDK Source Code](https://github.com/sipeed/MaixCDK)) +* [System Source Code](https://github.com/sipeed/LicheeRV-Nano-Build) +* [Hardware-related Materials](https://dl.sipeed.com/shareURL/MaixCAM/MaixCAM_Pro) +* Case and Stand: See [Case Documentation](./assemble.md). The casing and bracket 3D model files are also open source. Please visit [makerworld.com](https://makerworld.com/) (recommended) or [makerworld.com.cn](https://makerworld.com.cn) and search for `MaixCAM`. +* Interface Diagram: +![maixcam_pro_io](../../assets/maixcam/maixcam_pro_io.png) + + +### Chip Resources + +MaixCAM-Pro is based on the Sophgo SG2002 chip, so the related documents can also be referenced, along with the documents of Sipeed's LicheeRV-Nano core board. +>! Note: MaixCAM-Pro can use the documents of LicheeRV-Nano and SG2002. **LicheeRV-Nano and other SG2002-based products cannot use MaixPy, MaixCDK, or MaixVision software**, so please make sure you purchase the correct product to avoid wasting time and money. +> If you want to get started developing applications quickly, choose MaixCAM. If you are an experienced Linux developer interested in developing based on original SG2002 resources, you may consider choosing LicheeRV-Nano. + +* [Datasheet](https://github.com/sophgo/sophgo-doc/releases) (Register-level data) +* [LicheeRV-Nano Development Board Documentation](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/1_intro.html) +* [Toolchain Download](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz) +* [Sophgo SDK Development Documentation Summary](https://developer.sophgo.com/thread/471.html) +* [Sophgo HDK Development Documentation Summary](https://developer.sophgo.com/thread/472.html) +* [Sophgo TPU Development Documentation Summary](https://developer.sophgo.com/thread/473.html) +* [Sophgo TDL Development Documentation Summary](https://developer.sophgo.com/thread/556.html) (High-level API encapsulation based on TPU) + +### Community Resources + +* [MaixHub App Store](https://maixhub.com/app) +* [MaixHub Community Plaza](https://maixhub.com/share) +* [makerworld.com](https://makerworld.com/) (recommended) or [makerworld.com.cn](https://makerworld.com.cn), search for `MaixCAM` +* [Bilibili](https://bilibili.com) - Search for `MaixCAM` or `MaixPy` + +## Purchase + +* [Sipeed Taobao](https://sipeed.taobao.com/) +* [AliExpress](https://www.aliexpress.com/store/911876460) + diff --git a/docs/hardware/en/maixcam/microscope.md b/docs/hardware/en/maixcam/microscope.md index b98b3734..a8b06ca2 100644 --- a/docs/hardware/en/maixcam/microscope.md +++ b/docs/hardware/en/maixcam/microscope.md @@ -1,117 +1,117 @@ ---- -title: Microscope Kit ---- - -
- -![maixcam-pro microscope](../../assets/maixcam/maixcam_microscope.png) - -
- - -
- Taobao - Aliexpress -
- -## Microscope Kit - -The MaixCAM Microscope Kit transforms your MaixCAM / MaixCAM Pro into a portable digital microscope. It surpasses similarly priced digital microscopes in performance while offering open-source capabilities, allowing you to customize unique functions for your digital microscope. -The MaixCAM Microscope Kit is ideal for soldering small components, observing biological specimens, focus stacking photography, and more. Explore various applications with this versatile kit! - -### Single Lens Kit - -Includes only the 10mm tapered lens, 10mm spacer ring, and anti-glare flocking stickers. It is suitable for handheld use or if you already have a universal microscope stand. -![Single Lens Kit](../../assets/maixcam/micro_lens.jpg) - -**Usage:** Unscrew the original MaixCAM lens and replace it with the tapered lens. -For higher magnification, attach the 10mm spacer ring first, followed by the tapered lens. -![Lens Installation Method](../../assets/maixcam/micro_lens_install.jpg) - -- The closer the lens is screwed inward, the lower the magnification, and the lens-to-object distance increases (up to ~10 cm). -- The farther the lens is screwed outward, the higher the magnification, and the lens-to-object distance decreases (down to ~1 cm). - -| Installation Method | Optical Magnification | Field of View | Suitable Objects | -|-----------------------------------|-----------------------|---------------|---------------------------| -| 10mm tapered lens (fully inward) | 0.25X | 20.5x11.5mm | PCBs, FPC soldering | -| 10mm tapered lens (fully outward) | 0.6X | 8.5x4.8mm | IC markings, fine soldering| -| Tapered lens + 10mm spacer (inward)| 1.0X | 5.1x2.9mm | IC chips, larger specimens| -| Tapered lens + 10mm spacer (outward)| 2.0X | 2.56x1.44mm | IC chip details, cells | - -1. The magnifications above are optical, not exaggerated marketing values like hundreds or thousands of times. -2. Field of view examples are based on GC4653. For OS04A10, scale proportionally by 3/1.8 = 1.67x. - -After installation, you can observe and capture images using the built-in camera app on MaixCAM. -For low-light conditions, turn on the flashlight via the app. -If glare occurs, trim the anti-glare flocking and attach it to the inner side of the tapered lens. -![Anti-Glare Flocking Suppression](../../assets/maixcam/xiaoguang.jpg) - -### Manual Stand Kit - -Includes: -1. **Lens:** 10mm tapered lens, 10mm spacer ring -2. **Stand:** Precision aluminum alloy stand components -3. **Biological Specimen:** Onion epidermis specimen, white stage -4. **Extras:** Anti-glare flocking -![Manual Stand Kit](../../assets/maixcam/focusing_stand_suit.jpg) - -Refer to the lens installation method above. -The assembled stand and MaixCAM setup appear as follows. For larger targets like PCBs, the spacer ring is typically unnecessary: -![Stand Installation](../../assets/maixcam/stand_install.jpg) - -The package comes with a mounting bracket to help secure the MaixCAM Pro, which can be installed as follows -![Bracket package](../../assets/maixcam/install_bracket.png) - -A mini heating table can be added for soldering tasks: -![Soldering with Stand](../../assets/maixcam/stand_solder.jpg) - -For small biological specimens, use the spacer ring, enable the flashlight, and optionally activate focus magnification in the camera app. -Place the provided onion epidermis specimen on the white stage and observe with lighting and magnification enabled: -![Onion Epidermis Setup](../../assets/maixcam/stand_onion.jpg) - -Example results: -![Onion Epidermis](../../assets/maixcam/onion.jpg) -![Pine Stem Cross-Section](../../assets/maixcam/pine.jpg) - -### Motorized Stand Kit - -A future release featuring a motorized sliding platform for automatic focusing and stacked photography. - - -## Performance Comparison - -### Specification Table - -| | **MaixCAM Microscope Kit** | **Darwin M2 Microscope** | -|---------------|-----------------------------|-------------------------------| -| Sensor Resolution | 2560x1440 | 1600x1200 | -| Display | 2.4-inch 640x480 | 4-inch 800x480 | -| Interaction | Full-screen touch | Physical + touch buttons | -| Aperture | F1:2.5 (brighter) | F1:4.5 | -| Photo Capture | ✓ Adjustable parameters | ✓ Fixed parameters | -| Video Recording | MP4 (smaller size) | AVI (larger size) | -| Timelapse | ✓ | X | -| Optical Magnification | No spacer: 0.25~0.6
With spacer: 1.0~2.0 | 0.42~0.92 | -| Single Pixel Size (Max Magnification) | 1µm | 2.7µm | -| Stand | Sturdy aluminum alloy | Basic plastic stand | - -### Picture Comparison - -Each image below shows the maximum magnification for both microscopes: -- **Top Image:** Darwin M2 Microscope -- **Bottom Image:** MaixCAM Microscope - -![c1](../../assets/maixcam/c1.jpg) -![c2](../../assets/maixcam/c2.jpg) -![c3](../../assets/maixcam/c3.jpg) -![c4](../../assets/maixcam/c4.jpg) -![c5](../../assets/maixcam/c5.jpg) -![c6](../../assets/maixcam/c6.jpg) - - - -
- Taobao - Aliexpress -
- +--- +title: Microscope Kit +--- + +
+ +![maixcam-pro microscope](../../assets/maixcam/maixcam_microscope.png) + +
+ + +
+ Taobao + Aliexpress +
+ +## Microscope Kit + +The MaixCAM Microscope Kit transforms your MaixCAM / MaixCAM Pro into a portable digital microscope. It surpasses similarly priced digital microscopes in performance while offering open-source capabilities, allowing you to customize unique functions for your digital microscope. +The MaixCAM Microscope Kit is ideal for soldering small components, observing biological specimens, focus stacking photography, and more. Explore various applications with this versatile kit! + +### Single Lens Kit + +Includes only the 10mm tapered lens, 10mm spacer ring, and anti-glare flocking stickers. It is suitable for handheld use or if you already have a universal microscope stand. +![Single Lens Kit](../../assets/maixcam/micro_lens.jpg) + +**Usage:** Unscrew the original MaixCAM lens and replace it with the tapered lens. +For higher magnification, attach the 10mm spacer ring first, followed by the tapered lens. +![Lens Installation Method](../../assets/maixcam/micro_lens_install.jpg) + +- The closer the lens is screwed inward, the lower the magnification, and the lens-to-object distance increases (up to ~10 cm). +- The farther the lens is screwed outward, the higher the magnification, and the lens-to-object distance decreases (down to ~1 cm). + +| Installation Method | Optical Magnification | Field of View | Suitable Objects | +|-----------------------------------|-----------------------|---------------|---------------------------| +| 10mm tapered lens (fully inward) | 0.25X | 20.5x11.5mm | PCBs, FPC soldering | +| 10mm tapered lens (fully outward) | 0.6X | 8.5x4.8mm | IC markings, fine soldering| +| Tapered lens + 10mm spacer (inward)| 1.0X | 5.1x2.9mm | IC chips, larger specimens| +| Tapered lens + 10mm spacer (outward)| 2.0X | 2.56x1.44mm | IC chip details, cells | + +1. The magnifications above are optical, not exaggerated marketing values like hundreds or thousands of times. +2. Field of view examples are based on GC4653. For OS04A10, scale proportionally by 3/1.8 = 1.67x. + +After installation, you can observe and capture images using the built-in camera app on MaixCAM. +For low-light conditions, turn on the flashlight via the app. +If glare occurs, trim the anti-glare flocking and attach it to the inner side of the tapered lens. +![Anti-Glare Flocking Suppression](../../assets/maixcam/xiaoguang.jpg) + +### Manual Stand Kit + +Includes: +1. **Lens:** 10mm tapered lens, 10mm spacer ring +2. **Stand:** Precision aluminum alloy stand components +3. **Biological Specimen:** Onion epidermis specimen, white stage +4. **Extras:** Anti-glare flocking +![Manual Stand Kit](../../assets/maixcam/focusing_stand_suit.jpg) + +Refer to the lens installation method above. +The assembled stand and MaixCAM setup appear as follows. For larger targets like PCBs, the spacer ring is typically unnecessary: +![Stand Installation](../../assets/maixcam/stand_install.jpg) + +The package comes with a mounting bracket to help secure the MaixCAM Pro, which can be installed as follows +![Bracket package](../../assets/maixcam/install_bracket.png) + +A mini heating table can be added for soldering tasks: +![Soldering with Stand](../../assets/maixcam/stand_solder.jpg) + +For small biological specimens, use the spacer ring, enable the flashlight, and optionally activate focus magnification in the camera app. +Place the provided onion epidermis specimen on the white stage and observe with lighting and magnification enabled: +![Onion Epidermis Setup](../../assets/maixcam/stand_onion.jpg) + +Example results: +![Onion Epidermis](../../assets/maixcam/onion.jpg) +![Pine Stem Cross-Section](../../assets/maixcam/pine.jpg) + +### Motorized Stand Kit + +A future release featuring a motorized sliding platform for automatic focusing and stacked photography. + + +## Performance Comparison + +### Specification Table + +| | **MaixCAM Microscope Kit** | **Darwin M2 Microscope** | +|---------------|-----------------------------|-------------------------------| +| Sensor Resolution | 2560x1440 | 1600x1200 | +| Display | 2.4-inch 640x480 | 4-inch 800x480 | +| Interaction | Full-screen touch | Physical + touch buttons | +| Aperture | F1:2.5 (brighter) | F1:4.5 | +| Photo Capture | ✓ Adjustable parameters | ✓ Fixed parameters | +| Video Recording | MP4 (smaller size) | AVI (larger size) | +| Timelapse | ✓ | X | +| Optical Magnification | No spacer: 0.25~0.6
With spacer: 1.0~2.0 | 0.42~0.92 | +| Single Pixel Size (Max Magnification) | 1µm | 2.7µm | +| Stand | Sturdy aluminum alloy | Basic plastic stand | + +### Picture Comparison + +Each image below shows the maximum magnification for both microscopes: +- **Top Image:** Darwin M2 Microscope +- **Bottom Image:** MaixCAM Microscope + +![c1](../../assets/maixcam/c1.jpg) +![c2](../../assets/maixcam/c2.jpg) +![c3](../../assets/maixcam/c3.jpg) +![c4](../../assets/maixcam/c4.jpg) +![c5](../../assets/maixcam/c5.jpg) +![c6](../../assets/maixcam/c6.jpg) + + + +
+ Taobao + Aliexpress +
+ diff --git a/docs/hardware/en/sidebar.yaml b/docs/hardware/en/sidebar.yaml index 360a22ed..80f04833 100644 --- a/docs/hardware/en/sidebar.yaml +++ b/docs/hardware/en/sidebar.yaml @@ -1,600 +1,600 @@ -items: -- label: Maix Zero - items: - - label: Maix M0 - items: - - label: M0sense Board - file: ./maixzero/sense/maix_zero_sense.md - - label: M0sense Guide - file: ./maixzero/sense/start.md - - label: Maix M0P - items: - - label: M0P - - label: M0P Dock - - label: Maix M0s - file: ./maixzero/m0s/m0s.md -- label: Maix-I & Zero - items: - - label: Maix M1 - items: - - label: M1 Module - collapsed: false - items: - - label: M1/M1w - file: maix/core_module.md - - label: M1n - file: maix/M1n.md - - label: M1 Board - items: - - label: Maix Dock(M1/M1W) - file: maix/maixpy_develop_kit_board/Maix_dock.md - - label: Maix Bit - file: maix/maixpy_develop_kit_board/maix_bit.md - - label: Maix Duino - file: maix/maixpy_develop_kit_board/maix_duino.md - - label: Maix Nano - file: maix/maixpy_develop_kit_board/maix_nano.md - - label: Maix Cube - file: maix/maixpy_develop_kit_board/maix_cube.md - - label: Maix Amigo - file: maix/maixpy_develop_kit_board/maix_Amigo.md - - label: Maix HAT - file: maix/maixpy_develop_kit_board/maix_hat.md - - label: Maix Go (Sold out) - file: maix/maixpy_develop_kit_board/maix_go.md - - label: Maix M1s - items: - - label: M1s Module - file: maix/m1s/m1s_module.md - - label: M1s Dock - items: - - label: Introduction - file: maix/m1s/m1s_dock.md - - label: Basic Usage - file: maix/m1s/other/start.md - - label: Others (Camera and Shell) - file: maix/m1s/other/others.md - - label: Maix M1a - items: [] -- label: Maix-II - file: maixII/README.md - items: - - label: MaixII-Dock - file: maixII/M2/resources.md - items: - - label: Burn image - file: maixII/M2/flash.md - - label: Basic usage - file: maixII/M2/usage.md - - label: Other notice - file: maixII/M2/other.md - - label: Using MaixPy3 - file: ../../soft/maixpy3/zh/tools/0.MaixII-Dock.ipynb - target: _blank - - label: FAQ - file: maixII/M2/faq.md - - label: M2S - file: maixII/M2S/V833.md - items: - - label: Board introduction - file: maixII/M2S/reources.md - - label: MaixSense - file: maixII/M2A/maixsense.md - items: - - label: Burn image - file: maixII/M2A/flash_system.md - - label: Config system - file: maixII/M2A/config_system.md - - label: Test board - file: maixII/M2A/first.md - - label: Start to use - file: maixII/M2A/user.md - - label: Using MaixPy3 - file: ../../soft/maixpy3/zh/tools/maixsense.md - target: _blank -- label: Maix-III - items: - - label: Maix-III AXera-Pi - file: maixIII/ax-pi/axpi.md - items: - - label: AXera-Pi manual - file: maixIII/ax-pi/flash_system.md - - label: Python programming - file: maixIII/ax-pi/python_api.ipynb - - label: C/C++ programming - file: maixIII/ax-pi/dev_prepare.md - - label: AI development guide - url: /ai/en/deploy/ax-pi.html - - label: Questions (FAQ) - file: maixIII/ax-pi/faq_axpi.md -- label: MaixCAM - items: - - label: MaixCAM - file: maixcam/README.md - - label: MaixCAM-Pro - file: maixcam/maixcam_pro.md - - label: Sensor Introduction - file: maixcam/cameras.md - - label: ToF/Thermal PMOD - file: maixcam/tof_thermal.md - - label: MicroScope Kit - file: maixcam/microscope.md - - label: MaixCAM Assembly - file: maixcam/assemble.md - - label: System Upgrade - file: maixcam/os.md - - label: Develop with MaixPy - url: https://wiki.sipeed.com/maixpy/ - - label: Develop with MaixCDK - file: maixcam/maixcdk.md - - label: FAQ - file: maixcam/faq.md -- label: LicheePI - items: - - label: LicheePI 4A - items: - - label: Lichee Module 4A - file: lichee/th1520/lm4a.md - - label: Lichee Cluster 4A - file: lichee/th1520/lc4a/lc4a.md - - label: Lichee Console 4A - items: - - label: setup_guide - file: lichee/th1520/lcon4a/setup_guide.md - - label: images - file: lichee/th1520/lcon4a/3_images.md - - label: burn_image - file: lichee/th1520/lcon4a/4_burn_image.md - - file: lichee/th1520/lbook4a/lbook4a.md - - label: Lichee Book 4A - items: - - label: burn_image - file: lichee/th1520/lbook4a/4_burn_image.md - - file: lichee/th1520/lbook4a/lbook4a.md - - label: Lichee PI 4A - items: - - label: Introduction - file: lichee/th1520/lpi4a/1_intro.md - - label: Unbox guide - file: lichee/th1520/lpi4a/2_unbox.md - - label: Image summary - file: lichee/th1520/lpi4a/3_images.md - - label: Burn image - file: lichee/th1520/lpi4a/4_burn_image.md - - label: Desktop usage - file: lichee/th1520/lpi4a/5_desktop.md - - label: Peripheral - file: lichee/th1520/lpi4a/6_peripheral.md - - label: System building - items: - - label: revyos - file: lichee/th1520/lpi4a/7_develop_revyos.md - - label: Linux Mainline (Work in Progress) - file: lichee/th1520/lpi4a/7_develop_mainline.md - - label: Android - file: lichee/th1520/lpi4a/7_develop_android.md - - label: THead Yocto - file: lichee/th1520/lpi4a/7_develop_thead.md - - label: OpenHarmony (Work in Progress) - - label: OpenWRT - file: lichee/th1520/lpi4a/7_develop_openwrt.md - - label: Application - file: lichee/th1520/lpi4a/8_application.md - - label: Benchmark - file: lichee/th1520/lpi4a/9_benchmark.md - - label: Hardware report - file: lichee/th1520/lpi4a/10_test_report.md - - label: FAQ - file: lichee/th1520/lpi4a/12_faq.md - - label: Credits - file: lichee/th1520/lpi4a/11_credits.md - - label: LicheePI 3A - items: - - label: Lichee Module 3A - file: lichee/K1/lm3a.md - - label: Lichee Cluster 3A - file: lichee/K1/lc3a/lc3a.md - - label: Lichee PI 3A - collapsed: false - items: - - label: SBC Intro - file: lichee/K1/lpi3a/1_intro.md - - label: Unbox experience - file: lichee/K1/lpi3a/2_unbox.md - - label: Burn Images - file: lichee/K1/lpi3a/3_burn_image.md - - label: Peripheral Usage - file: lichee/K1/lpi3a/4_peripheral.md - - label: System develop - file: lichee/K1/lpi3a/5_develop.md - - label: Applications - file: lichee/K1/lpi3a/6_application.md - - label: FAQs - file: lichee/K1/lpi3a/7_faq.md - - label: Credits - file: lichee/K1/lpi3a/8_credits.md - - label: Lichee RV - collapsed: false - items: - - label: Board Introduction - items: - - label: Lichee RV - file: lichee/RV/RV.md - - label: Lichee RV 86 Panel - file: lichee/RV/86_panel.md - - label: Lichee RV Dock - file: lichee/RV/Dock.md - - label: Burn System - file: lichee/RV/flash.md - - label: Basic usage - file: lichee/RV/user.md - - label: Questions&Answers - file: lichee/RV/problems.md - - label: Ubuntu Image - file: lichee/RV/ubuntu.md - - label: LicheeRV Nano - items: - - label: Introduction - file: lichee/RV_Nano/1_intro.md - - label: Unboxing Experience - file: lichee/RV_Nano/2_unbox.md - - label: Image Collection - file: lichee/RV_Nano/3_images.md - - label: Flashing the Image - file: lichee/RV_Nano/4_burn_image.md - - label: peripheral - file: lichee/RV_Nano/5_peripheral.md - - label: System Development - file: lichee/RV_Nano/6_develop_mainline.md - - label: test - file: lichee/RV_Nano/7_test_report.md - - label: MMF Development Guide - file: lichee/RV_Nano/8_mmf_development_guide.md - - label: Lichee Zero - file: lichee/Zero/Zero.md - - label: Lichee Nano - file: lichee/Nano/Nano.md - - label: Lichee ZeroPlus - file: lichee/ZeroPlus/ZeroPlus.md -- label: Tang FPGA - items: - - label: Tang Nano - items: - - label: Tang Nano - file: tang/Tang-Nano/Nano.md - - label: Tang Nano 1K - file: tang/Tang-Nano-1K/Nano-1k.md - - label: Tang Nano 4k - file: tang/Tang-Nano-4K/Nano-4K.md - - label: Tang Nano 9K - file: tang/Tang-Nano-9K/Nano-9K.md - - label: Tang Nano 20K - items: - - label: Introduction - file: tang/tang-nano-20k/nano-20k.md - - label: Unbox - file: tang/tang-nano-20k/example/unbox.md - target: _blank - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Tang Nano examples - file: tang/common-doc/examples.md - target: _blank - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Primer - items: - - label: Tang Primer 20K - items: - - label: Introduction - file: tang/tang-primer-20k/primer-20k.md - - label: Notice - file: tang/tang-primer-20k/start.md - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Examples(Github) - url: https://github.com/sipeed/TangPrimer-20K-example - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Primer 25K - items: - - label: Introduction - file: tang/tang-primer-25k/primer-25k.md - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Primer 15K - items: - - label: Introduction - file: tang/tang-primer-15k/primer-15k.md - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Primer (Sold out) - file: tang/Tang-primer/Tang-primer.md - items: - - label: Install TD - items: - - label: In Windows - file: tang/Tang-primer/get_started/install_TD_win.md - - label: In Linux - file: tang/Tang-primer/get_started/install_linux.md - - label: Blink by FPGA - file: tang/Tang-primer/fpga/led.md - - label: ' Prepare E203 environment' - file: tang/Tang-primer/get_started/E203.md - - label: Burn FPGA - file: tang/Tang-primer/get_started/fpga_download.md - - label: Tang Mega - items: - - label: Tang Mega 138K Pro - items: - - label: Introduction - file: tang/tang-mega-138k/mega-138k-pro.md - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Mega 138K - items: - - label: Introduction - file: tang/tang-mega-138k/mega-138k.md - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Mega 60K - items: - - label: Introduction - file: tang/tang-mega-60k/mega-60k.md - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Console - items: - - label: Introduction - file: tang/tang-console/mega-console.md - - label: Install IDE - file: tang/common-doc/install-the-ide.md - - label: Questions&Answers - file: tang/common-doc/questions.md - target: _blank - - label: Update debugger - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang PMOD - file: tang/tang-PMOD/FPGA_PMOD.md -- label: MaixSense - file: maixsense/readme.md - items: - - label: MaixSense-a010 - file: maixsense/maixsense-a010/maixsense-a010.md - - label: MaixSense-a075v - file: maixsense/maixsense-a075v/maixsense-a075v.md -- label: SLogic - items: - - label: SLogic Combo 8 - items: - - label: Introduction - file: logic_analyzer/combo8/readme.md - - label: Basic Operation - file: logic_analyzer/combo8/basic_operation.md - - label: Using as Logic Analyzer - file: logic_analyzer/combo8/use_logic_function.md - - label: Using as CKLink - file: logic_analyzer/combo8/use_cklink_function.md - - label: Using as DAPLink - file: logic_analyzer/combo8/use_daplink_function.md - - label: Using as Serial Module - file: logic_analyzer/combo8/use_fouruart_function.md - - label: Update Firmware - file: logic_analyzer/combo8/update_firmware.md - - label: FAQ - file: logic_analyzer/combo8/faq.md -- label: KVM - items: - - label: NanoKVM Cube - items: - - label: Introduction - file: kvm/NanoKVM/introduction.md - - label: Quick start - file: kvm/NanoKVM/quick_start.md - - label: User Guide - file: kvm/NanoKVM/user_guide.md - - label: Network - items: - - label: Tailscale - file: kvm/NanoKVM/network/tailscale.md - - label: frp - file: kvm/NanoKVM/network/frp.md - - label: Static IP - file: kvm/NanoKVM/network/static_ip.md - - label: System - items: - - label: System Introduction - file: kvm/NanoKVM/system/introduction.md - - label: Flashing - file: kvm/NanoKVM/system/flashing.md - - label: Updating - file: kvm/NanoKVM/system/updating.md - - label: Configuration - file: kvm/NanoKVM/system/configuration.md - - label: FAQ - file: kvm/NanoKVM/faq.md - - label: NanoKVM PCIe - items: - - label: Introduction - file: kvm/NanoKVM_PCIe/introduction.md - - label: Quick start - file: kvm/NanoKVM_PCIe/quick_start.md - - label: User Guide - file: kvm/NanoKVM_PCIe/user_guide.md - - label: Network - items: - - label: Tailscale - file: kvm/NanoKVM/network/tailscale.md - - label: frp - file: kvm/NanoKVM/network/frp.md - - label: Static IP - file: kvm/NanoKVM/network/static_ip.md - - label: System - items: - - label: System Introduction - file: kvm/NanoKVM/system/introduction.md - - label: Flashing - file: kvm/NanoKVM/system/flashing.md - - label: Updating - file: kvm/NanoKVM/system/updating.md - - label: Configuration - file: kvm/NanoKVM/system/configuration.md - - label: FAQ - file: kvm/NanoKVM/faq.md - - label: NanoKVM USB - items: - - label: Introduction - file: kvm/NanoKVM_USB/introduction.md - - label: Quick start - file: kvm/NanoKVM_USB/quick_start.md - - label: Development - file: kvm/NanoKVM_USB/development.md - - label: FAQ - file: kvm/NanoKVM_USB/faq.md -# - label: Maix Audio -# items: -# - label: MA USB 16 -- label: Longon - items: - - label: LonganPI 3H - items: - - label: Introduction - file: longan/h618/lpi3h/1_intro.md - - label: Images - file: longan/h618/lpi3h/3_images.md - - label: Burn images - file: longan/h618/lpi3h/4_burn_image.md - - label: Desktop Usage - file: longan/h618/lpi3h/5_desktop.md - - label: Peripheral - file: longan/h618/lpi3h/6_peripheral.md - - label: Development - file: longan/h618/lpi3h/7_develop_mainline.md - - label: Test report - file: longan/h618/lpi3h/8_test_report.md - - label: Longon Nano - file: longan/Nano/Longan_nano.md - items: - - label: Setup environment - file: longan/Nano/pio.md - - label: Blink test - file: longan/Nano/blink.md -- label: MaixFace - items: - - label: MF0&&MF0 Dock - file: maixface/mf_ml_module/mf0_ml_module.md - - label: MF1 && MF2 - file: maixface/mf_ml_module/mf1_ml_module.md - - label: MF4 && MF5 - file: maixface/mf_ml_module/mf5_product.md - - label: Maixface PCB Design - file: maixface/mf_ml_module/mf_precautions.md - - label: Maixface Update firmware - file: maixface/mf_ml_module/mf_update_firmwave.md -- label: Peripheral modules - items: - - label: SP-MOD Peripheral modules - items: - - label: Adapter board - items: - - label: SP-Extender - file: modules_spmod/spmod_extender.md - - label: SP-Grove - file: modules_spmod/spmod_grove.md - - label: SP-FPC - file: modules_spmod/spmod_fpc.md - - label: SP-MicArray - file: modules_spmod/spmod_micarray.md - - label: SP-JotStick - file: modules_spmod/spmod_joystick.md - - label: SP-Servo - file: modules_spmod/spmod_servo.md - - label: SP-TypeC - file: '' - - label: Sensor - items: - - label: SP-Weather - file: modules_spmod/spmod_weather.md - - label: SP-TOF-1P - file: modules_spmod/spmod_tof.md - - label: Communication - items: - - label: SP-BT - file: modules_spmod/spmod_bt.md - - label: SP-LoRa - file: modules_spmod/spmod_lora.md - - label: SP-PSRAM - file: modules_spmod/spmod_psram.md - - label: SP-RFID - file: modules_spmod/spmod_rfid.md - - label: SP-Ethernet - file: modules_spmod/spmod_ethernet.md - - label: Display - items: - - label: SP-LCD 1.14 - file: modules_spmod/spmod_lcd1.14.md - - label: SP-Eink - file: modules_spmod/spmod_eink.md - - label: Module && Debugger - items: - - label: Debugger - items: - - label: Sipeed RV Debugger - - label: Dual uart USB module - - label: module - items: - - label: camera - items: - - label: GC0328 - - label: Dual cam module(GC0328) - - label: OV7740 - - label: OV2640 - - label: OV2640-M12 - - label: Dual cam module(OV2640) - - label: Mic module - items: - - label: Mic array - file: modules/micarray.md - - label: Sipeed Gamepad - file: modules/Gamepad.md +items: +- label: Maix Zero + items: + - label: Maix M0 + items: + - label: M0sense Board + file: ./maixzero/sense/maix_zero_sense.md + - label: M0sense Guide + file: ./maixzero/sense/start.md + - label: Maix M0P + items: + - label: M0P + - label: M0P Dock + - label: Maix M0s + file: ./maixzero/m0s/m0s.md +- label: Maix-I & Zero + items: + - label: Maix M1 + items: + - label: M1 Module + collapsed: false + items: + - label: M1/M1w + file: maix/core_module.md + - label: M1n + file: maix/M1n.md + - label: M1 Board + items: + - label: Maix Dock(M1/M1W) + file: maix/maixpy_develop_kit_board/Maix_dock.md + - label: Maix Bit + file: maix/maixpy_develop_kit_board/maix_bit.md + - label: Maix Duino + file: maix/maixpy_develop_kit_board/maix_duino.md + - label: Maix Nano + file: maix/maixpy_develop_kit_board/maix_nano.md + - label: Maix Cube + file: maix/maixpy_develop_kit_board/maix_cube.md + - label: Maix Amigo + file: maix/maixpy_develop_kit_board/maix_Amigo.md + - label: Maix HAT + file: maix/maixpy_develop_kit_board/maix_hat.md + - label: Maix Go (Sold out) + file: maix/maixpy_develop_kit_board/maix_go.md + - label: Maix M1s + items: + - label: M1s Module + file: maix/m1s/m1s_module.md + - label: M1s Dock + items: + - label: Introduction + file: maix/m1s/m1s_dock.md + - label: Basic Usage + file: maix/m1s/other/start.md + - label: Others (Camera and Shell) + file: maix/m1s/other/others.md + - label: Maix M1a + items: [] +- label: Maix-II + file: maixII/README.md + items: + - label: MaixII-Dock + file: maixII/M2/resources.md + items: + - label: Burn image + file: maixII/M2/flash.md + - label: Basic usage + file: maixII/M2/usage.md + - label: Other notice + file: maixII/M2/other.md + - label: Using MaixPy3 + file: ../../soft/maixpy3/zh/tools/0.MaixII-Dock.ipynb + target: _blank + - label: FAQ + file: maixII/M2/faq.md + - label: M2S + file: maixII/M2S/V833.md + items: + - label: Board introduction + file: maixII/M2S/reources.md + - label: MaixSense + file: maixII/M2A/maixsense.md + items: + - label: Burn image + file: maixII/M2A/flash_system.md + - label: Config system + file: maixII/M2A/config_system.md + - label: Test board + file: maixII/M2A/first.md + - label: Start to use + file: maixII/M2A/user.md + - label: Using MaixPy3 + file: ../../soft/maixpy3/zh/tools/maixsense.md + target: _blank +- label: Maix-III + items: + - label: Maix-III AXera-Pi + file: maixIII/ax-pi/axpi.md + items: + - label: AXera-Pi manual + file: maixIII/ax-pi/flash_system.md + - label: Python programming + file: maixIII/ax-pi/python_api.ipynb + - label: C/C++ programming + file: maixIII/ax-pi/dev_prepare.md + - label: AI development guide + url: /ai/en/deploy/ax-pi.html + - label: Questions (FAQ) + file: maixIII/ax-pi/faq_axpi.md +- label: MaixCAM + items: + - label: MaixCAM + file: maixcam/README.md + - label: MaixCAM-Pro + file: maixcam/maixcam_pro.md + - label: Sensor Introduction + file: maixcam/cameras.md + - label: ToF/Thermal PMOD + file: maixcam/tof_thermal.md + - label: MicroScope Kit + file: maixcam/microscope.md + - label: MaixCAM Assembly + file: maixcam/assemble.md + - label: System Upgrade + file: maixcam/os.md + - label: Develop with MaixPy + url: https://wiki.sipeed.com/maixpy/ + - label: Develop with MaixCDK + file: maixcam/maixcdk.md + - label: FAQ + file: maixcam/faq.md +- label: LicheePI + items: + - label: LicheePI 4A + items: + - label: Lichee Module 4A + file: lichee/th1520/lm4a.md + - label: Lichee Cluster 4A + file: lichee/th1520/lc4a/lc4a.md + - label: Lichee Console 4A + items: + - label: setup_guide + file: lichee/th1520/lcon4a/setup_guide.md + - label: images + file: lichee/th1520/lcon4a/3_images.md + - label: burn_image + file: lichee/th1520/lcon4a/4_burn_image.md + + file: lichee/th1520/lbook4a/lbook4a.md + - label: Lichee Book 4A + items: + - label: burn_image + file: lichee/th1520/lbook4a/4_burn_image.md + + file: lichee/th1520/lbook4a/lbook4a.md + - label: Lichee PI 4A + items: + - label: Introduction + file: lichee/th1520/lpi4a/1_intro.md + - label: Unbox guide + file: lichee/th1520/lpi4a/2_unbox.md + - label: Image summary + file: lichee/th1520/lpi4a/3_images.md + - label: Burn image + file: lichee/th1520/lpi4a/4_burn_image.md + - label: Desktop usage + file: lichee/th1520/lpi4a/5_desktop.md + - label: Peripheral + file: lichee/th1520/lpi4a/6_peripheral.md + - label: System building + items: + - label: revyos + file: lichee/th1520/lpi4a/7_develop_revyos.md + - label: Linux Mainline (Work in Progress) + file: lichee/th1520/lpi4a/7_develop_mainline.md + - label: Android + file: lichee/th1520/lpi4a/7_develop_android.md + - label: THead Yocto + file: lichee/th1520/lpi4a/7_develop_thead.md + - label: OpenHarmony (Work in Progress) + - label: OpenWRT + file: lichee/th1520/lpi4a/7_develop_openwrt.md + - label: Application + file: lichee/th1520/lpi4a/8_application.md + - label: Benchmark + file: lichee/th1520/lpi4a/9_benchmark.md + - label: Hardware report + file: lichee/th1520/lpi4a/10_test_report.md + - label: FAQ + file: lichee/th1520/lpi4a/12_faq.md + - label: Credits + file: lichee/th1520/lpi4a/11_credits.md + - label: LicheePI 3A + items: + - label: Lichee Module 3A + file: lichee/K1/lm3a.md + - label: Lichee Cluster 3A + file: lichee/K1/lc3a/lc3a.md + - label: Lichee PI 3A + collapsed: false + items: + - label: SBC Intro + file: lichee/K1/lpi3a/1_intro.md + - label: Unbox experience + file: lichee/K1/lpi3a/2_unbox.md + - label: Burn Images + file: lichee/K1/lpi3a/3_burn_image.md + - label: Peripheral Usage + file: lichee/K1/lpi3a/4_peripheral.md + - label: System develop + file: lichee/K1/lpi3a/5_develop.md + - label: Applications + file: lichee/K1/lpi3a/6_application.md + - label: FAQs + file: lichee/K1/lpi3a/7_faq.md + - label: Credits + file: lichee/K1/lpi3a/8_credits.md + - label: Lichee RV + collapsed: false + items: + - label: Board Introduction + items: + - label: Lichee RV + file: lichee/RV/RV.md + - label: Lichee RV 86 Panel + file: lichee/RV/86_panel.md + - label: Lichee RV Dock + file: lichee/RV/Dock.md + - label: Burn System + file: lichee/RV/flash.md + - label: Basic usage + file: lichee/RV/user.md + - label: Questions&Answers + file: lichee/RV/problems.md + - label: Ubuntu Image + file: lichee/RV/ubuntu.md + - label: LicheeRV Nano + items: + - label: Introduction + file: lichee/RV_Nano/1_intro.md + - label: Unboxing Experience + file: lichee/RV_Nano/2_unbox.md + - label: Image Collection + file: lichee/RV_Nano/3_images.md + - label: Flashing the Image + file: lichee/RV_Nano/4_burn_image.md + - label: peripheral + file: lichee/RV_Nano/5_peripheral.md + - label: System Development + file: lichee/RV_Nano/6_develop_mainline.md + - label: test + file: lichee/RV_Nano/7_test_report.md + - label: MMF Development Guide + file: lichee/RV_Nano/8_mmf_development_guide.md + - label: Lichee Zero + file: lichee/Zero/Zero.md + - label: Lichee Nano + file: lichee/Nano/Nano.md + - label: Lichee ZeroPlus + file: lichee/ZeroPlus/ZeroPlus.md +- label: Tang FPGA + items: + - label: Tang Nano + items: + - label: Tang Nano + file: tang/Tang-Nano/Nano.md + - label: Tang Nano 1K + file: tang/Tang-Nano-1K/Nano-1k.md + - label: Tang Nano 4k + file: tang/Tang-Nano-4K/Nano-4K.md + - label: Tang Nano 9K + file: tang/Tang-Nano-9K/Nano-9K.md + - label: Tang Nano 20K + items: + - label: Introduction + file: tang/tang-nano-20k/nano-20k.md + - label: Unbox + file: tang/tang-nano-20k/example/unbox.md + target: _blank + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Tang Nano examples + file: tang/common-doc/examples.md + target: _blank + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Primer + items: + - label: Tang Primer 20K + items: + - label: Introduction + file: tang/tang-primer-20k/primer-20k.md + - label: Notice + file: tang/tang-primer-20k/start.md + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Examples(Github) + url: https://github.com/sipeed/TangPrimer-20K-example + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Primer 25K + items: + - label: Introduction + file: tang/tang-primer-25k/primer-25k.md + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Primer 15K + items: + - label: Introduction + file: tang/tang-primer-15k/primer-15k.md + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Primer (Sold out) + file: tang/Tang-primer/Tang-primer.md + items: + - label: Install TD + items: + - label: In Windows + file: tang/Tang-primer/get_started/install_TD_win.md + - label: In Linux + file: tang/Tang-primer/get_started/install_linux.md + - label: Blink by FPGA + file: tang/Tang-primer/fpga/led.md + - label: ' Prepare E203 environment' + file: tang/Tang-primer/get_started/E203.md + - label: Burn FPGA + file: tang/Tang-primer/get_started/fpga_download.md + - label: Tang Mega + items: + - label: Tang Mega 138K Pro + items: + - label: Introduction + file: tang/tang-mega-138k/mega-138k-pro.md + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Mega 138K + items: + - label: Introduction + file: tang/tang-mega-138k/mega-138k.md + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Mega 60K + items: + - label: Introduction + file: tang/tang-mega-60k/mega-60k.md + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Console + items: + - label: Introduction + file: tang/tang-console/mega-console.md + - label: Install IDE + file: tang/common-doc/install-the-ide.md + - label: Questions&Answers + file: tang/common-doc/questions.md + target: _blank + - label: Update debugger + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang PMOD + file: tang/tang-PMOD/FPGA_PMOD.md +- label: MaixSense + file: maixsense/readme.md + items: + - label: MaixSense-a010 + file: maixsense/maixsense-a010/maixsense-a010.md + - label: MaixSense-a075v + file: maixsense/maixsense-a075v/maixsense-a075v.md +- label: SLogic + items: + - label: SLogic Combo 8 + items: + - label: Introduction + file: logic_analyzer/combo8/readme.md + - label: Basic Operation + file: logic_analyzer/combo8/basic_operation.md + - label: Using as Logic Analyzer + file: logic_analyzer/combo8/use_logic_function.md + - label: Using as CKLink + file: logic_analyzer/combo8/use_cklink_function.md + - label: Using as DAPLink + file: logic_analyzer/combo8/use_daplink_function.md + - label: Using as Serial Module + file: logic_analyzer/combo8/use_fouruart_function.md + - label: Update Firmware + file: logic_analyzer/combo8/update_firmware.md + - label: FAQ + file: logic_analyzer/combo8/faq.md +- label: KVM + items: + - label: NanoKVM Cube + items: + - label: Introduction + file: kvm/NanoKVM/introduction.md + - label: Quick start + file: kvm/NanoKVM/quick_start.md + - label: User Guide + file: kvm/NanoKVM/user_guide.md + - label: Network + items: + - label: Tailscale + file: kvm/NanoKVM/network/tailscale.md + - label: frp + file: kvm/NanoKVM/network/frp.md + - label: Static IP + file: kvm/NanoKVM/network/static_ip.md + - label: System + items: + - label: System Introduction + file: kvm/NanoKVM/system/introduction.md + - label: Flashing + file: kvm/NanoKVM/system/flashing.md + - label: Updating + file: kvm/NanoKVM/system/updating.md + - label: Configuration + file: kvm/NanoKVM/system/configuration.md + - label: FAQ + file: kvm/NanoKVM/faq.md + - label: NanoKVM PCIe + items: + - label: Introduction + file: kvm/NanoKVM_PCIe/introduction.md + - label: Quick start + file: kvm/NanoKVM_PCIe/quick_start.md + - label: User Guide + file: kvm/NanoKVM_PCIe/user_guide.md + - label: Network + items: + - label: Tailscale + file: kvm/NanoKVM/network/tailscale.md + - label: frp + file: kvm/NanoKVM/network/frp.md + - label: Static IP + file: kvm/NanoKVM/network/static_ip.md + - label: System + items: + - label: System Introduction + file: kvm/NanoKVM/system/introduction.md + - label: Flashing + file: kvm/NanoKVM/system/flashing.md + - label: Updating + file: kvm/NanoKVM/system/updating.md + - label: Configuration + file: kvm/NanoKVM/system/configuration.md + - label: FAQ + file: kvm/NanoKVM/faq.md + - label: NanoKVM USB + items: + - label: Introduction + file: kvm/NanoKVM_USB/introduction.md + - label: Quick start + file: kvm/NanoKVM_USB/quick_start.md + - label: Development + file: kvm/NanoKVM_USB/development.md + - label: FAQ + file: kvm/NanoKVM_USB/faq.md +# - label: Maix Audio +# items: +# - label: MA USB 16 +- label: Longon + items: + - label: LonganPI 3H + items: + - label: Introduction + file: longan/h618/lpi3h/1_intro.md + - label: Images + file: longan/h618/lpi3h/3_images.md + - label: Burn images + file: longan/h618/lpi3h/4_burn_image.md + - label: Desktop Usage + file: longan/h618/lpi3h/5_desktop.md + - label: Peripheral + file: longan/h618/lpi3h/6_peripheral.md + - label: Development + file: longan/h618/lpi3h/7_develop_mainline.md + - label: Test report + file: longan/h618/lpi3h/8_test_report.md + - label: Longon Nano + file: longan/Nano/Longan_nano.md + items: + - label: Setup environment + file: longan/Nano/pio.md + - label: Blink test + file: longan/Nano/blink.md +- label: MaixFace + items: + - label: MF0&&MF0 Dock + file: maixface/mf_ml_module/mf0_ml_module.md + - label: MF1 && MF2 + file: maixface/mf_ml_module/mf1_ml_module.md + - label: MF4 && MF5 + file: maixface/mf_ml_module/mf5_product.md + - label: Maixface PCB Design + file: maixface/mf_ml_module/mf_precautions.md + - label: Maixface Update firmware + file: maixface/mf_ml_module/mf_update_firmwave.md +- label: Peripheral modules + items: + - label: SP-MOD Peripheral modules + items: + - label: Adapter board + items: + - label: SP-Extender + file: modules_spmod/spmod_extender.md + - label: SP-Grove + file: modules_spmod/spmod_grove.md + - label: SP-FPC + file: modules_spmod/spmod_fpc.md + - label: SP-MicArray + file: modules_spmod/spmod_micarray.md + - label: SP-JotStick + file: modules_spmod/spmod_joystick.md + - label: SP-Servo + file: modules_spmod/spmod_servo.md + - label: SP-TypeC + file: '' + - label: Sensor + items: + - label: SP-Weather + file: modules_spmod/spmod_weather.md + - label: SP-TOF-1P + file: modules_spmod/spmod_tof.md + - label: Communication + items: + - label: SP-BT + file: modules_spmod/spmod_bt.md + - label: SP-LoRa + file: modules_spmod/spmod_lora.md + - label: SP-PSRAM + file: modules_spmod/spmod_psram.md + - label: SP-RFID + file: modules_spmod/spmod_rfid.md + - label: SP-Ethernet + file: modules_spmod/spmod_ethernet.md + - label: Display + items: + - label: SP-LCD 1.14 + file: modules_spmod/spmod_lcd1.14.md + - label: SP-Eink + file: modules_spmod/spmod_eink.md + - label: Module && Debugger + items: + - label: Debugger + items: + - label: Sipeed RV Debugger + - label: Dual uart USB module + - label: module + items: + - label: camera + items: + - label: GC0328 + - label: Dual cam module(GC0328) + - label: OV7740 + - label: OV2640 + - label: OV2640-M12 + - label: Dual cam module(OV2640) + - label: Mic module + items: + - label: Mic array + file: modules/micarray.md + - label: Sipeed Gamepad + file: modules/Gamepad.md diff --git a/docs/hardware/en/tang/common-doc/update_debugger.md b/docs/hardware/en/tang/common-doc/update_debugger.md index 51776c44..6358cc10 100644 --- a/docs/hardware/en/tang/common-doc/update_debugger.md +++ b/docs/hardware/en/tang/common-doc/update_debugger.md @@ -1,201 +1,206 @@ ---- -title: Update debugger -keywords: Sipeed, Gowin, Tang, FPGA, Nano, Primer, Mega -update: - - date: 2025-02-10 - version: v0.8 - author: Serika - content: - - First release ---- -## Overview - -All Sipeed Tang series have onboard debugger (except standalone SOM). The debuggers are separate MCUs with their own firmware. Users could update the firmware for these debuggers to get feature updates and bug fixes. - -We need to use the [**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/) to program these onboard debugger chips, and documentation about the ***chips & tools*** can be found [here](https://dev.bouffalolab.com/document/). - -Here is a brief step-by-step guide: -- Download and install the corresponding edition of the ***tools*** according to your OS. -- Get the updated debugger firmware for your board from [**Sipeed Download Station**](https://dl.sipeed.com/shareURL/TANG/Debugger/onboard). -- Refer to the official documentation of [**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/) to update the firmware of the onboard debugger. -- For Windows users, there are detailed step-by-step tutorial below. Also, the steps for other operating systems are similar. - -*** - -## Tutorial - ### Preparation for Hardware - - To put the onboard debugger into **DFU mode**, press the ***Update Button*** or short the corresponding ***Test Points*** before power on the board or connecting the board's debug USB port with a cable. - - Please refer to the below for the corresponding ***Update Button*** and ***Test Points***. - - #### Tang nano series - - - Tang nano 1k - - The 2 **`Test Points`** is in the upper left corner of the board **TOP** side, behind the `KEY-B`. - - ![nano1k_update](./assets/hardware/nano1k_update.jpg) - - - Tang nano 4k - - The 2 **`Test Points`** is in the upper left corner of the board **TOP** side, behind the USB-C connector. - - ![nano4k_update](./assets/hardware/nano4k_update.jpg) - - - Tang nano 9k - - The 2 **`Test Points`** is in the middle left of the board **TOP** side, behind the USB-C connector. - - ![nano9k_update](./assets/hardware/nano9k_update.jpg) - - - Tang nano 20k - - The **`Update Button`** behind the HDMI connector on the **TOP** side has the silkscreen **`UPDATE`**. - - ![nano20k_update](./assets/hardware/nano20k_update.jpg) - - #### Tang Primer series - - - Tang Primer 25k Dock - - The 2 **`Test Points`** is in the upper left corner of the board **BOT** side, marked as `3V3` & `TDO`. - - ![Primer25k_update](./assets/hardware/Primer25k_update.jpg) - - - Tang Primer 20k Dock - - The white **`Update Button`** is on the lower right side of the TOP side of the Dock board between USB-C debug port and HDMI port, marked as **`702-BOOT`** - - ![Primer20k_update](./assets/hardware/Primer20k_update.jpg) - - - ~~Tang Primer 15k Dock~~ (**Not yet released**) - - TBD - - #### Tang Mega series(include Tang Console) - - - Tang Mega Neo Dock(inclede Tang Mega 138K Dock) - - The **`Update Button`** is blow the USB-C connector marked as **DEBUG-USB2** on the **TOP** side. - - ![Mega-neo_update](./assets/hardware/Mega-neo_update.jpg) - - - Tang Mega 138K Pro Dock - - The **`Update Button`** is on the left of the USB-C connector marked as **JATG|UART** on the **TOP** side. - - ![Mega-138kpro_update](./assets/hardware/Mega-138kpro_update.jpg) - - - Tang Console - - The **`Update Button`** is on the other side the USB-C connector on the **TOP** side, the shorter of the 2 buttons marked ad **`BOOT`**. - - ![Mega-console_update](./assets/hardware/Mega-console_update.jpg) - - *** - - ### Preparation for Software - - - First, download **BouffaloLabDevCube** from [**BouffaloLab Official Website**](https://dev.bouffalolab.com/download/), The latest version is **`1.9.0`** (February 10, 2025). - - ![download_BLDevCube](./assets/download_bldc.jpg) - - - Unzip the downloaded content and execute the corresponding executable file, for Windows this is **`BLDevCube.exe`** - - ![run_BLDevCube](./assets/run_bldc.jpg) - - - - In the pop-up window, select Chip model as BL616/618. - - ![model-sel_BLDevCube](./assets/model-sel_bldc.jpg) - - - In the new window, check the **`Enable`** checkbox in blow the ***Single download option***. Click the **`Browse`** button to select the firmware file to be updated. - - ![mainwindow_BLDevCube](./assets/mainw_bldc.jpg) - - - Let the onboard debugger into [**DFU mode**](#preparation-for-hardware), it should be a CDC-ACM device for both BL702 or BL616. On Windows, this registers a new COM port, in this example is **`COM12`**. For Linux users, CDC-ACM usual register as `/dev/ttyACMx`. For macOS users, it may register as `/dev/tty.usbmodemxxxx` or `/dev/cu.usbmodemxxxx`. (Each `x` represents a digit) - - ![new_com-port](./assets/new_com-port.jpg) - - - Now, set the **BLDevCube** up as shown below. Set the firmware file location, the port for DFU mode, then click **`Open UART`**, and finally click **`Create & Download`**. - - ![setting_BLDevCube](./assets/set_bldc.jpg) - - - Wait for the download to complete as shown in the image below. - - ![download_complete](./assets/complete_bldc.jpg) - - *** - - ### Confirm the results - - After completing the above steps, we need to confirm that the firmware of the onboard debugger is successfully burned. Usually replug the USB cable or re-poweron the board will confirm it. - - - In Windows, you can see two new devices in the device manager: **`USB Converter A`** and **`USB Converter B`**. - - ![dual_usbconverter](./assets/ftdi_dual.jpg) - - - To confirm the debugger firmware version, double-click any **`USB Converter`** and go to the Details tab. Then select **`Parent`** Options from the drop-down menu: - - ![detail_usbconverter](./assets/detail_usbconverter.jpg) - - - As shown in the figure below, the last 10 digits **`2025102315`** are the serial number of the debugger firmware version. Linux & macOS users could use command **`dmesg`** to check the serial number in kernel log. - - ![serialnum_usbconverter](./assets/serialnum_usbconverter.jpg) - - ### Latest firmware - - The latest firmware serial numbers of all Tang series onboard debuggers are recorded here: - - - | Board | MCU model | Download |Serial num.| Firmware SHA256 Checksum | - | ------------- | ---------- | -------------------------------------------------------------------------------------------------------------| --------- |-----------------------------------------------------------------------------------------------------------------------------------------------| - | nano 1K | BL702 | N/A | N/A |N/A | - | nano 4K | BL702 | N/A | N/A |N/A | - | Nano 9K | BL702 | N/A | N/A |N/A | - | Primer 20K | BL702 | N/A | N/A |N/A | - | | | | | | - | nano 20K | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.bin) |2025012315 |[bl616_fpga_partner_20kNano.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.sha256) | - | Primer 25K | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.bin) |2025012315 |[bl616_fpga_partner_25kDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.sha256) | - | Mega NEO | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.bin) |2025012315 |[bl616_fpga_partner_NeoDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.sha256) | - | Mega 138K Pro | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.bin) |2025012315 |[bl616_fpga_partner_138kproDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.sha256)| - | Console | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.bin) |2025012319 |[bl616_fpga_partner_Console.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.sha256) | - - - - - - - - - - - - - - ### Troubleshooting - If you encounter any problems during use, or have any comments or suggestions on the document, please feel free to give us your feedback. Contact details are below. - - In most cases, BouffaloLab's official documentation is sufficient for troubleshooting. Click [here](https://dev.bouffalolab.com/document/) to get them. - - #### FAQ - - TBD, waiting for feedback to be collected before adding. - - #### Communication Methods - - **Reddit** : [reddit.com/r/GowinFPGA/](reddit.com/r/GowinFPGA/) - - **Telegram** : [t.me/sipeed](t.me/sipeed) - - Discussion forum: [maixhub.com/discussion](https://maixhub.com/discussion) - - QQ discussion group: [834585530](https://jq.qq.com/?_wv=1027&k=wBb8XUan) - - Leave a message directly below this page - - Business email : [support@sipeed.com](support@sipeed.com) - - - - - - - - - - +--- +title: Update debugger +keywords: Sipeed, Gowin, Tang, FPGA, Nano, Primer, Mega +update: + - date: 2025-02-10 + version: v0.8 + author: Serika + content: + - First release + - date: 2025-02-18 + version: v0.81 + author: Serika + content: + - Enhance doc content. +--- +## Overview + +All Sipeed Tang series have onboard debugger (except standalone SOM). The debuggers are separate MCUs with their own firmware. Users could update the firmware for these debuggers to get feature updates and bug fixes. + +We need to use the [**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/) to program these onboard debugger chips, and documentation about the ***chips & tools*** can be found [here](https://dev.bouffalolab.com/document/). + +Here is a brief step-by-step guide: +- Download and install the corresponding edition of the ***tools*** according to your OS. +- Get the updated debugger firmware for your board from [**Sipeed Download Station**](https://dl.sipeed.com/shareURL/TANG/Debugger/onboard). +- Refer to the official documentation of [**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/) to update the firmware of the onboard debugger. +- For Windows users, there are detailed step-by-step tutorial below. Also, the steps for other operating systems are similar. + +*** + +## Tutorial + ### Preparation for Hardware + + To put the onboard debugger into **DFU mode**, press the ***Update Button*** or short the corresponding ***Test Points*** before power on the board or connecting the board's debug USB port with a cable. + + Please refer to the below for the corresponding ***Update Button*** and ***Test Points***. + + #### Tang nano series + + - Tang nano 1k + + The 2 **`Test Points`** is in the upper left corner of the board **TOP** side, behind the `KEY-B`. + + ![nano1k_update](./assets/hardware/nano1k_update.jpg) + + - Tang nano 4k + + The 2 **`Test Points`** is in the upper left corner of the board **TOP** side, behind the USB-C connector. + + ![nano4k_update](./assets/hardware/nano4k_update.jpg) + + - Tang nano 9k + + The 2 **`Test Points`** is in the middle left of the board **TOP** side, behind the USB-C connector. + + ![nano9k_update](./assets/hardware/nano9k_update.jpg) + + - Tang nano 20k + + The **`Update Button`** behind the HDMI connector on the **TOP** side has the silkscreen **`UPDATE`**. + + ![nano20k_update](./assets/hardware/nano20k_update.jpg) + + #### Tang Primer series + + - Tang Primer 25k Dock + + The 2 **`Test Points`** is in the upper left corner of the board **BOT** side, marked as `3V3` & `TDO`. + + ![Primer25k_update](./assets/hardware/Primer25k_update.jpg) + + - Tang Primer 20k Dock + + The white **`Update Button`** is on the lower right side of the TOP side of the Dock board between USB-C debug port and HDMI port, marked as **`702-BOOT`** + + ![Primer20k_update](./assets/hardware/Primer20k_update.jpg) + + - ~~Tang Primer 15k Dock~~ (**Not yet released**) + + TBD + + #### Tang Mega series(include Tang Console) + + - Tang Mega Neo Dock(inclede Tang Mega 138K Dock) + + The **`Update Button`** is blow the USB-C connector marked as **DEBUG-USB2** on the **TOP** side. + + ![Mega-neo_update](./assets/hardware/Mega-neo_update.jpg) + + - Tang Mega 138K Pro Dock + + The **`Update Button`** is on the left of the USB-C connector marked as **JATG|UART** on the **TOP** side. + + ![Mega-138kpro_update](./assets/hardware/Mega-138kpro_update.jpg) + + - Tang Console + + The **`Update Button`** is on the other side the USB-C connector on the **TOP** side, the shorter of the 2 buttons marked ad **`BOOT`**. + + ![Mega-console_update](./assets/hardware/Mega-console_update.jpg) + + *** + + ### Preparation for Software + + - First, download **BouffaloLabDevCube** from [**BouffaloLab Official Website**](https://dev.bouffalolab.com/download/), The latest version is **`1.9.0`** (February 10, 2025). + + ![download_BLDevCube](./assets/download_bldc.jpg) + + - Unzip the downloaded content and execute the corresponding executable file, for Windows this is **`BLDevCube.exe`** + + ![run_BLDevCube](./assets/run_bldc.jpg) + + + - In the pop-up window, select Chip model as BL616/618. + + ![model-sel_BLDevCube](./assets/model-sel_bldc.jpg) + + - In the new window, check the **`Enable`** checkbox in blow the ***Single download option***. Click the **`Browse`** button to select the firmware file to be updated. + + ![mainwindow_BLDevCube](./assets/mainw_bldc.jpg) + + - Let the onboard debugger into [**DFU mode**](#preparation-for-hardware), it should be a CDC-ACM device for both BL702 or BL616. On Windows, this registers a new COM port, in this example is **`COM12`**. For Linux users, CDC-ACM usual register as `/dev/ttyACMx`. For macOS users, it may register as `/dev/tty.usbmodemxxxx` or `/dev/cu.usbmodemxxxx`. (Each `x` represents a digit) + + ![new_com-port](./assets/new_com-port.jpg) + + - Now, set the **BLDevCube** up as shown below. Set the firmware file location, the port for DFU mode, then click **`Open UART`**, and finally click **`Create & Download`**. + + ![setting_BLDevCube](./assets/set_bldc.jpg) + + - Wait for the download to complete as shown in the image below. + + ![download_complete](./assets/complete_bldc.jpg) + + *** + + ### Confirm the results + + After completing the above steps, we need to confirm that the firmware of the onboard debugger is successfully burned. Usually replug the USB cable or re-poweron the board will confirm it. + + - In Windows, you can see two new devices in the device manager: **`USB Converter A`** and **`USB Converter B`**. + + ![dual_usbconverter](./assets/ftdi_dual.jpg) + + - To confirm the debugger firmware version, double-click any **`USB Converter`** and go to the Details tab. Then select **`Parent`** Options from the drop-down menu: + + ![detail_usbconverter](./assets/detail_usbconverter.jpg) + + - As shown in the figure below, the last 10 digits **`2025102315`** are the serial number of the debugger firmware version. Linux & macOS users could use command **`dmesg`** to check the serial number in kernel log. + + ![serialnum_usbconverter](./assets/serialnum_usbconverter.jpg) + + ### Latest firmware + + The latest firmware serial numbers of all Tang series onboard debuggers are recorded here: + + + | Board | MCU model | Download |Serial num.| Firmware SHA256 Checksum | + | ------------- | ---------- | -------------------------------------------------------------------------------------------------------------| --------- |-----------------------------------------------------------------------------------------------------------------------------------------------| + | nano 1K | BL702 | N/A | N/A |N/A | + | nano 4K | BL702 | N/A | N/A |N/A | + | Nano 9K | BL702 | N/A | N/A |N/A | + | Primer 20K | BL702 | N/A | N/A |N/A | + | | | | | | + | nano 20K | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.bin) |2025012315 |[bl616_fpga_partner_20kNano.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.sha256) | + | Primer 25K | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.bin) |2025012315 |[bl616_fpga_partner_25kDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.sha256) | + | Mega NEO | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.bin) |2025012315 |[bl616_fpga_partner_NeoDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.sha256) | + | Mega 138K Pro | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.bin) |2025012315 |[bl616_fpga_partner_138kproDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.sha256)| + | Console | BL616 | [Click](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.bin) |2025012319 |[bl616_fpga_partner_Console.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.sha256) | + + + + + + + + + + + + + + ### Troubleshooting + If you encounter any problems during use, or have any comments or suggestions on the document, please feel free to give us your feedback. Contact details are below. + + In most cases, BouffaloLab's official documentation is sufficient for troubleshooting. Click [here](https://dev.bouffalolab.com/document/) to get them. + + #### FAQ + - TBD, waiting for feedback to be collected before adding. + + #### Communication Methods + - **Reddit** : [reddit.com/r/GowinFPGA/](reddit.com/r/GowinFPGA/) + - **Telegram** : [t.me/sipeed](t.me/sipeed) + - Discussion forum: [maixhub.com/discussion](https://maixhub.com/discussion) + - QQ discussion group: [834585530](https://jq.qq.com/?_wv=1027&k=wBb8XUan) + - Leave a message directly below this page + - Business email : [support@sipeed.com](support@sipeed.com) + + + + + + + + + + diff --git a/docs/hardware/en/tang/tang-console/mega-console.md b/docs/hardware/en/tang/tang-console/mega-console.md index 5d09112c..e5676022 100644 --- a/docs/hardware/en/tang/tang-console/mega-console.md +++ b/docs/hardware/en/tang/tang-console/mega-console.md @@ -1,222 +1,222 @@ ---- -title: Tang Console -keywords: FPGA, Tang, Console, 60K, 138K -update: - - date: 2025-01-23 - version: v0.1 - author: Serika - content: - - Create document ---- - -## Overview - - **Tang Console** is an another dock board for **[Tang Mega 138k](./../tang-mega-138k/mega-138k.md) SOM** and **[Tang Mega 60k](./../tang-mega-60k/mega-60k.md) SOM**. It is designed to be small and compact, and is mechanically compatible with the **Raspberry Pi 5b** **`PCIe HAT`**. In addition, it also contains two 5Gbps USB3 device interfaces and two **2x20-pin header connectors**, two **PMOD connectors**. It can meet the needs of IO expansion and high-speed communication at the same time. - - At the same time, it is also specially designed for retro games. Maybe you can turn it into a retro game console, or even a handheld, whatever you like. - - - Date to Release: Late March , 2025 - - - Pre-sale link: [Click me](https://sipeed.com/tangconsole) - -## Board Features - - - Compatible with various SOMs (**[Mega 138k](./../tang-mega-138k/mega-138k.md)** & **[Mega 60k](./../tang-mega-60k/mega-60k.md)**) - - More compact size, more budget choice - - Compatible with Raspberry Pi 5b PCIe HAT - - PCIe 2.0 x 1 - - USB3 x 2(5Gbps) - - HDMI TX x 1 - - Soft-PHY USB2 x1(480Mbps) - - Onboard 3.7V Li-on battery(1-Series) charge/discharge management - -## Product Appearance - - - -## Block Diagram - -TBD - -## Hardware Parameters - -### SOM Board Parameters - -Please refer to the link below: - - **[Tang Mega 138k](./../tang-mega-138k/mega-138k.md#hardware-parameters) SOM** - - **[Tang Mega 60k](./../tang-mega-60k/mega-60k.md#hardware-parameters) SOM** - - -### Dock board Parameters - -| Item | Quantity | Remarks | -| :------------------ | ---- | ------------------------------------------------- | -| LEDs | 2(3+3) | 3x Battery-Indicator + 3x User LED (2x RGB LED) | -| Buttons | 2+1 | 2x User-KEY + 1x Reconfig-KEY | -| PCIe | 1 | 1-lane @ 8/5Gbps (Depends on SOM) | -| USB3 | 2 | SERDES lane, SuperSpeed @ 5Gbps (Device mode) | -| USB2 | 1 | IO Soft-PHY, HighSpeed @ 480Mbps (Device mode) | -| DVI(HDMI) | 1 | Compatible with HDMI, supports TX, can also be modified to RX | -| PMOD | 2 | Standard spacing (800mil), Compatible with dual PMOD modules | -| ADC | 2 | 2x differential input channels (One is used to measure the battery voltage) | -| RGB Interface | 1 | Supports RGB888 screen & RGB to VGA Converter | -| microSD Slot | 1 | 4-bit SDIO/MMC or SPI mode | -| BATT CONN. | 1 | Supports 3.7V li-on battery, with built-in charge management | -| FAN CONN. | 1 | Supports a 5V fan, maximum power: 1W | -| Speaker CONN. | 1 | Support mono output, 1x 2W Speaker | -| MS5351 | 1 | Provides RefClk for Serdes: control output via onboard UART | -| USB JTAG & UART | 1 | Supports FPGA programming and provides UART function | -| 2x20P headers | 2 | Independent 2x20P pin header, providing up to 2x38 IOs, can be modified to be compatible with DE10-Nano Kit | - - -## Hardware Resources - -- ~~[Specification](https://dl.sipeed.com/shareURL/TANG/Console/01_Specification)~~ -- [Schematics](https://dl.sipeed.com/shareURL/TANG/Console/02_Schematic) -- [PCB BOM](https://dl.sipeed.com/shareURL/TANG/Console/03_Designator_drawing) -- [Dimension Diagram](https://dl.sipeed.com/shareURL/TANG/Console/04_Mechanical_drawing) -- [3D Model](https://dl.sipeed.com/shareURL/TANG/Console/05_3D_file) -- [Some Chip Manuals](https://dl.sipeed.com/shareURL/TANG/Console/07_Datasheet) -- [All PIN Constraints](https://dl.sipeed.com/shareURL/TANG/Console/08_Misc) - -## Getting Started - -Note that **`Tang Mega 60k`** & **`Tang Mega 138k`** is currently not supported by the education version, and you need to download V1.9.11 or a newer version of the commercial IDE for use. -Lic can be applied on the Gowin official website, or you can use the online Lic service provided by Sipeed. In the IDE, select Float Lic and fill in the following information: - -~~~ ----Server 01--- -ip: 45.33.107.56 -port: 10559 - ----Server 02--- -ip: 106.55.34.119 -port: 10559 -~~~ - -if the ip not work, try use "gowinlic.sipeed.com" domain's IP. - -Install IDE [Click me](https://wiki.sipeed.com/hardware/zh/tang/common-doc/get_started/install-the-ide.html) - - -Example code (Github): - - [60K](https://github.com/sipeed/TangMega-60K-example) - - [138K](https://github.com/sipeed/TangMega-138K-example) - - [TangCores](https://github.com/nand2mario/tangcores) - - Special Thanks: **[nand2mario](https://github.com/nand2mario)** - - *** - - -- Other Learning Resources - - - Free online tutorial: [Verilog Tutorial](https://www.runoob.com/w3cnote/verilog-tutorial.html) (Learn Verilog) - - Free online FPGA tutorial: [Verilog](https://www.asic-world.com/verilog/index.html) (English website) - - Verilog practice website: [HDLBits](https://hdlbits.01xz.net/wiki/Main_Page) (English website) - - Online Gowin Semiconductor reference video tutorials: [Click here](http://www.gowinsemi.com.cn/video_complex.aspx?FId=n15:15:26) - - ## Communication Methods - - - **Reddit** : [reddit.com/r/GowinFPGA/](reddit.com/r/GowinFPGA/) - - **Telegram** : [t.me/sipeed](t.me/sipeed) - - Discussion forum: [maixhub.com/discussion](https://maixhub.com/discussion) - - QQ discussion group: [834585530](https://jq.qq.com/?_wv=1027&k=wBb8XUan) - - Leave a message directly below this page - - Goto**[GitHub project page](https://github.com/sipeed/TangMega-60K-example)**and submit issues - - Business email : [support@sipeed.com](support@sipeed.com) - -## Precautions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ItemPrecautions
Chip ModelThe specific model of the FPGA chip used by Tang Mega 60K is GW5AT-LV60PG484A, and Tang Mega 138K is GW5AST-LV138FPG676A.
Please select the package model PBG484A in the IDE.
Static ElectricityPlease avoid static electricity hitting the PCBA; release the static electricity from your hands before touching the PCBA.
Tolerance VoltageWhen using GPIO pin headers for external communication, ensure that the IO voltage is 3.3V. Excessive voltage will permanently damage the PCBA.
FPC SocketWhen connecting the FPC soft cable, please ensure that the cable is completely and correctly inserted into the socket without any deviation.
Plug and UnplugPlease completely power off before plugging and unplugging.
Avoid Short CircuitPlease avoid any liquid or metal touching the solder pads of the components on the PCBA during the power-on process, otherwise it may cause a short circuit and burn the PCBA.
- - -## Contact - -Tang Console can meet different needs of customers in various scenarios. For technical support and business cooperation, please contact [support@sipeed.com](support@sipeed.com) - - -## Frequently Asked Questions (FAQs) - -### The system does not recognize the onboard debugger - -- Make sure the USB cable is connected to the port marked with ***MCU***. -- Try connecting directly to the computer instead of through a USB HUB. -- Try using a better quality USB cable. -- Try another computer to rule out the computer being the problem. -- Try [update to the latest firmware](#how-to-update-the-firmware-for-the-onboard-debugger) and try again. - -### The UART of the onboard debugger cannot be used - -- Try reinstall FTDI drivers. -- IF the actual baudrate is always four times the set baudrate or the UART continuously outputs garbled characters. try [update to the latest firmware](#how-to-update-the-firmware-for-the-onboard-debugger) and try again. - -### OpenFPGAloader not work - -- Try [update to the latest firmware](#how-to-update-the-firmware-for-the-onboard-debugger) and try again. - -### How to update the firmware for the onboard debugger - -- See [Update the debugger](./../common/update_debugger.md) for details. - -### IDE cannot find the model - -1. The educational version does not support 60K and 138K, please switch to the commercial version. The following image shows the educational version (which does not support 60K); - - - - -2. IDE version is too low to use, update the IDE version ≥ **1.9.9**. - -### How to burn the bitstream to FLASH {#burn_flash} - -1. Setting the **Programmer** as shown in the figure below: - -flash_mode - - -### No Response or Undesirable Pin Phenomenon After Burning - -1. First, ensure that the IDE has selected the correct model - -- For MEGA 60K, **GW5AT-LV60PG484AC1/10**; every parameter in the figure below **MUST** be consistent. - -device_choose - -- For MEGA 138K, **GW5AST-LV138PG484AC1/10**; every parameter in the figure below **MUST** be consistent. - -device_choose - - -2. Then, check your code and the corresponding simulation waveforms to meet the requirements. The GAO tools in GOWIN IDE maybe helpful. For more information, please refer to the GOWIN document [SUG100](https://www.gowinsemi.com/upload/database_doc/1885/document/660bb2366d0b3.pdf)(require login). - +--- +title: Tang Console +keywords: FPGA, Tang, Console, 60K, 138K +update: + - date: 2025-01-23 + version: v0.1 + author: Serika + content: + - Create document +--- + +## Overview + + **Tang Console** is an another dock board for **[Tang Mega 138k](./../tang-mega-138k/mega-138k.md) SOM** and **[Tang Mega 60k](./../tang-mega-60k/mega-60k.md) SOM**. It is designed to be small and compact, and is mechanically compatible with the **Raspberry Pi 5b** **`PCIe HAT`**. In addition, it also contains two 5Gbps USB3 device interfaces and two **2x20-pin header connectors**, two **PMOD connectors**. It can meet the needs of IO expansion and high-speed communication at the same time. + + At the same time, it is also specially designed for retro games. Maybe you can turn it into a retro game console, or even a handheld, whatever you like. + + - Date to Release: Late March , 2025 + + - Pre-sale link: [Click me](https://sipeed.com/tangconsole) + +## Board Features + + - Compatible with various SOMs (**[Mega 138k](./../tang-mega-138k/mega-138k.md)** & **[Mega 60k](./../tang-mega-60k/mega-60k.md)**) + - More compact size, more budget choice + - Compatible with Raspberry Pi 5b PCIe HAT + - PCIe 2.0 x 1 + - USB3 x 2(5Gbps) + - HDMI TX x 1 + - Soft-PHY USB2 x1(480Mbps) + - Onboard 3.7V Li-on battery(1-Series) charge/discharge management + +## Product Appearance + + + +## Block Diagram + +TBD + +## Hardware Parameters + +### SOM Board Parameters + +Please refer to the link below: + - **[Tang Mega 138k](./../tang-mega-138k/mega-138k.md#hardware-parameters) SOM** + - **[Tang Mega 60k](./../tang-mega-60k/mega-60k.md#hardware-parameters) SOM** + + +### Dock board Parameters + +| Item | Quantity | Remarks | +| :------------------ | ---- | ------------------------------------------------- | +| LEDs | 2(3+3) | 3x Battery-Indicator + 3x User LED (2x RGB LED) | +| Buttons | 2+1 | 2x User-KEY + 1x Reconfig-KEY | +| PCIe | 1 | 1-lane @ 8/5Gbps (Depends on SOM) | +| USB3 | 2 | SERDES lane, SuperSpeed @ 5Gbps (Device mode) | +| USB2 | 1 | IO Soft-PHY, HighSpeed @ 480Mbps (Device mode) | +| DVI(HDMI) | 1 | Compatible with HDMI, supports TX, can also be modified to RX | +| PMOD | 2 | Standard spacing (800mil), Compatible with dual PMOD modules | +| ADC | 2 | 2x differential input channels (One is used to measure the battery voltage) | +| RGB Interface | 1 | Supports RGB888 screen & RGB to VGA Converter | +| microSD Slot | 1 | 4-bit SDIO/MMC or SPI mode | +| BATT CONN. | 1 | Supports 3.7V li-on battery, with built-in charge management | +| FAN CONN. | 1 | Supports a 5V fan, maximum power: 1W | +| Speaker CONN. | 1 | Support mono output, 1x 2W Speaker | +| MS5351 | 1 | Provides RefClk for Serdes: control output via onboard UART | +| USB JTAG & UART | 1 | Supports FPGA programming and provides UART function | +| 2x20P headers | 2 | Independent 2x20P pin header, providing up to 2x38 IOs, can be modified to be compatible with DE10-Nano Kit | + + +## Hardware Resources + +- ~~[Specification](https://dl.sipeed.com/shareURL/TANG/Console/01_Specification)~~ +- [Schematics](https://dl.sipeed.com/shareURL/TANG/Console/02_Schematic) +- [PCB BOM](https://dl.sipeed.com/shareURL/TANG/Console/03_Designator_drawing) +- [Dimension Diagram](https://dl.sipeed.com/shareURL/TANG/Console/04_Mechanical_drawing) +- [3D Model](https://dl.sipeed.com/shareURL/TANG/Console/05_3D_file) +- [Some Chip Manuals](https://dl.sipeed.com/shareURL/TANG/Console/07_Datasheet) +- [All PIN Constraints](https://dl.sipeed.com/shareURL/TANG/Console/08_Misc) + +## Getting Started + +Note that **`Tang Mega 60k`** & **`Tang Mega 138k`** is currently not supported by the education version, and you need to download V1.9.11 or a newer version of the commercial IDE for use. +Lic can be applied on the Gowin official website, or you can use the online Lic service provided by Sipeed. In the IDE, select Float Lic and fill in the following information: + +~~~ +---Server 01--- +ip: 45.33.107.56 +port: 10559 + +---Server 02--- +ip: 106.55.34.119 +port: 10559 +~~~ + +if the ip not work, try use "gowinlic.sipeed.com" domain's IP. + +Install IDE [Click me](https://wiki.sipeed.com/hardware/zh/tang/common-doc/get_started/install-the-ide.html) + + +Example code (Github): + - [60K](https://github.com/sipeed/TangMega-60K-example) + - [138K](https://github.com/sipeed/TangMega-138K-example) + - [TangCores](https://github.com/nand2mario/tangcores) + + Special Thanks: **[nand2mario](https://github.com/nand2mario)** + + *** + + +- Other Learning Resources + + - Free online tutorial: [Verilog Tutorial](https://www.runoob.com/w3cnote/verilog-tutorial.html) (Learn Verilog) + - Free online FPGA tutorial: [Verilog](https://www.asic-world.com/verilog/index.html) (English website) + - Verilog practice website: [HDLBits](https://hdlbits.01xz.net/wiki/Main_Page) (English website) + - Online Gowin Semiconductor reference video tutorials: [Click here](http://www.gowinsemi.com.cn/video_complex.aspx?FId=n15:15:26) + + ## Communication Methods + + - **Reddit** : [reddit.com/r/GowinFPGA/](reddit.com/r/GowinFPGA/) + - **Telegram** : [t.me/sipeed](t.me/sipeed) + - Discussion forum: [maixhub.com/discussion](https://maixhub.com/discussion) + - QQ discussion group: [834585530](https://jq.qq.com/?_wv=1027&k=wBb8XUan) + - Leave a message directly below this page + - Goto**[GitHub project page](https://github.com/sipeed/TangMega-60K-example)**and submit issues + - Business email : [support@sipeed.com](support@sipeed.com) + +## Precautions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ItemPrecautions
Chip ModelThe specific model of the FPGA chip used by Tang Mega 60K is GW5AT-LV60PG484A, and Tang Mega 138K is GW5AST-LV138FPG676A.
Please select the package model PBG484A in the IDE.
Static ElectricityPlease avoid static electricity hitting the PCBA; release the static electricity from your hands before touching the PCBA.
Tolerance VoltageWhen using GPIO pin headers for external communication, ensure that the IO voltage is 3.3V. Excessive voltage will permanently damage the PCBA.
FPC SocketWhen connecting the FPC soft cable, please ensure that the cable is completely and correctly inserted into the socket without any deviation.
Plug and UnplugPlease completely power off before plugging and unplugging.
Avoid Short CircuitPlease avoid any liquid or metal touching the solder pads of the components on the PCBA during the power-on process, otherwise it may cause a short circuit and burn the PCBA.
+ + +## Contact + +Tang Console can meet different needs of customers in various scenarios. For technical support and business cooperation, please contact [support@sipeed.com](support@sipeed.com) + + +## Frequently Asked Questions (FAQs) + +### The system does not recognize the onboard debugger + +- Make sure the USB cable is connected to the port marked with ***MCU***. +- Try connecting directly to the computer instead of through a USB HUB. +- Try using a better quality USB cable. +- Try another computer to rule out the computer being the problem. +- Try [update to the latest firmware](#how-to-update-the-firmware-for-the-onboard-debugger) and try again. + +### The UART of the onboard debugger cannot be used + +- Try reinstall FTDI drivers. +- IF the actual baudrate is always four times the set baudrate or the UART continuously outputs garbled characters. try [update to the latest firmware](#how-to-update-the-firmware-for-the-onboard-debugger) and try again. + +### OpenFPGAloader not work + +- Try [update to the latest firmware](#how-to-update-the-firmware-for-the-onboard-debugger) and try again. + +### How to update the firmware for the onboard debugger + +- See [Update the debugger](./../common/update_debugger.md) for details. + +### IDE cannot find the model + +1. The educational version does not support 60K and 138K, please switch to the commercial version. The following image shows the educational version (which does not support 60K); + + + + +2. IDE version is too low to use, update the IDE version ≥ **1.9.9**. + +### How to burn the bitstream to FLASH {#burn_flash} + +1. Setting the **Programmer** as shown in the figure below: + +flash_mode + + +### No Response or Undesirable Pin Phenomenon After Burning + +1. First, ensure that the IDE has selected the correct model + +- For MEGA 60K, **GW5AT-LV60PG484AC1/10**; every parameter in the figure below **MUST** be consistent. + +device_choose + +- For MEGA 138K, **GW5AST-LV138PG484AC1/10**; every parameter in the figure below **MUST** be consistent. + +device_choose + + +2. Then, check your code and the corresponding simulation waveforms to meet the requirements. The GAO tools in GOWIN IDE maybe helpful. For more information, please refer to the GOWIN document [SUG100](https://www.gowinsemi.com/upload/database_doc/1885/document/660bb2366d0b3.pdf)(require login). + ### For more questions and solutions, go to [Related Questions](./../common-doc/questions.md) to view \ No newline at end of file diff --git a/docs/hardware/zh/maixcam/maixcam_pro.md b/docs/hardware/zh/maixcam/maixcam_pro.md index b769c1f4..575833c4 100644 --- a/docs/hardware/zh/maixcam/maixcam_pro.md +++ b/docs/hardware/zh/maixcam/maixcam_pro.md @@ -1,123 +1,123 @@ ---- -title: MaixCAM-Pro -- 快速落地 AI 视觉、听觉应用 ---- - -
- -![maixcam-pro](/static/image/maixcam_pro.png) - -
- -
- 淘宝 - 速卖通 -
- - -## MaixCAM-Pro 简介 - -MaixCAM 是为更好地落地 AI 视觉、听觉和 AIOT 应用而设计的一款硬件产品,一个能快速验证产品原型且能快速量产的平台。 -提供了强大且高性价比的处理器,配套的摄像头、屏幕、WiFi 等,以及完善和非常易用的软件生态。 - -
- 更多功能介绍请看 MaixPy 主页 -
- - - - -**应用场景和人群**: -* **AI算法落地**: AI 算法工程师可以快速将自己的 AI 模型部署到实体硬件(MaixCAM)上,提供易用的模型转换工具和 SDK。 -* **STEM 教育**: 提供易用的 MaixPy SDK 和配套开发工具,以及在线模型训练平台,老师无需软硬件开发,专注教学,学生可以快速上手。 -* **高校科研和教育**: 提供丰富的文档和教程,高校学生各个阶段的学生都有合适的学习路线,RISC-V 和 AI 前沿技术也是科研的好帮手。 -* **创客和工程师的原型开发利器**:精心设计的硬件,丰富的外设,超易用的软件,让你的有趣想法和产品快速落地,不用身陷基础软硬件开发的泥潭。 -* **企业产品升级、落地**:无需昂贵的研发成本快速落地产品,或者用于辅助产品比如产线 QA,旧设备使用 AI 视觉实现智能化等。 -* **竞赛好帮手**:MaixCAM + MaixPy + MaixCDK 可以快速实现很多创新和功能,适合作为比赛指定软硬件平台,选手也可以依靠生态的开发效率赢得比赛, Maix 系列产品和 MaixPy 已经被用在各种比赛中获得奖项。 - - -## MaixCAM-Pro 硬件简介 - -> MaixCAM-Pro 相比 [MaixCAM](./README.md) 重新设计了 PCB 和外壳以及有部分外设升级, 加粗为和 MaixCAM 的不同处 - -| 组件 | 描述 | -| --- | --- | -| CPU 大核 | 1GHz RISC-V C906 处理器(另外还有一个 1GHz ARM A53 核心可二选一使用),跑 Linux | -| CPU 小核 | 700MHz RISC-V C906, 跑 RTOS | -| CPU 低功耗核 | 25~300MHz 8051 处理器,用于低功耗应用 | -| NPU | 1TOPS@INT8, 支持 BF16 模型,算子支持丰富,支持常见模型比如 Mobilenetv2, YOLOv5, YOLOv8等 | -| 内存 | 256MB DDR3 | -| 存储 | TF 卡启动 / SD NAND 启动 | -| 摄像头 | 最高支持 5M 摄像头,官方支持 4M GC4653 和 OS04A10 摄像头(4 lane MIPI CSI 输入,22Pin 接口,支持拆分双路 CSI) | -| 屏幕 | **2.4 寸高清 IPS 电容触摸屏, 分辨率 640x480**(2 lane MIPI DSI 输出,标准 31pin 接口,6pin 电容触摸屏) | -| 音频输出 | 板载PA功放 + **1W 喇叭** | -| 音频输入 | 板载模拟硅麦,可直接收音 | -| 网络 | 板载 WiFi6 + BLE5.4 模组,可定制 以太网版本 | -| USB | Type-C USB2.0,支持Device和Host模式,支持 USB 摄像头 | -| IO 接口 | **2.54mm PMOD 接口, 引出 12 个 IO + Vsys/3.3v/GND 接口 + 1.25mm 6pin扩展接口**| -| 按键 | 1 x RST 按键 + 1 x USER(功能) 按键 + **1 x 电源按钮**| -| LED | 电源指示灯 + 用户 LED + **照明 LED** | -| 编解码 | H.264 / H.265 / MJPEG 硬解码, 支持 2k@30fps 编解码 | -| 外设 | I2C/SPI/UART/ADC/PWM/WDT 等常见外设 | -| 电源 | **独立电源管理芯片AXP2101,支持锂电池充放电管理,并且提供带锂电池版本** | -| 外壳 | **3D 打印+亚克力外壳, 1/4 英寸标准螺纹固定孔** | -| IMU | **板载六轴 IMU 传感器(三轴加速度+三轴角速度)** | -| RTC | **板载 BM8653 RTC 芯片+纽扣电池,断电时间仍然正确** | -| 尺寸 | **无电池版本外壳 67x51x12mm, 带电池版本厚度 16mm** | - - -## MaixCAM 软件生态 - -我们不只是做了硬件,更为 MaixCAM 提供了一套完整的软件生态,包括: - -| 名称 | 描述 | 图片/视频 | -| --- | --- | --- | -| **[MaixPy](https://wiki.sipeed.com/maixpy/)** | Python 开发包, 提供丰富且使用简单的 API,针对 MaixCAM 进行优化,支持硬件加速,提供丰富文档教程 | 请看[MaixPy 主页](https://wiki.sipeed.com/maixpy/) | -| [MaixVision](https://wiki.sipeed.com/maixvision) | AI 视觉 IDE,编程、代码运行、图像实时预览,甚至图形化编程等等,大大降低开发环境搭建难度和使用门槛 | ![MaixVision](../../assets/maixcam/maixvision.jpg) | -| [MaixHub](https://maixhub.com) | 在线 AI 模型训练平台,无需 AI 知识和昂贵的训练设备,一键训练模型,一键部署到 MaixCAM | ![MaixVision](../../assets/maixcam/maixhub.jpg) | -| [MaixCDK](https://github.com/sipeed/MaixCDK) | MaixPy 的 C++版本,熟悉 C/C++ 的开发者立刻上手 | 请看[MaixCDK 主页](https://github.com/sipeed/MaixCDK) | -| [应用商城](https://maixhub.com/app) | 提供各种应用和工具,无需开发直接下载使用,开发者也可以上传分享应用 | 请看 [MaixHub 应用商城](https://maixhub.com/app) | -| [分享广场](https://maixhub.com/share) | 开发者分享经验和项目 | 请看 [MaixHub 分享广场](https://maixhub.com/share) | - - -## 资料汇总 - -### MaixCAM 专属资料(Sipeed 提供) - -* [MaixCAM-Pro 官方文档](https://wiki.sipeed.com/maixcam-pro)(本文档) -* [MaixPy 官方文档](https://wiki.sipeed.com/maixpy/)(Python SDK)([MaixPy 源码](https://github.com/sipeed/MaixPy)) -* [MaixCDK](https://github.com/sipeed/MaixCDK)(C/C++ SDK)([MaixCDK 源码](https://github.com/sipeed/MaixCDK)) -* [系统源码](https://github.com/sipeed/LicheeRV-Nano-Build) -* [硬件相关资料](https://dl.sipeed.com/shareURL/MaixCAM/MaixCAM_Pro) -* 外壳和支架:可以在[外壳文档](./assemble.md) 看到介绍,另外还开源了 外壳、支架等 3D 模型文件,请到[makerworld.com](https://makerworld.com/)(推荐) 或[makerworld.com.cn](https://makerworld.com.cn) 搜索 `MaixCAM`。 -* 接口图: -![maixcam_pro_io](../../assets/maixcam/maixcam_pro_io.png) - - -### 芯片资料 - -MaixCAM-Pro 其基于算能的SG2002 芯片,所以也可以参考它们的资料,也可以参考 Sipeed 的 LiecheeRV-Nano 核心板文档。 ->! 注意:MaixCAM-Pro 可以使用 LicheeRV-Nano 和 SG2002 的资料, 反之 **LicheeRV-Nano 和其它 SG2002 芯片产品没法使用 MaixPy MaixCDK MaixVision 等软件**,请不要购买错误浪费时间和金钱。 -> 如果你希望快速上手开发应用,请选择 MaixCAM, 如果你是资深 Linux 开发者,只想基于 SG2002 原厂资料开发,可以选择 LicheeRV-Nano。 - -* [Datasheet](https://github.com/sophgo/sophgo-doc/releases) (寄存器级别的资料) -* [LicheeRV-Nano 开发板资料](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/1_intro.html) -* [工具链下载](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz) -* [算能 SDK 开发文档汇总](https://developer.sophgo.com/thread/471.html) -* [算能 HDK 开发文档汇总](https://developer.sophgo.com/thread/472.html) -* [算能 TPU 开发文档汇总](https://developer.sophgo.com/thread/473.html) -* [算能 TDL 开发文档汇总](https://developer.sophgo.com/thread/556.html)(基于 TPU 的高层API 封装) - -### 社区资料 - -* [MaixHub 应用商城](https://maixhub.com/app) -* [MaixHub 分享广场](https://maixhub.com/share) -* [makerworld.com](https://makerworld.com/)(推荐) 或者 [makerworld.com.cn](https://makerworld.com.cn) 搜索 `MaixCAM` -* [Bilibili](https://bilibili.com) 搜索 `MaixCAM` 或者 `MaixPy` - -## 购买 - -* [Sipeed 淘宝](https://sipeed.taobao.com/) -* [AliExpress](https://www.aliexpress.com/store/911876460) - - - +--- +title: MaixCAM-Pro -- 快速落地 AI 视觉、听觉应用 +--- + +
+ +![maixcam-pro](/static/image/maixcam_pro.png) + +
+ +
+ 淘宝 + 速卖通 +
+ + +## MaixCAM-Pro 简介 + +MaixCAM 是为更好地落地 AI 视觉、听觉和 AIOT 应用而设计的一款硬件产品,一个能快速验证产品原型且能快速量产的平台。 +提供了强大且高性价比的处理器,配套的摄像头、屏幕、WiFi 等,以及完善和非常易用的软件生态。 + +
+ 更多功能介绍请看 MaixPy 主页 +
+ + + + +**应用场景和人群**: +* **AI算法落地**: AI 算法工程师可以快速将自己的 AI 模型部署到实体硬件(MaixCAM)上,提供易用的模型转换工具和 SDK。 +* **STEM 教育**: 提供易用的 MaixPy SDK 和配套开发工具,以及在线模型训练平台,老师无需软硬件开发,专注教学,学生可以快速上手。 +* **高校科研和教育**: 提供丰富的文档和教程,高校学生各个阶段的学生都有合适的学习路线,RISC-V 和 AI 前沿技术也是科研的好帮手。 +* **创客和工程师的原型开发利器**:精心设计的硬件,丰富的外设,超易用的软件,让你的有趣想法和产品快速落地,不用身陷基础软硬件开发的泥潭。 +* **企业产品升级、落地**:无需昂贵的研发成本快速落地产品,或者用于辅助产品比如产线 QA,旧设备使用 AI 视觉实现智能化等。 +* **竞赛好帮手**:MaixCAM + MaixPy + MaixCDK 可以快速实现很多创新和功能,适合作为比赛指定软硬件平台,选手也可以依靠生态的开发效率赢得比赛, Maix 系列产品和 MaixPy 已经被用在各种比赛中获得奖项。 + + +## MaixCAM-Pro 硬件简介 + +> MaixCAM-Pro 相比 [MaixCAM](./README.md) 重新设计了 PCB 和外壳以及有部分外设升级, 加粗为和 MaixCAM 的不同处 + +| 组件 | 描述 | +| --- | --- | +| CPU 大核 | 1GHz RISC-V C906 处理器(另外还有一个 1GHz ARM A53 核心可二选一使用),跑 Linux | +| CPU 小核 | 700MHz RISC-V C906, 跑 RTOS | +| CPU 低功耗核 | 25~300MHz 8051 处理器,用于低功耗应用 | +| NPU | 1TOPS@INT8, 支持 BF16 模型,算子支持丰富,支持常见模型比如 Mobilenetv2, YOLOv5, YOLOv8等 | +| 内存 | 256MB DDR3 | +| 存储 | TF 卡启动 / SD NAND 启动 | +| 摄像头 | 最高支持 5M 摄像头,官方支持 4M GC4653 和 OS04A10 摄像头(4 lane MIPI CSI 输入,22Pin 接口,支持拆分双路 CSI) | +| 屏幕 | **2.4 寸高清 IPS 电容触摸屏, 分辨率 640x480**(2 lane MIPI DSI 输出,标准 31pin 接口,6pin 电容触摸屏) | +| 音频输出 | 板载PA功放 + **1W 喇叭** | +| 音频输入 | 板载模拟硅麦,可直接收音 | +| 网络 | 板载 WiFi6 + BLE5.4 模组,可定制 以太网版本 | +| USB | Type-C USB2.0,支持Device和Host模式,支持 USB 摄像头 | +| IO 接口 | **2.54mm PMOD 接口, 引出 12 个 IO + Vsys/3.3v/GND 接口 + 1.25mm 6pin扩展接口**| +| 按键 | 1 x RST 按键 + 1 x USER(功能) 按键 + **1 x 电源按钮**| +| LED | 电源指示灯 + 用户 LED + **照明 LED** | +| 编解码 | H.264 / H.265 / MJPEG 硬解码, 支持 2k@30fps 编解码 | +| 外设 | I2C/SPI/UART/ADC/PWM/WDT 等常见外设 | +| 电源 | **独立电源管理芯片AXP2101,支持锂电池充放电管理,并且提供带锂电池版本** | +| 外壳 | **3D 打印+亚克力外壳, 1/4 英寸标准螺纹固定孔** | +| IMU | **板载六轴 IMU 传感器(三轴加速度+三轴角速度)** | +| RTC | **板载 BM8653 RTC 芯片+纽扣电池,断电时间仍然正确** | +| 尺寸 | **无电池版本外壳 67x51x12mm, 带电池版本厚度 16mm** | + + +## MaixCAM 软件生态 + +我们不只是做了硬件,更为 MaixCAM 提供了一套完整的软件生态,包括: + +| 名称 | 描述 | 图片/视频 | +| --- | --- | --- | +| **[MaixPy](https://wiki.sipeed.com/maixpy/)** | Python 开发包, 提供丰富且使用简单的 API,针对 MaixCAM 进行优化,支持硬件加速,提供丰富文档教程 | 请看[MaixPy 主页](https://wiki.sipeed.com/maixpy/) | +| [MaixVision](https://wiki.sipeed.com/maixvision) | AI 视觉 IDE,编程、代码运行、图像实时预览,甚至图形化编程等等,大大降低开发环境搭建难度和使用门槛 | ![MaixVision](../../assets/maixcam/maixvision.jpg) | +| [MaixHub](https://maixhub.com) | 在线 AI 模型训练平台,无需 AI 知识和昂贵的训练设备,一键训练模型,一键部署到 MaixCAM | ![MaixVision](../../assets/maixcam/maixhub.jpg) | +| [MaixCDK](https://github.com/sipeed/MaixCDK) | MaixPy 的 C++版本,熟悉 C/C++ 的开发者立刻上手 | 请看[MaixCDK 主页](https://github.com/sipeed/MaixCDK) | +| [应用商城](https://maixhub.com/app) | 提供各种应用和工具,无需开发直接下载使用,开发者也可以上传分享应用 | 请看 [MaixHub 应用商城](https://maixhub.com/app) | +| [分享广场](https://maixhub.com/share) | 开发者分享经验和项目 | 请看 [MaixHub 分享广场](https://maixhub.com/share) | + + +## 资料汇总 + +### MaixCAM 专属资料(Sipeed 提供) + +* [MaixCAM-Pro 官方文档](https://wiki.sipeed.com/maixcam-pro)(本文档) +* [MaixPy 官方文档](https://wiki.sipeed.com/maixpy/)(Python SDK)([MaixPy 源码](https://github.com/sipeed/MaixPy)) +* [MaixCDK](https://github.com/sipeed/MaixCDK)(C/C++ SDK)([MaixCDK 源码](https://github.com/sipeed/MaixCDK)) +* [系统源码](https://github.com/sipeed/LicheeRV-Nano-Build) +* [硬件相关资料](https://dl.sipeed.com/shareURL/MaixCAM/MaixCAM_Pro) +* 外壳和支架:可以在[外壳文档](./assemble.md) 看到介绍,另外还开源了 外壳、支架等 3D 模型文件,请到[makerworld.com](https://makerworld.com/)(推荐) 或[makerworld.com.cn](https://makerworld.com.cn) 搜索 `MaixCAM`。 +* 接口图: +![maixcam_pro_io](../../assets/maixcam/maixcam_pro_io.png) + + +### 芯片资料 + +MaixCAM-Pro 其基于算能的SG2002 芯片,所以也可以参考它们的资料,也可以参考 Sipeed 的 LiecheeRV-Nano 核心板文档。 +>! 注意:MaixCAM-Pro 可以使用 LicheeRV-Nano 和 SG2002 的资料, 反之 **LicheeRV-Nano 和其它 SG2002 芯片产品没法使用 MaixPy MaixCDK MaixVision 等软件**,请不要购买错误浪费时间和金钱。 +> 如果你希望快速上手开发应用,请选择 MaixCAM, 如果你是资深 Linux 开发者,只想基于 SG2002 原厂资料开发,可以选择 LicheeRV-Nano。 + +* [Datasheet](https://github.com/sophgo/sophgo-doc/releases) (寄存器级别的资料) +* [LicheeRV-Nano 开发板资料](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/1_intro.html) +* [工具链下载](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz) +* [算能 SDK 开发文档汇总](https://developer.sophgo.com/thread/471.html) +* [算能 HDK 开发文档汇总](https://developer.sophgo.com/thread/472.html) +* [算能 TPU 开发文档汇总](https://developer.sophgo.com/thread/473.html) +* [算能 TDL 开发文档汇总](https://developer.sophgo.com/thread/556.html)(基于 TPU 的高层API 封装) + +### 社区资料 + +* [MaixHub 应用商城](https://maixhub.com/app) +* [MaixHub 分享广场](https://maixhub.com/share) +* [makerworld.com](https://makerworld.com/)(推荐) 或者 [makerworld.com.cn](https://makerworld.com.cn) 搜索 `MaixCAM` +* [Bilibili](https://bilibili.com) 搜索 `MaixCAM` 或者 `MaixPy` + +## 购买 + +* [Sipeed 淘宝](https://sipeed.taobao.com/) +* [AliExpress](https://www.aliexpress.com/store/911876460) + + + diff --git a/docs/hardware/zh/maixcam/microscope.md b/docs/hardware/zh/maixcam/microscope.md index 706d3f59..01c65c66 100644 --- a/docs/hardware/zh/maixcam/microscope.md +++ b/docs/hardware/zh/maixcam/microscope.md @@ -1,119 +1,119 @@ ---- -title: 数码显微镜套餐 ---- - - -
- -![maixcam-pro microscope](../../assets/maixcam/maixcam_microscope.png) - -
- - -
- 淘宝 - 速卖通 -
- - -## 数码显微镜套餐 -MaixCAM 显微套件可将你的MaixCAM / MaixCAM Pro 转化为便携式数码显微镜, 在各方面性能上都超越同价位数码显微镜,并具备开源特性,你可以打造属于你自己独有功能的数码显微镜! -MaixCAM 显微套餐 适用于 细小元件放大焊接,生物标本观察,显微堆叠摄影 等场景,更多应用方式等你来挖掘! - -### 单镜头套餐 -仅包含10mm锥形镜头,10mm增距环 和 消光绒贴纸,适用于手持观察,或者你已有通用显微镜支架 -![单镜头套餐](../../assets/maixcam/micro_lens.jpg) - - -使用方法:将maixcam的原镜头旋下,更换上锥形镜头即可 -如果需要更大放大倍数,可以先旋上10mm增距环,再旋上锥形镜头。 -![镜头安装方式](../../assets/maixcam/micro_lens_install.jpg) - -镜头旋得越靠内,倍数越小,镜头距离物体越远(最远大概10cm左右) -镜头旋得越靠外,倍数越大,镜头距离物体越近(最近大概1cm左右) - - -|安装方式 | 光学倍率 | 视野 | 适合观察的物体 | -|-----------|------------------|------------------|------------------| -|10mm锥形镜头旋到最内| 0.25X|20.5x11.5mm|适合观察PCB,焊接FPC| -|10mm锥形镜头旋到最外| 0.6X|8.5x4.8mm |适合观察芯片丝印,细小飞线焊接| -|10mm锥形镜头+10mm增距环旋到最内| 1.0X| 5.1x2.9mm | 适合观察 芯片晶元整体,水蚤等较大浮游生物| -|10mm锥形镜头+10mm增距环旋到最外| 2.0X|2.56x1.44mm| 适合观察 芯片晶元细节,典型生物细胞切片| - -1. 注意这里的倍率是光学倍率,非普通显微镜厂家宣称的几百倍,几千倍的虚标倍率。 -2. 这里的视野以GC4653为例;如果是OS04A10,则等比例放大 3/1.8=1.67倍 - -安装完成后即可在MaixCAM内置的相机APP里对目标物体进行观察,拍摄。 -如果光线不足,也可在APP左侧栏目打开闪光灯进行补光操作。 -如果使用的时候发现画面内泛白,即说明镜头内有炫光,可以裁剪适合的消光绒片段,粘贴于锥形镜头内侧。 -![消光绒抑制炫光](../../assets/maixcam/xiaoguang.jpg) - - - -### 手动支架套餐 -包含以下内容: -1. 镜头:10mm锥形镜头, 10mm增距环 -2. 支架:精密铝合金支架 散件 -3. 生物标本:洋葱表皮标本, 白色载物台 -4. 其它:消光绒 -![支架套餐](../../assets/maixcam/focusing_stand_suit.jpg) - - -镜头的安装方式参见上节。 -支架组装及安放MaixCAM效果如下,在观察电路板等较大目标时一般不需要安装增距环: -![支架套餐](../../assets/maixcam/stand_install.jpg) - -套餐内配有固定支架可以帮助固定MaixCAM Pro,安装方法如下 -![支架套餐](../../assets/maixcam/install_bracket.png) - -用户还可以选配迷你加热台进行焊接操作: -![支架焊接](../../assets/maixcam/stand_solder.jpg) - - -在观察微小生物标本时,一般需要安装增距环,打开补光灯,有必要还可以使能相机APP中的对焦放大功能。 -如下图所示,将附赠的洋葱表皮标本置于白色载物台上,打开补光灯和对焦放大功能观察的效果: -![支架拍摄洋葱表皮](../../assets/maixcam/stand_onion.jpg) - -实拍效果展示: -![洋葱表皮](../../assets/maixcam/onion.jpg) -![松树茎横切](../../assets/maixcam/pine.jpg) - - -### 电动支架套餐 -可能在未来推出,使用步进电机滑台实现电动自动对焦,堆栈拍摄功能。 - - - - -## 效果对比 -### 参数对照表 - -| |**MaixCAM显微套餐**|**当当狸M2B显微镜**| -|-----------|------------------|-----------------| -|Sensor分辨率| 2560x1440 | 1600x1200 | -|显示屏 | 2.4寸 640x480 | 4寸 800x480 | -|交互操作 | 全屏触摸 |物理按键+触摸按键 | -|相对孔径 | F1:2.5 更大更明亮 | F1:4.5 | -|照片拍摄 | ✓ 可调参数 |✓ 固定参数 | -|视频录制拍摄 | MP4 体积更小 | AVI 体积庞大 | -|延时摄影 | ✓ | X | -|光学放大倍率 | 无增距环:0.25~0.6
加增距环: 1.0~2.0 | 0.42~0.92| -|最大放大倍率下
单像素物理尺寸|1um | 2.7um | -|支架 | 稳固铝合金支架 | 普通塑料支架 | - -### 实拍对比 -每张对比图中,上图为 当当狸M2B显微镜 最大倍数拍摄效果,下图为 MaixCAM显微镜 最大倍数拍摄效果 -![c1](../../assets/maixcam/c1.jpg) -![c2](../../assets/maixcam/c2.jpg) -![c3](../../assets/maixcam/c3.jpg) -![c4](../../assets/maixcam/c4.jpg) -![c5](../../assets/maixcam/c5.jpg) -![c6](../../assets/maixcam/c6.jpg) - - - -
- 淘宝 - 速卖通 -
- +--- +title: 数码显微镜套餐 +--- + + +
+ +![maixcam-pro microscope](../../assets/maixcam/maixcam_microscope.png) + +
+ + +
+ 淘宝 + 速卖通 +
+ + +## 数码显微镜套餐 +MaixCAM 显微套件可将你的MaixCAM / MaixCAM Pro 转化为便携式数码显微镜, 在各方面性能上都超越同价位数码显微镜,并具备开源特性,你可以打造属于你自己独有功能的数码显微镜! +MaixCAM 显微套餐 适用于 细小元件放大焊接,生物标本观察,显微堆叠摄影 等场景,更多应用方式等你来挖掘! + +### 单镜头套餐 +仅包含10mm锥形镜头,10mm增距环 和 消光绒贴纸,适用于手持观察,或者你已有通用显微镜支架 +![单镜头套餐](../../assets/maixcam/micro_lens.jpg) + + +使用方法:将maixcam的原镜头旋下,更换上锥形镜头即可 +如果需要更大放大倍数,可以先旋上10mm增距环,再旋上锥形镜头。 +![镜头安装方式](../../assets/maixcam/micro_lens_install.jpg) + +镜头旋得越靠内,倍数越小,镜头距离物体越远(最远大概10cm左右) +镜头旋得越靠外,倍数越大,镜头距离物体越近(最近大概1cm左右) + + +|安装方式 | 光学倍率 | 视野 | 适合观察的物体 | +|-----------|------------------|------------------|------------------| +|10mm锥形镜头旋到最内| 0.25X|20.5x11.5mm|适合观察PCB,焊接FPC| +|10mm锥形镜头旋到最外| 0.6X|8.5x4.8mm |适合观察芯片丝印,细小飞线焊接| +|10mm锥形镜头+10mm增距环旋到最内| 1.0X| 5.1x2.9mm | 适合观察 芯片晶元整体,水蚤等较大浮游生物| +|10mm锥形镜头+10mm增距环旋到最外| 2.0X|2.56x1.44mm| 适合观察 芯片晶元细节,典型生物细胞切片| + +1. 注意这里的倍率是光学倍率,非普通显微镜厂家宣称的几百倍,几千倍的虚标倍率。 +2. 这里的视野以GC4653为例;如果是OS04A10,则等比例放大 3/1.8=1.67倍 + +安装完成后即可在MaixCAM内置的相机APP里对目标物体进行观察,拍摄。 +如果光线不足,也可在APP左侧栏目打开闪光灯进行补光操作。 +如果使用的时候发现画面内泛白,即说明镜头内有炫光,可以裁剪适合的消光绒片段,粘贴于锥形镜头内侧。 +![消光绒抑制炫光](../../assets/maixcam/xiaoguang.jpg) + + + +### 手动支架套餐 +包含以下内容: +1. 镜头:10mm锥形镜头, 10mm增距环 +2. 支架:精密铝合金支架 散件 +3. 生物标本:洋葱表皮标本, 白色载物台 +4. 其它:消光绒 +![支架套餐](../../assets/maixcam/focusing_stand_suit.jpg) + + +镜头的安装方式参见上节。 +支架组装及安放MaixCAM效果如下,在观察电路板等较大目标时一般不需要安装增距环: +![支架套餐](../../assets/maixcam/stand_install.jpg) + +套餐内配有固定支架可以帮助固定MaixCAM Pro,安装方法如下 +![支架套餐](../../assets/maixcam/install_bracket.png) + +用户还可以选配迷你加热台进行焊接操作: +![支架焊接](../../assets/maixcam/stand_solder.jpg) + + +在观察微小生物标本时,一般需要安装增距环,打开补光灯,有必要还可以使能相机APP中的对焦放大功能。 +如下图所示,将附赠的洋葱表皮标本置于白色载物台上,打开补光灯和对焦放大功能观察的效果: +![支架拍摄洋葱表皮](../../assets/maixcam/stand_onion.jpg) + +实拍效果展示: +![洋葱表皮](../../assets/maixcam/onion.jpg) +![松树茎横切](../../assets/maixcam/pine.jpg) + + +### 电动支架套餐 +可能在未来推出,使用步进电机滑台实现电动自动对焦,堆栈拍摄功能。 + + + + +## 效果对比 +### 参数对照表 + +| |**MaixCAM显微套餐**|**当当狸M2B显微镜**| +|-----------|------------------|-----------------| +|Sensor分辨率| 2560x1440 | 1600x1200 | +|显示屏 | 2.4寸 640x480 | 4寸 800x480 | +|交互操作 | 全屏触摸 |物理按键+触摸按键 | +|相对孔径 | F1:2.5 更大更明亮 | F1:4.5 | +|照片拍摄 | ✓ 可调参数 |✓ 固定参数 | +|视频录制拍摄 | MP4 体积更小 | AVI 体积庞大 | +|延时摄影 | ✓ | X | +|光学放大倍率 | 无增距环:0.25~0.6
加增距环: 1.0~2.0 | 0.42~0.92| +|最大放大倍率下
单像素物理尺寸|1um | 2.7um | +|支架 | 稳固铝合金支架 | 普通塑料支架 | + +### 实拍对比 +每张对比图中,上图为 当当狸M2B显微镜 最大倍数拍摄效果,下图为 MaixCAM显微镜 最大倍数拍摄效果 +![c1](../../assets/maixcam/c1.jpg) +![c2](../../assets/maixcam/c2.jpg) +![c3](../../assets/maixcam/c3.jpg) +![c4](../../assets/maixcam/c4.jpg) +![c5](../../assets/maixcam/c5.jpg) +![c6](../../assets/maixcam/c6.jpg) + + + +
+ 淘宝 + 速卖通 +
+ diff --git a/docs/hardware/zh/sidebar.yaml b/docs/hardware/zh/sidebar.yaml index d928faed..6cd60770 100644 --- a/docs/hardware/zh/sidebar.yaml +++ b/docs/hardware/zh/sidebar.yaml @@ -1,624 +1,624 @@ -items: -- label: Maix Zero - items: - - label: Maix M0 - items: - - label: M0sense 开发板 - file: ./maixzero/sense/maix_zero_sense.md - - label: M0sense 基础使用 - file: ./maixzero/sense/start.md - - label: Maix M0P - items: - - label: M0P - file: ./maixzero/m0p/m0p.md - - label: M0P Dock - file: ./maixzero/m0p/m0p_dock.md - - label: Maix M0S - file: ./maixzero/m0s/m0s.md -- label: Maix-I - items: - - label: Maix M1 - items: - - label: M1 模块 - items: - - label: M1/M1w - file: maix/core_module.md - - label: M1n - file: maix/M1n.md - - label: M1 开发板 - items: - - label: Maix Bit - file: maix/maixpy_develop_kit_board/maix_bit.md - - label: Maix Dock(M1/M1W) - file: maix/maixpy_develop_kit_board/Maix_dock.md - - label: Maix Duino - file: maix/maixpy_develop_kit_board/maix_duino.md - - label: Maix Nano - file: maix/maixpy_develop_kit_board/maix_nano.md - - label: Maix Cube - file: maix/maixpy_develop_kit_board/maix_cube.md - - label: Maix Amigo - file: maix/maixpy_develop_kit_board/maix_Amigo.md - - label: Maix HAT - file: maix/maixpy_develop_kit_board/maix_hat.md - - label: Maix Go(售罄) - file: maix/maixpy_develop_kit_board/maix_go.md - - label: Maix M1s - items: - - label: M1s 模块 - file: maix/m1s/m1s_module.md - - label: M1s 开发板 - items: - - label: 简介 - file: maix/m1s/m1s_dock.md - - label: 上手使用 - file: maix/m1s/other/start.md - - label: 其他事项(摄像头和外壳) - file: maix/m1s/other/others.md -- label: Maix-II - items: - - label: MaixII-Dock - file: maixII/M2/resources.md - items: - - label: 烧录系统 - file: maixII/M2/flash.md - - label: 训练自己的 AI 模型 - file: maixII/M2/maixhub_train.md - - label: 基础使用 - file: maixII/M2/usage.md - - label: 其他事项 - file: maixII/M2/other.md - - label: 使用 MaixPy3 开发 - file: ../../soft/maixpy3/zh/tools/0.MaixII-Dock.ipynb - target: _blank - - label: 使用 OpenCV - file: maixII/M2/opencv.md - - label: FAQ - file: maixII/M2/faq.md - - label: MaixII-S - file: maixII/M2S/V833.md - items: - - label: 板级资源介绍 - file: maixII/M2S/reources.md - - label: MaixII-Sense - file: maixII/M2A/maixsense.md - items: - - label: 烧录系统 - file: maixII/M2A/flash_system.md - - label: 配置系统 - file: maixII/M2A/config_system.md - - label: 基本使用 - file: maixII/M2A/Usages.md - - label: 连接MaixPy3 - file: ../../soft/maixpy3/zh/tools/maixsense.md - target: _blank -- label: Maix-III - items: - - label: Maix-III AXera-Pi - file: maixIII/ax-pi/axpi.md - items: - - label: 产品上手指南 - file: maixIII/ax-pi/flash_system.md - - label: 系统使用手册 - file: maixIII/ax-pi/basic_usage.md - - label: 试试 Python 编程 - file: maixIII/ax-pi/python_api.ipynb - - label: 开始 C/C++ 编程 - file: maixIII/ax-pi/dev_prepare.md - - label: AI 开发指南 - url: /ai/zh/deploy/ax-pi.html - - label: 常见问题(FAQ) - file: maixIII/ax-pi/faq_axpi.md -- label: Maix-IV - items: - # - label: Maix M4N - # file: maixIV/m4n/m4n.md - - label: Maix M4N-DOCK - file: maixIV/m4ndock/m4ndock.md - items: - - label: 产品上手指南 - file: maixIV/m4ndock/quick-start.md - - label: 系统烧录指南 - file: maixIV/m4ndock/system-update.md - - label: AI 模型部署 - file: maixIV/m4ndock/axmodel-deploy.md - - label: FAQ - file: maixIV/m4ndock/FAQ.md -- label: MaixCAM - items: - - label: MaixCAM 介绍和资料 - file: maixcam/README.md - - label: MaixCAM-Pro 介绍和资料 - file: maixcam/maixcam_pro.md - - label: 摄像头介绍及拍摄效果 - file: maixcam/cameras.md - - label: ToF/热成像模块介绍 - file: maixcam/tof_thermal.md - - label: 数码显微镜套餐 - file: maixcam/microscope.md - - label: 外壳使用注意点 - file: maixcam/assemble.md - - label: 系统镜像烧录 - file: maixcam/os.md - - label: 使用 MaixPy 开发 - url: https://wiki.sipeed.com/maixpy/ - - label: 使用 MaixCDK 开发 - file: maixcam/maixcdk.md - - label: 常见问题 FAQ - file: maixcam/faq.md -- label: LicheePi - items: - - label: LicheePI 4A - items: - - label: Lichee Module 4A - file: lichee/th1520/lm4a.md - - label: Lichee Cluster 4A - file: lichee/th1520/lc4a/lc4a.md - - label: Lichee Console 4A - items: - - label: 组装指南 - file: lichee/th1520/lcon4a/setup_guide.md - - label: 镜像集合 - file: lichee/th1520/lcon4a/3_images.md - - label: 烧录镜像 - file: lichee/th1520/lcon4a/4_burn_image.md - file: lichee/th1520/lcon4a/lcon4a.md - - label: Lichee Book 4A - items: - - label: 烧录镜像 - file: lichee/th1520/lbook4a/4_burn_image.md - file: lichee/th1520/lbook4a/lbook4a.md - - label: Lichee PI 4A - collapsed: false - items: - - label: 板卡介绍 - file: lichee/th1520/lpi4a/1_intro.md - - label: 开箱体验 - file: lichee/th1520/lpi4a/2_unbox.md - - label: 镜像集合 - file: lichee/th1520/lpi4a/3_images.md - - label: 烧录镜像 - file: lichee/th1520/lpi4a/4_burn_image.md - - label: 桌面系统基础使用 - file: lichee/th1520/lpi4a/5_desktop.md - - label: 外设使用 - file: lichee/th1520/lpi4a/6_peripheral.md - - label: 系统开发 - items: - - label: revyos - file: lichee/th1520/lpi4a/7_develop_revyos.md - - label: Linux 主线 - file: lichee/th1520/lpi4a/7_develop_mainline.md - - label: Android - file: lichee/th1520/lpi4a/7_develop_android.md - - label: THead Yocto - file: lichee/th1520/lpi4a/7_develop_thead.md - - label: OpenHarmony (编写中) - # file: - - label: OpenWRT - file: lichee/th1520/lpi4a/7_develop_openwrt.md - - label: 典型应用 - file: lichee/th1520/lpi4a/8_application.md - - label: 玄铁多媒体AI平台 - file: lichee/th1520/lpi4a/13_XTAI.md - - label: CPU 跑分测试 - file: lichee/th1520/lpi4a/9_benchmark.md - - label: 硬件测试报告 - file: lichee/th1520/lpi4a/10_test_report.md - - label: 常见问题 - file: lichee/th1520/lpi4a/12_faq.md - - label: 致谢 - file: lichee/th1520/lpi4a/11_credits.md - - label: LicheePI 3A - items: - - label: Lichee Module 3A - file: lichee/K1/lm3a.md - - label: Lichee Cluster 3A - file: lichee/K1/lc3a/lc3a.md - - label: Lichee PI 3A - collapsed: false - items: - - label: 板卡介绍 - file: lichee/K1/lpi3a/1_intro.md - - label: 开箱体验 - file: lichee/K1/lpi3a/2_unbox.md - - label: 镜像烧录 - file: lichee/K1/lpi3a/3_burn_image.md - - label: 外设使用 - file: lichee/K1/lpi3a/4_peripheral.md - - label: 系统开发 - file: lichee/K1/lpi3a/5_develop.md - - label: 典型应用 - file: lichee/K1/lpi3a/6_application.md - - label: 常见问题 - file: lichee/K1/lpi3a/7_faq.md - - label: 致谢 - file: lichee/K1/lpi3a/8_credits.md - - label: LicheePI RV - items: - - label: 板卡介绍 - collapsed: false - items: - - label: LicheePI RV - file: lichee/RV/RV.md - - label: LicheePI RV 86 Panel - file: lichee/RV/86_panel.md - - label: LicheePI RV Dock - file: lichee/RV/Dock.md - - label: 烧录系统 - file: lichee/RV/flash.md - - label: 基础上手 - file: lichee/RV/user.md - - label: 常见问题 - file: lichee/RV/problems.md - - label: 使用 Ubuntu 镜像 - file: lichee/RV/ubuntu.md - - label: LicheeRV Nano - items: - - label: 板卡介绍 - file: lichee/RV_Nano/1_intro.md - - label: 开箱体验 - file: lichee/RV_Nano/2_unbox.md - - label: 镜像集合 - file: lichee/RV_Nano/3_images.md - - label: 烧录镜像 - file: lichee/RV_Nano/4_burn_image.md - - label: 外设使用 - file: lichee/RV_Nano/5_peripheral.md - - label: 系统开发 - file: lichee/RV_Nano/6_develop_mainline.md - - label: 板卡测试 - file: lichee/RV_Nano/7_test_report.md - - label: MMF开发指南 - file: lichee/RV_Nano/8_mmf_development_guide.md - - label: LicheePI Zero - file: lichee/Zero/Zero.md - - label: LicheePI Nano - file: lichee/Nano/Nano.md - - label: LicheePI ZeroPlus - file: lichee/ZeroPlus/ZeroPlus.md -- label: Tang FPGA - items: - - label: Tang Nano - items: - - label: Tang Nano 1K - file: tang/Tang-Nano-1K/Nano-1k.md - - label: Tang Nano 4k - file: tang/Tang-Nano-4K/Nano-4K.md - - label: Tang Nano 9K - file: tang/Tang-Nano-9K/Nano-9K.md - - label: Tang Nano 20K - items: - - label: 介绍 - file: tang/tang-nano-20k/nano-20k.md - - label: 开箱 - file: tang/tang-nano-20k/example/unbox.md - target: _blank - - label: Tang Nano (售罄) - file: tang/Tang-Nano/Nano.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 例程汇总 - file: tang/common-doc/examples.md - target: _blank - - label: 常见问题 - file: tang/common-doc/questions.md - - label: 更新板载调试器 - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Primer - items: - - label: Tang Primer 20K - items: - - label: 板卡介绍 - file: tang/tang-primer-20k/primer-20k.md - - label: 开箱使用 - file: tang/tang-primer-20k/start.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 例程汇总 - file: tang/tang-primer-20k/example.md - - label: 常见问题 - file: tang/common-doc/questions.md - - label: 更新板载调试器 - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Primer 25K - items: - - label: 板卡介绍 - file: tang/tang-primer-25k/primer-25k.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 常见问题 - file: tang/common-doc/questions.md - target: _blank - - label: Tang Primer 15K - items: - - label: 板卡介绍 - file: tang/tang-primer-15k/primer-15k.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 常见问题 - file: tang/common-doc/questions.md - - label: 更新板载调试器 - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Primer (售罄) - file: tang/Tang-primer/Tang-primer.md - items: - - label: 板卡介绍 - file: tang/Tang-primer/readme.md - - label: 安装 TD - items: - - label: Windows安装TD - file: tang/Tang-primer/get_started/install_TD_win.md - - label: Linux安装TD - file: tang/Tang-primer/get_started/install_Linux.md - - label: 使用FPGA点灯 - file: tang/Tang-primer/fpga/led.md - - label: 搭建蜂鸟开发环境 - file: tang/Tang-primer/get_started/E203.md - - label: FPGA码流烧录 - file: tang/Tang-primer/get_started/fpga_download.md - - label: Tang Mega - items: - - label: Tang Mega 138K Pro - items: - - label: 板卡介绍 - file: tang/tang-mega-138k/mega-138k-pro.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 常见问题 - file: tang/common-doc/questions.md - - label: 更新板载调试器 - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Mega 138K - items: - - label: 板卡介绍 - file: tang/tang-mega-138k/mega-138k.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 常见问题 - file: tang/common-doc/questions.md - - label: 更新板载调试器 - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Mega 60K - items: - - label: 板卡介绍 - file: tang/tang-mega-60k/mega-60k.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 常见问题 - file: tang/common-doc/questions.md - - label: 更新板载调试器 - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang Console - items: - - label: 板卡介绍 - file: tang/tang-console/mega-console.md - - label: 安装 IDE - file: tang/common-doc/get_started/install-the-ide.md - - label: 常见问题 - file: tang/common-doc/questions.md - - label: 更新板载调试器 - file: tang/common-doc/update_debugger.md - target: _blank - - label: Tang PMOD - file: tang/tang-PMOD/FPGA_PMOD.md -- label: MaixSense - file: maixsense/readme.md - items: - - label: MaixSense-a010 - file: maixsense/maixsense-a010/maixsense-a010.md - - label: MaixSense-a075v - file: maixsense/maixsense-a075v/maixsense-a075v.md -- label: SLogic - items: - - label: SLogic Combo 8 - items: - - label: 简介 - file: logic_analyzer/combo8/readme.md - - label: 基础操作 - file: logic_analyzer/combo8/basic_operation.md - - label: 作为逻辑分析仪使用 - file: logic_analyzer/combo8/use_logic_function.md - - label: 作为CKLink使用 - file: logic_analyzer/combo8/use_cklink_function.md - - label: 作为DAPLink使用 - file: logic_analyzer/combo8/use_daplink_function.md - - label: 作为串口模块使用 - file: logic_analyzer/combo8/use_fouruart_function.md - - label: 更新固件 - file: logic_analyzer/combo8/update_firmware.md - - label: 常见问题(FAQ) - file: logic_analyzer/combo8/faq.md -- label: KVM - items: - - label: NanoKVM Cube - items: - - label: 简介 - file: kvm/NanoKVM/introduction.md - - label: 快速上手 - file: kvm/NanoKVM/quick_start.md - - label: 用户指南 - file: kvm/NanoKVM/user_guide.md - - label: 二次开发 - file: kvm/NanoKVM/development.md - - label: 网络 - items: - - label: Tailscale - file: kvm/NanoKVM/network/tailscale.md - - label: frp - file: kvm/NanoKVM/network/frp.md - - label: 静态 IP - file: kvm/NanoKVM/network/static_ip.md - - label: 系统 - items: - - label: 系统介绍 - file: kvm/NanoKVM/system/introduction.md - - label: 烧录镜像 - file: kvm/NanoKVM/system/flashing.md - - label: 更新应用 - file: kvm/NanoKVM/system/updating.md - - label: 配置文件 - file: kvm/NanoKVM/system/configuration.md - - label: FAQ - file: kvm/NanoKVM/faq.md - - label: NanoKVM PCIe - items: - - label: 简介 - file: kvm/NanoKVM_PCIe/introduction.md - - label: 快速上手 - file: kvm/NanoKVM_PCIe/quick_start.md - - label: 用户指南 - file: kvm/NanoKVM_PCIe/user_guide.md - - label: 二次开发 - file: kvm/NanoKVM/development.md - - label: 网络 - items: - - label: Tailscale - file: kvm/NanoKVM/network/tailscale.md - - label: frp - file: kvm/NanoKVM/network/frp.md - - label: 静态 IP - file: kvm/NanoKVM/network/static_ip.md - - label: 系统 - items: - - label: 系统介绍 - file: kvm/NanoKVM/system/introduction.md - - label: 烧录镜像 - file: kvm/NanoKVM/system/flashing.md - - label: 更新应用 - file: kvm/NanoKVM/system/updating.md - - label: 配置文件 - file: kvm/NanoKVM/system/configuration.md - - label: FAQ - file: kvm/NanoKVM/faq.md - - label: NanoKVM USB - items: - - label: 简介 - file: kvm/NanoKVM_USB/introduction.md - - label: 快速上手 - file: kvm/NanoKVM_USB/quick_start.md - - label: 本地部署 - file: kvm/NanoKVM_USB/deployment.md - - label: FAQ - file: kvm/NanoKVM_USB/faq.md -# - label: Maix Audio -# items: -# - label: MA USB 16 -- label: Longan - items: - - label: LonganPI 3H - items: - - label: 板卡介绍 - file: longan/h618/lpi3h/1_intro.md - - label: 镜像集合 - file: longan/h618/lpi3h/3_images.md - - label: 烧录镜像 - file: longan/h618/lpi3h/4_burn_image.md - - label: 桌面系统基础使用 - file: longan/h618/lpi3h/5_desktop.md - - label: 外设使用 - file: longan/h618/lpi3h/6_peripheral.md - - label: 系统开发 - file: longan/h618/lpi3h/7_develop_mainline.md - - label: 板卡测试 - file: longan/h618/lpi3h/8_test_report.md - - label: Longan Nano - file: longan/Nano/Longan_nano.md - collapsed: false - items: - - label: PIO配置 - file: longan/Nano/get_started/pio.md - - label: 点灯测试 - file: longan/Nano/get_started/blink.md - - label: DEBUG 调试 - file: longan/Nano/get_started/debug.md - items: - - label: 使用 Sipeed 调试器 - file: longan/Nano/get_started/sipeed-debugger.md - - label: 使用 RV-LINK - file: longan/Nano/get_started/rv-link.md - - label: 示例 - items: - - label: 串口输出 - file: longan/Nano/examples/printf.md - - label: 播放 Badapple - file: longan/Nano/examples/badapple.md -- label: MaixFace - items: - - label: MF-ST40 人脸识别模块 - file: maixface/mfst40/mfst40.md - - label: MF 资料 - items: - - label: MF 人脸识别模块 PCB 设计注意事项 - file: maixface/mf_ml_module/mf_precautions.md - - label: 点我前往 github 查看全部资料 - url: https://github.com/sipeed/MF1-User-Manual -- label: 外设模组 - items: - - label: SP-MOD外设模组 - items: - - label: 转接板类 - collapsed: false - items: - - label: SP-Extender - file: modules_spmod/spmod_extender.md - - label: SP-Grove - file: modules_spmod/spmod_grove.md - - label: SP-FPC - file: modules_spmod/spmod_fpc.md - - label: SP-MicArray - file: modules_spmod/spmod_micarray.md - - label: SP-JotStick - file: modules_spmod/spmod_joystick.md - - label: SP-Servo - file: modules_spmod/spmod_servo.md - - label: SP-TypeC - file: '' - - label: 传感器类 - collapsed: false - items: - - label: SP-Weather - file: modules_spmod/spmod_weather.md - - label: SP-TOF-1P - file: modules_spmod/spmod_tof.md - - label: 通信类 - collapsed: false - items: - - label: SP-BT - file: modules_spmod/spmod_bt.md - - label: SP-LoRa - file: modules_spmod/spmod_lora.md - - label: SP-PSRAM - file: modules_spmod/spmod_psram.md - - label: SP-RFID - file: modules_spmod/spmod_rfid.md - - label: SP-Ethernet - file: modules_spmod/spmod_ethernet.md - - label: 显示类 - collapsed: false - items: - - label: SP-LCD 1.14 - file: modules_spmod/spmod_lcd1.14.md - - label: SP-Eink - file: modules_spmod/spmod_eink.md - - label: 模块 & 调试器 - items: - - label: 调试器 & 串口模块 - file: modules/debugger_and_uart.md - - label: 模块 - collapsed: false - items: - - label: 摄像头 - file: modules/camera_summary.md - - label: 麦克风模块 - items: - - label: 麦克风阵列 - file: modules/micarray.md - - label: Sipeed Gamepad - file: modules/Gamepad.md +items: +- label: Maix Zero + items: + - label: Maix M0 + items: + - label: M0sense 开发板 + file: ./maixzero/sense/maix_zero_sense.md + - label: M0sense 基础使用 + file: ./maixzero/sense/start.md + - label: Maix M0P + items: + - label: M0P + file: ./maixzero/m0p/m0p.md + - label: M0P Dock + file: ./maixzero/m0p/m0p_dock.md + - label: Maix M0S + file: ./maixzero/m0s/m0s.md +- label: Maix-I + items: + - label: Maix M1 + items: + - label: M1 模块 + items: + - label: M1/M1w + file: maix/core_module.md + - label: M1n + file: maix/M1n.md + - label: M1 开发板 + items: + - label: Maix Bit + file: maix/maixpy_develop_kit_board/maix_bit.md + - label: Maix Dock(M1/M1W) + file: maix/maixpy_develop_kit_board/Maix_dock.md + - label: Maix Duino + file: maix/maixpy_develop_kit_board/maix_duino.md + - label: Maix Nano + file: maix/maixpy_develop_kit_board/maix_nano.md + - label: Maix Cube + file: maix/maixpy_develop_kit_board/maix_cube.md + - label: Maix Amigo + file: maix/maixpy_develop_kit_board/maix_Amigo.md + - label: Maix HAT + file: maix/maixpy_develop_kit_board/maix_hat.md + - label: Maix Go(售罄) + file: maix/maixpy_develop_kit_board/maix_go.md + - label: Maix M1s + items: + - label: M1s 模块 + file: maix/m1s/m1s_module.md + - label: M1s 开发板 + items: + - label: 简介 + file: maix/m1s/m1s_dock.md + - label: 上手使用 + file: maix/m1s/other/start.md + - label: 其他事项(摄像头和外壳) + file: maix/m1s/other/others.md +- label: Maix-II + items: + - label: MaixII-Dock + file: maixII/M2/resources.md + items: + - label: 烧录系统 + file: maixII/M2/flash.md + - label: 训练自己的 AI 模型 + file: maixII/M2/maixhub_train.md + - label: 基础使用 + file: maixII/M2/usage.md + - label: 其他事项 + file: maixII/M2/other.md + - label: 使用 MaixPy3 开发 + file: ../../soft/maixpy3/zh/tools/0.MaixII-Dock.ipynb + target: _blank + - label: 使用 OpenCV + file: maixII/M2/opencv.md + - label: FAQ + file: maixII/M2/faq.md + - label: MaixII-S + file: maixII/M2S/V833.md + items: + - label: 板级资源介绍 + file: maixII/M2S/reources.md + - label: MaixII-Sense + file: maixII/M2A/maixsense.md + items: + - label: 烧录系统 + file: maixII/M2A/flash_system.md + - label: 配置系统 + file: maixII/M2A/config_system.md + - label: 基本使用 + file: maixII/M2A/Usages.md + - label: 连接MaixPy3 + file: ../../soft/maixpy3/zh/tools/maixsense.md + target: _blank +- label: Maix-III + items: + - label: Maix-III AXera-Pi + file: maixIII/ax-pi/axpi.md + items: + - label: 产品上手指南 + file: maixIII/ax-pi/flash_system.md + - label: 系统使用手册 + file: maixIII/ax-pi/basic_usage.md + - label: 试试 Python 编程 + file: maixIII/ax-pi/python_api.ipynb + - label: 开始 C/C++ 编程 + file: maixIII/ax-pi/dev_prepare.md + - label: AI 开发指南 + url: /ai/zh/deploy/ax-pi.html + - label: 常见问题(FAQ) + file: maixIII/ax-pi/faq_axpi.md +- label: Maix-IV + items: + # - label: Maix M4N + # file: maixIV/m4n/m4n.md + - label: Maix M4N-DOCK + file: maixIV/m4ndock/m4ndock.md + items: + - label: 产品上手指南 + file: maixIV/m4ndock/quick-start.md + - label: 系统烧录指南 + file: maixIV/m4ndock/system-update.md + - label: AI 模型部署 + file: maixIV/m4ndock/axmodel-deploy.md + - label: FAQ + file: maixIV/m4ndock/FAQ.md +- label: MaixCAM + items: + - label: MaixCAM 介绍和资料 + file: maixcam/README.md + - label: MaixCAM-Pro 介绍和资料 + file: maixcam/maixcam_pro.md + - label: 摄像头介绍及拍摄效果 + file: maixcam/cameras.md + - label: ToF/热成像模块介绍 + file: maixcam/tof_thermal.md + - label: 数码显微镜套餐 + file: maixcam/microscope.md + - label: 外壳使用注意点 + file: maixcam/assemble.md + - label: 系统镜像烧录 + file: maixcam/os.md + - label: 使用 MaixPy 开发 + url: https://wiki.sipeed.com/maixpy/ + - label: 使用 MaixCDK 开发 + file: maixcam/maixcdk.md + - label: 常见问题 FAQ + file: maixcam/faq.md +- label: LicheePi + items: + - label: LicheePI 4A + items: + - label: Lichee Module 4A + file: lichee/th1520/lm4a.md + - label: Lichee Cluster 4A + file: lichee/th1520/lc4a/lc4a.md + - label: Lichee Console 4A + items: + - label: 组装指南 + file: lichee/th1520/lcon4a/setup_guide.md + - label: 镜像集合 + file: lichee/th1520/lcon4a/3_images.md + - label: 烧录镜像 + file: lichee/th1520/lcon4a/4_burn_image.md + file: lichee/th1520/lcon4a/lcon4a.md + - label: Lichee Book 4A + items: + - label: 烧录镜像 + file: lichee/th1520/lbook4a/4_burn_image.md + file: lichee/th1520/lbook4a/lbook4a.md + - label: Lichee PI 4A + collapsed: false + items: + - label: 板卡介绍 + file: lichee/th1520/lpi4a/1_intro.md + - label: 开箱体验 + file: lichee/th1520/lpi4a/2_unbox.md + - label: 镜像集合 + file: lichee/th1520/lpi4a/3_images.md + - label: 烧录镜像 + file: lichee/th1520/lpi4a/4_burn_image.md + - label: 桌面系统基础使用 + file: lichee/th1520/lpi4a/5_desktop.md + - label: 外设使用 + file: lichee/th1520/lpi4a/6_peripheral.md + - label: 系统开发 + items: + - label: revyos + file: lichee/th1520/lpi4a/7_develop_revyos.md + - label: Linux 主线 + file: lichee/th1520/lpi4a/7_develop_mainline.md + - label: Android + file: lichee/th1520/lpi4a/7_develop_android.md + - label: THead Yocto + file: lichee/th1520/lpi4a/7_develop_thead.md + - label: OpenHarmony (编写中) + # file: + - label: OpenWRT + file: lichee/th1520/lpi4a/7_develop_openwrt.md + - label: 典型应用 + file: lichee/th1520/lpi4a/8_application.md + - label: 玄铁多媒体AI平台 + file: lichee/th1520/lpi4a/13_XTAI.md + - label: CPU 跑分测试 + file: lichee/th1520/lpi4a/9_benchmark.md + - label: 硬件测试报告 + file: lichee/th1520/lpi4a/10_test_report.md + - label: 常见问题 + file: lichee/th1520/lpi4a/12_faq.md + - label: 致谢 + file: lichee/th1520/lpi4a/11_credits.md + - label: LicheePI 3A + items: + - label: Lichee Module 3A + file: lichee/K1/lm3a.md + - label: Lichee Cluster 3A + file: lichee/K1/lc3a/lc3a.md + - label: Lichee PI 3A + collapsed: false + items: + - label: 板卡介绍 + file: lichee/K1/lpi3a/1_intro.md + - label: 开箱体验 + file: lichee/K1/lpi3a/2_unbox.md + - label: 镜像烧录 + file: lichee/K1/lpi3a/3_burn_image.md + - label: 外设使用 + file: lichee/K1/lpi3a/4_peripheral.md + - label: 系统开发 + file: lichee/K1/lpi3a/5_develop.md + - label: 典型应用 + file: lichee/K1/lpi3a/6_application.md + - label: 常见问题 + file: lichee/K1/lpi3a/7_faq.md + - label: 致谢 + file: lichee/K1/lpi3a/8_credits.md + - label: LicheePI RV + items: + - label: 板卡介绍 + collapsed: false + items: + - label: LicheePI RV + file: lichee/RV/RV.md + - label: LicheePI RV 86 Panel + file: lichee/RV/86_panel.md + - label: LicheePI RV Dock + file: lichee/RV/Dock.md + - label: 烧录系统 + file: lichee/RV/flash.md + - label: 基础上手 + file: lichee/RV/user.md + - label: 常见问题 + file: lichee/RV/problems.md + - label: 使用 Ubuntu 镜像 + file: lichee/RV/ubuntu.md + - label: LicheeRV Nano + items: + - label: 板卡介绍 + file: lichee/RV_Nano/1_intro.md + - label: 开箱体验 + file: lichee/RV_Nano/2_unbox.md + - label: 镜像集合 + file: lichee/RV_Nano/3_images.md + - label: 烧录镜像 + file: lichee/RV_Nano/4_burn_image.md + - label: 外设使用 + file: lichee/RV_Nano/5_peripheral.md + - label: 系统开发 + file: lichee/RV_Nano/6_develop_mainline.md + - label: 板卡测试 + file: lichee/RV_Nano/7_test_report.md + - label: MMF开发指南 + file: lichee/RV_Nano/8_mmf_development_guide.md + - label: LicheePI Zero + file: lichee/Zero/Zero.md + - label: LicheePI Nano + file: lichee/Nano/Nano.md + - label: LicheePI ZeroPlus + file: lichee/ZeroPlus/ZeroPlus.md +- label: Tang FPGA + items: + - label: Tang Nano + items: + - label: Tang Nano 1K + file: tang/Tang-Nano-1K/Nano-1k.md + - label: Tang Nano 4k + file: tang/Tang-Nano-4K/Nano-4K.md + - label: Tang Nano 9K + file: tang/Tang-Nano-9K/Nano-9K.md + - label: Tang Nano 20K + items: + - label: 介绍 + file: tang/tang-nano-20k/nano-20k.md + - label: 开箱 + file: tang/tang-nano-20k/example/unbox.md + target: _blank + - label: Tang Nano (售罄) + file: tang/Tang-Nano/Nano.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 例程汇总 + file: tang/common-doc/examples.md + target: _blank + - label: 常见问题 + file: tang/common-doc/questions.md + - label: 更新板载调试器 + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Primer + items: + - label: Tang Primer 20K + items: + - label: 板卡介绍 + file: tang/tang-primer-20k/primer-20k.md + - label: 开箱使用 + file: tang/tang-primer-20k/start.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 例程汇总 + file: tang/tang-primer-20k/example.md + - label: 常见问题 + file: tang/common-doc/questions.md + - label: 更新板载调试器 + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Primer 25K + items: + - label: 板卡介绍 + file: tang/tang-primer-25k/primer-25k.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 常见问题 + file: tang/common-doc/questions.md + target: _blank + - label: Tang Primer 15K + items: + - label: 板卡介绍 + file: tang/tang-primer-15k/primer-15k.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 常见问题 + file: tang/common-doc/questions.md + - label: 更新板载调试器 + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Primer (售罄) + file: tang/Tang-primer/Tang-primer.md + items: + - label: 板卡介绍 + file: tang/Tang-primer/readme.md + - label: 安装 TD + items: + - label: Windows安装TD + file: tang/Tang-primer/get_started/install_TD_win.md + - label: Linux安装TD + file: tang/Tang-primer/get_started/install_Linux.md + - label: 使用FPGA点灯 + file: tang/Tang-primer/fpga/led.md + - label: 搭建蜂鸟开发环境 + file: tang/Tang-primer/get_started/E203.md + - label: FPGA码流烧录 + file: tang/Tang-primer/get_started/fpga_download.md + - label: Tang Mega + items: + - label: Tang Mega 138K Pro + items: + - label: 板卡介绍 + file: tang/tang-mega-138k/mega-138k-pro.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 常见问题 + file: tang/common-doc/questions.md + - label: 更新板载调试器 + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Mega 138K + items: + - label: 板卡介绍 + file: tang/tang-mega-138k/mega-138k.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 常见问题 + file: tang/common-doc/questions.md + - label: 更新板载调试器 + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Mega 60K + items: + - label: 板卡介绍 + file: tang/tang-mega-60k/mega-60k.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 常见问题 + file: tang/common-doc/questions.md + - label: 更新板载调试器 + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang Console + items: + - label: 板卡介绍 + file: tang/tang-console/mega-console.md + - label: 安装 IDE + file: tang/common-doc/get_started/install-the-ide.md + - label: 常见问题 + file: tang/common-doc/questions.md + - label: 更新板载调试器 + file: tang/common-doc/update_debugger.md + target: _blank + - label: Tang PMOD + file: tang/tang-PMOD/FPGA_PMOD.md +- label: MaixSense + file: maixsense/readme.md + items: + - label: MaixSense-a010 + file: maixsense/maixsense-a010/maixsense-a010.md + - label: MaixSense-a075v + file: maixsense/maixsense-a075v/maixsense-a075v.md +- label: SLogic + items: + - label: SLogic Combo 8 + items: + - label: 简介 + file: logic_analyzer/combo8/readme.md + - label: 基础操作 + file: logic_analyzer/combo8/basic_operation.md + - label: 作为逻辑分析仪使用 + file: logic_analyzer/combo8/use_logic_function.md + - label: 作为CKLink使用 + file: logic_analyzer/combo8/use_cklink_function.md + - label: 作为DAPLink使用 + file: logic_analyzer/combo8/use_daplink_function.md + - label: 作为串口模块使用 + file: logic_analyzer/combo8/use_fouruart_function.md + - label: 更新固件 + file: logic_analyzer/combo8/update_firmware.md + - label: 常见问题(FAQ) + file: logic_analyzer/combo8/faq.md +- label: KVM + items: + - label: NanoKVM Cube + items: + - label: 简介 + file: kvm/NanoKVM/introduction.md + - label: 快速上手 + file: kvm/NanoKVM/quick_start.md + - label: 用户指南 + file: kvm/NanoKVM/user_guide.md + - label: 二次开发 + file: kvm/NanoKVM/development.md + - label: 网络 + items: + - label: Tailscale + file: kvm/NanoKVM/network/tailscale.md + - label: frp + file: kvm/NanoKVM/network/frp.md + - label: 静态 IP + file: kvm/NanoKVM/network/static_ip.md + - label: 系统 + items: + - label: 系统介绍 + file: kvm/NanoKVM/system/introduction.md + - label: 烧录镜像 + file: kvm/NanoKVM/system/flashing.md + - label: 更新应用 + file: kvm/NanoKVM/system/updating.md + - label: 配置文件 + file: kvm/NanoKVM/system/configuration.md + - label: FAQ + file: kvm/NanoKVM/faq.md + - label: NanoKVM PCIe + items: + - label: 简介 + file: kvm/NanoKVM_PCIe/introduction.md + - label: 快速上手 + file: kvm/NanoKVM_PCIe/quick_start.md + - label: 用户指南 + file: kvm/NanoKVM_PCIe/user_guide.md + - label: 二次开发 + file: kvm/NanoKVM/development.md + - label: 网络 + items: + - label: Tailscale + file: kvm/NanoKVM/network/tailscale.md + - label: frp + file: kvm/NanoKVM/network/frp.md + - label: 静态 IP + file: kvm/NanoKVM/network/static_ip.md + - label: 系统 + items: + - label: 系统介绍 + file: kvm/NanoKVM/system/introduction.md + - label: 烧录镜像 + file: kvm/NanoKVM/system/flashing.md + - label: 更新应用 + file: kvm/NanoKVM/system/updating.md + - label: 配置文件 + file: kvm/NanoKVM/system/configuration.md + - label: FAQ + file: kvm/NanoKVM/faq.md + - label: NanoKVM USB + items: + - label: 简介 + file: kvm/NanoKVM_USB/introduction.md + - label: 快速上手 + file: kvm/NanoKVM_USB/quick_start.md + - label: 本地部署 + file: kvm/NanoKVM_USB/deployment.md + - label: FAQ + file: kvm/NanoKVM_USB/faq.md +# - label: Maix Audio +# items: +# - label: MA USB 16 +- label: Longan + items: + - label: LonganPI 3H + items: + - label: 板卡介绍 + file: longan/h618/lpi3h/1_intro.md + - label: 镜像集合 + file: longan/h618/lpi3h/3_images.md + - label: 烧录镜像 + file: longan/h618/lpi3h/4_burn_image.md + - label: 桌面系统基础使用 + file: longan/h618/lpi3h/5_desktop.md + - label: 外设使用 + file: longan/h618/lpi3h/6_peripheral.md + - label: 系统开发 + file: longan/h618/lpi3h/7_develop_mainline.md + - label: 板卡测试 + file: longan/h618/lpi3h/8_test_report.md + - label: Longan Nano + file: longan/Nano/Longan_nano.md + collapsed: false + items: + - label: PIO配置 + file: longan/Nano/get_started/pio.md + - label: 点灯测试 + file: longan/Nano/get_started/blink.md + - label: DEBUG 调试 + file: longan/Nano/get_started/debug.md + items: + - label: 使用 Sipeed 调试器 + file: longan/Nano/get_started/sipeed-debugger.md + - label: 使用 RV-LINK + file: longan/Nano/get_started/rv-link.md + - label: 示例 + items: + - label: 串口输出 + file: longan/Nano/examples/printf.md + - label: 播放 Badapple + file: longan/Nano/examples/badapple.md +- label: MaixFace + items: + - label: MF-ST40 人脸识别模块 + file: maixface/mfst40/mfst40.md + - label: MF 资料 + items: + - label: MF 人脸识别模块 PCB 设计注意事项 + file: maixface/mf_ml_module/mf_precautions.md + - label: 点我前往 github 查看全部资料 + url: https://github.com/sipeed/MF1-User-Manual +- label: 外设模组 + items: + - label: SP-MOD外设模组 + items: + - label: 转接板类 + collapsed: false + items: + - label: SP-Extender + file: modules_spmod/spmod_extender.md + - label: SP-Grove + file: modules_spmod/spmod_grove.md + - label: SP-FPC + file: modules_spmod/spmod_fpc.md + - label: SP-MicArray + file: modules_spmod/spmod_micarray.md + - label: SP-JotStick + file: modules_spmod/spmod_joystick.md + - label: SP-Servo + file: modules_spmod/spmod_servo.md + - label: SP-TypeC + file: '' + - label: 传感器类 + collapsed: false + items: + - label: SP-Weather + file: modules_spmod/spmod_weather.md + - label: SP-TOF-1P + file: modules_spmod/spmod_tof.md + - label: 通信类 + collapsed: false + items: + - label: SP-BT + file: modules_spmod/spmod_bt.md + - label: SP-LoRa + file: modules_spmod/spmod_lora.md + - label: SP-PSRAM + file: modules_spmod/spmod_psram.md + - label: SP-RFID + file: modules_spmod/spmod_rfid.md + - label: SP-Ethernet + file: modules_spmod/spmod_ethernet.md + - label: 显示类 + collapsed: false + items: + - label: SP-LCD 1.14 + file: modules_spmod/spmod_lcd1.14.md + - label: SP-Eink + file: modules_spmod/spmod_eink.md + - label: 模块 & 调试器 + items: + - label: 调试器 & 串口模块 + file: modules/debugger_and_uart.md + - label: 模块 + collapsed: false + items: + - label: 摄像头 + file: modules/camera_summary.md + - label: 麦克风模块 + items: + - label: 麦克风阵列 + file: modules/micarray.md + - label: Sipeed Gamepad + file: modules/Gamepad.md diff --git a/docs/hardware/zh/tang/common-doc/update_debugger.md b/docs/hardware/zh/tang/common-doc/update_debugger.md index 6fbee764..b0a1ab9e 100644 --- a/docs/hardware/zh/tang/common-doc/update_debugger.md +++ b/docs/hardware/zh/tang/common-doc/update_debugger.md @@ -1,444 +1,444 @@ ---- -title: 更新板载调试器(固件) -keywords: Sipeed, Gowin, Tang, FPGA, Nano, Primer, Mega -update: - - date: 2025-02-18 - version: v0.8 - author: Serika - content: - - First release ---- -## 概述 - -所有 Sipeed Tang 系列均有板载调试器(独立的 SOM 除外)。调试器是具有自己固件的独立 **MCU**。用户可以自行更新这些调试器的固件以获取功能更新和错误修复。 - -我们需要使用 [**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/) 对这些板载调试器主控进行编程,有关 **博流MCU** 的 ***芯片 & 工具*** 的文档可以在此处找到 [【点我跳转】](https://dev.bouffalolab.com/document/)。 - -这里有一个简略的步骤说明: -- 首先,根据您所使用的操作系统,选择下载并安装相应版本的**更新工具**,如[**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/); -- 从 [**Sipeed 下载站**](https://dl.sipeed.com/shareURL/TANG/Debugger/onboard) 获取适用于您主板的更新调试器固件,请注意区分您的开发板的型号; -- 请参阅 [**博流智能官方网站**](https://dev.bouffalolab.com/download/) 上相应的官方文档来更新板载调试器的固件; -- 对于 **Windows** 用户,下方有详细的分步骤教程。其他操作系统的用户请参考 **Windows** 的步骤并根据实际情况相应变通。 - -## 教程 - ### 硬件准备 - - - 要将板载调试器置于 **DFU 模式**,请在打开电路板电源或使用电缆连接电路板的调试 USB 端口之前`按下` ***更新按钮*** 或`短接`相应的 ***测试点***。 - - 请参阅下文了解相应的 ***更新按钮*** 和 ***测试点***。 - - #### **Tang nano 系列** - - - **Tang nano 1K** - - 2 个 **`测试点`** 位于PCB的 **TOP** 面的左上角,按键`KEY-B` 后面。 - - - - - - CSS Indentation - - - -
- 点击此处查看nano 1K的下载器测试点的位置 - -
- -
- - - - - -- **Tang nano 4K** - - 2 个 **`测试点`** 位于PCB的 **TOP** 面的左上角,`USB-C` 连接器后面。 - - - - - - CSS Indentation - - - -
- 点击此处查看nano 4K的下载器测试点的位置 - -
- -
- - - - -- **Tang nano 9K** - - 2 个 **`测试点`** 位于PCB的 **TOP** 面的中间左侧,`USB-C` 连接器后面。 - - - - - - CSS Indentation - - - -
- 点击此处查看nano 9K的下载器测试点的位置 - -
- -
- - - -- **Tang nano 20K** - - **`更新按钮`** 位于PCB的 **TOP** 面的 HDMI 连接器后面的,旁边有丝印 **`UPDATE`**。 - - - - - - CSS Indentation - - - -
- 点击此处查看nano 20K的下载器测更新按钮的位置 - -
- -
- - - - - #### **Tang Primer 系列** - - - **Tang Primer 20K Dock** - - **`更新按钮`** 位于PCB的 **TOP** 面的 HDMI 连接器后面的,旁边有丝印 **`UPDATE`**。 - - - - - - CSS Indentation - - - -
- 点击此处查看Primer 20K Dock的下载器测更新按钮的位置 - -
- -
- - - - - **Tang Primer 25K Dock** - - 2 个 **`测试点`** 位于PCB的 **BOT** 面的左上角,丝印标记为 `3V3` 和 `TDO`。 - - - - - - CSS Indentation - - - -
- 点击此处查看Primer 25K Dock的下载器测试点的位置 - -
- -
- - - - - - ~~**Tang Primer 15K Dock**~~(尚未发布) - - ***TBD*** - - - - - - CSS Indentation - - - -
- 点击此处查看Primer 15K Dock的下载器测试点的位置 - -
- -
- - - - #### **Tang MEGA 系列**(包含Tang Console) - - - **Tang MEGA NEO Dock**(包含 Tang MEGA 138K Dock) - - **`更新按钮`** 位于 PCB 的 **TOP** 面 `USB-C` 连接器下方,丝印标记为 **DEBUG-USB2**。 - - - - - - CSS Indentation - - - -
- 点击此处查看MEGA NEO Dock的下载器测更新按钮的位置 - -
- -
- - - - - - **Tang MEGA 138K Pro Dock** - - **`更新按钮`** 位于 `USB-C` 连接器的左侧,在PCB的 **TOP** 面标记为 **JATG|UART**。 - - - - - - CSS Indentation - - - -
- 点击此处查看MEGA 138K Pro Dock的下载器更新按钮的位置 - -
- -
- - - - - - **Tang Console** - - **`更新按钮`** 位于 `USB-C` 连接器的另一侧,在 PCB 的 **TOP** 面,是两个按钮中较矮的一个,丝印标记为 **`BOOT`**。 - - - - - - CSS Indentation - - - -
- 点击此处查看 Console 的下载器测试点的位置 - -
- -
- - - - -*** - -### 软件准备 - -- 首先从 [**BouffaloLab 官网**](https://dev.bouffalolab.com/download/) 下载 **BouffaloLabDevCube**,最新版本为 **`1.9.0`** (2025 年 2 月 10 日) - -
- 点击查看图片详情 - -
-
- - - - -- 解压下载的内容,并执行相应的可执行文件,在 Windows 下是 **`BLDevCube.exe`** - -
- 点击查看图片详情 - -
-
- - - -- 在弹出的窗口中,选择芯片型号为 BL616/618 - -
- 点击查看图片详情 - -
-
- - - -- 在新窗口中,选中 ***Single download option*** 下方的 **`Enable`** 复选框。单击 **`Browse`** 按钮选择要更新的固件档案 - -
- 点击查看图片详情 - -
-
- - - -- 让板载调试器进入 **DFU模式**,它应该是 BL702 或 BL616 的 CDC-ACM 设备。在 Windows 上这会注册一个新的 COM 端口,在此示例中为 **`COM12`** - - - 关于如何让板载调试器进入 **DFU模式**,请参考上一章节[【点我跳转】](#硬件准备) - - - 对于 Linux 用户,CDC-ACM 通常注册为 `/dev/ttyACMx` - - - 对于 macOS 用户,它可能注册为 `/dev/tty.usbmodemxxxx` 或`/dev/cu.usbmodemxxxx` (每个 `x` 代表一位数字) - -
- 点击查看图片详情 - -
-
- - - - -- 然后设置 **BLDevCube**,如下所示。设置固件档案位置、DFU 模式的端口,然后单击 **`Open UART`**,最后单击 **`Create & Download`**。 - -
- 点击查看图片详情 - -
-
- - -- 等待下载完成,如下图所示绿色进度条到100%,下方 **log** 提示 **`[All Success]`** 即为下载完成 - -
- 点击查看图片详情 - -
-
- - - -*** - -### 确认结果 - -完成以上步骤后,我们需要确认板载调试器的固件是否烧录成功。通常重新插拔 USB 线或重新给板子上电即可确认。 - -- 在 Windows 中,可以在设备管理器中看到两个新设备:**`USB Converter A`** 和 **`USB Converter B`**。 - -
- 点击查看图片详情 - -
-
- - - -- 要确认调试器固件版本,请双击任意一个 **`USB Converter`**,然后转到“Details”选项卡。然后从下拉菜单中选择 **`父系`** 或 **`上层`** 选项: - -
- 点击查看图片详情 - -
-
- - - -- 如下图所示,最后 10 位数字 **`2025102315`** 是调试器固件版本的序列号。 Linux 和 macOS 用户可以使用命令 **`dmesg`** 检查内核日志中的序列号。 - -
- 点击查看图片详情 - -
-
- - -### 最新固件 - -所有Tang系列板载调试器的最新固件序列号记录在这里: - -| 开发板型号 | MCU 型号 | 下载链接 |串号| SHA256 杂凑/校验 | - | ------------- | ---------- | -------------------------------------------------------------------------------------------------------------| --------- |-----------------------------------------------------------------------------------------------------------------------------------------------| - | nano 1K | BL702 | N/A | N/A |N/A | - | nano 4K | BL702 | N/A | N/A |N/A | - | Nano 9K | BL702 | N/A | N/A |N/A | - | Primer 20K | BL702 | N/A | N/A |N/A | - | | | | | | - | nano 20K | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.bin) |2025012315 |[bl616_fpga_partner_20kNano.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.sha256) | - | Primer 25K | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.bin) |2025012315 |[bl616_fpga_partner_25kDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.sha256) | - | Mega NEO | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.bin) |2025012315 |[bl616_fpga_partner_NeoDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.sha256) | - | Mega 138K Pro | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.bin) |2025012315 |[bl616_fpga_partner_138kproDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.sha256)| - | Console | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.bin) |2025012319 |[bl616_fpga_partner_Console.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.sha256) | - -### 故障排除 -如果您在使用过程中遇到任何问题,或者对文档有任何意见或建议,请随时向我们反馈。联系方式如下。 - -- **交流论坛: [maixhub.com/discussion](https://maixhub.com/discussion)** -- **QQ 交流群:[834585530](https://jq.qq.com/?_wv=1027&k=wBb8XUan)** -- **Telegram** : [t.me/sipeed](t.me/sipeed) -- **Reddit** : [reddit.com/r/GowinFPGA/](reddit.com/r/GowinFPGA/) -- 商业邮箱 : [support@sipeed.com](support@sipeed.com) -- 直接本页下方留言 - ->在大多数情况下,对于MCU相关的问题 ***博流智能*** 的官方文档足以进行故障排除。[【点击这里】](https://dev.bouffalolab.com/document/)以访问相关文档。 - -#### 常见问题 -- TBD,等待收集反馈后再添加。 - +--- +title: 更新板载调试器(固件) +keywords: Sipeed, Gowin, Tang, FPGA, Nano, Primer, Mega +update: + - date: 2025-02-18 + version: v0.8 + author: Serika + content: + - First release +--- +## 概述 + +所有 Sipeed Tang 系列均有板载调试器(独立的 SOM 除外)。调试器是具有自己固件的独立 **MCU**。用户可以自行更新这些调试器的固件以获取功能更新和错误修复。 + +我们需要使用 [**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/) 对这些板载调试器主控进行编程,有关 **博流MCU** 的 ***芯片 & 工具*** 的文档可以在此处找到 [【点我跳转】](https://dev.bouffalolab.com/document/)。 + +这里有一个简略的步骤说明: +- 首先,根据您所使用的操作系统,选择下载并安装相应版本的**更新工具**,如[**BouffaloLabDevCube**](https://dev.bouffalolab.com/download/); +- 从 [**Sipeed 下载站**](https://dl.sipeed.com/shareURL/TANG/Debugger/onboard) 获取适用于您主板的更新调试器固件,请注意区分您的开发板的型号; +- 请参阅 [**博流智能官方网站**](https://dev.bouffalolab.com/download/) 上相应的官方文档来更新板载调试器的固件; +- 对于 **Windows** 用户,下方有详细的分步骤教程。其他操作系统的用户请参考 **Windows** 的步骤并根据实际情况相应变通。 + +## 教程 + ### 硬件准备 + + + 要将板载调试器置于 **DFU 模式**,请在打开电路板电源或使用电缆连接电路板的调试 USB 端口之前`按下` ***更新按钮*** 或`短接`相应的 ***测试点***。 + + 请参阅下文了解相应的 ***更新按钮*** 和 ***测试点***。 + + #### **Tang nano 系列** + + - **Tang nano 1K** + + 2 个 **`测试点`** 位于PCB的 **TOP** 面的左上角,按键`KEY-B` 后面。 + + + + + + CSS Indentation + + + +
+ 点击此处查看nano 1K的下载器测试点的位置 + +
+ +
+ + + + + +- **Tang nano 4K** + + 2 个 **`测试点`** 位于PCB的 **TOP** 面的左上角,`USB-C` 连接器后面。 + + + + + + CSS Indentation + + + +
+ 点击此处查看nano 4K的下载器测试点的位置 + +
+ +
+ + + + +- **Tang nano 9K** + + 2 个 **`测试点`** 位于PCB的 **TOP** 面的中间左侧,`USB-C` 连接器后面。 + + + + + + CSS Indentation + + + +
+ 点击此处查看nano 9K的下载器测试点的位置 + +
+ +
+ + + +- **Tang nano 20K** + + **`更新按钮`** 位于PCB的 **TOP** 面的 HDMI 连接器后面的,旁边有丝印 **`UPDATE`**。 + + + + + + CSS Indentation + + + +
+ 点击此处查看nano 20K的下载器测更新按钮的位置 + +
+ +
+ + + + + #### **Tang Primer 系列** + + - **Tang Primer 20K Dock** + + **`更新按钮`** 位于PCB的 **TOP** 面的 HDMI 连接器后面的,旁边有丝印 **`UPDATE`**。 + + + + + + CSS Indentation + + + +
+ 点击此处查看Primer 20K Dock的下载器测更新按钮的位置 + +
+ +
+ + + + - **Tang Primer 25K Dock** + + 2 个 **`测试点`** 位于PCB的 **BOT** 面的左上角,丝印标记为 `3V3` 和 `TDO`。 + + + + + + CSS Indentation + + + +
+ 点击此处查看Primer 25K Dock的下载器测试点的位置 + +
+ +
+ + + + + - ~~**Tang Primer 15K Dock**~~(尚未发布) + + ***TBD*** + + + + + + CSS Indentation + + + +
+ 点击此处查看Primer 15K Dock的下载器测试点的位置 + +
+ +
+ + + + #### **Tang MEGA 系列**(包含Tang Console) + + - **Tang MEGA NEO Dock**(包含 Tang MEGA 138K Dock) + + **`更新按钮`** 位于 PCB 的 **TOP** 面 `USB-C` 连接器下方,丝印标记为 **DEBUG-USB2**。 + + + + + + CSS Indentation + + + +
+ 点击此处查看MEGA NEO Dock的下载器测更新按钮的位置 + +
+ +
+ + + + + - **Tang MEGA 138K Pro Dock** + + **`更新按钮`** 位于 `USB-C` 连接器的左侧,在PCB的 **TOP** 面标记为 **JATG|UART**。 + + + + + + CSS Indentation + + + +
+ 点击此处查看MEGA 138K Pro Dock的下载器更新按钮的位置 + +
+ +
+ + + + + - **Tang Console** + + **`更新按钮`** 位于 `USB-C` 连接器的另一侧,在 PCB 的 **TOP** 面,是两个按钮中较矮的一个,丝印标记为 **`BOOT`**。 + + + + + + CSS Indentation + + + +
+ 点击此处查看 Console 的下载器测试点的位置 + +
+ +
+ + + + +*** + +### 软件准备 + +- 首先从 [**BouffaloLab 官网**](https://dev.bouffalolab.com/download/) 下载 **BouffaloLabDevCube**,最新版本为 **`1.9.0`** (2025 年 2 月 10 日) + +
+ 点击查看图片详情 + +
+
+ + + + +- 解压下载的内容,并执行相应的可执行文件,在 Windows 下是 **`BLDevCube.exe`** + +
+ 点击查看图片详情 + +
+
+ + + +- 在弹出的窗口中,选择芯片型号为 BL616/618 + +
+ 点击查看图片详情 + +
+
+ + + +- 在新窗口中,选中 ***Single download option*** 下方的 **`Enable`** 复选框。单击 **`Browse`** 按钮选择要更新的固件档案 + +
+ 点击查看图片详情 + +
+
+ + + +- 让板载调试器进入 **DFU模式**,它应该是 BL702 或 BL616 的 CDC-ACM 设备。在 Windows 上这会注册一个新的 COM 端口,在此示例中为 **`COM12`** + + - 关于如何让板载调试器进入 **DFU模式**,请参考上一章节[【点我跳转】](#硬件准备) + + - 对于 Linux 用户,CDC-ACM 通常注册为 `/dev/ttyACMx` + + - 对于 macOS 用户,它可能注册为 `/dev/tty.usbmodemxxxx` 或`/dev/cu.usbmodemxxxx` (每个 `x` 代表一位数字) + +
+ 点击查看图片详情 + +
+
+ + + + +- 然后设置 **BLDevCube**,如下所示。设置固件档案位置、DFU 模式的端口,然后单击 **`Open UART`**,最后单击 **`Create & Download`**。 + +
+ 点击查看图片详情 + +
+
+ + +- 等待下载完成,如下图所示绿色进度条到100%,下方 **log** 提示 **`[All Success]`** 即为下载完成 + +
+ 点击查看图片详情 + +
+
+ + + +*** + +### 确认结果 + +完成以上步骤后,我们需要确认板载调试器的固件是否烧录成功。通常重新插拔 USB 线或重新给板子上电即可确认。 + +- 在 Windows 中,可以在设备管理器中看到两个新设备:**`USB Converter A`** 和 **`USB Converter B`**。 + +
+ 点击查看图片详情 + +
+
+ + + +- 要确认调试器固件版本,请双击任意一个 **`USB Converter`**,然后转到“Details”选项卡。然后从下拉菜单中选择 **`父系`** 或 **`上层`** 选项: + +
+ 点击查看图片详情 + +
+
+ + + +- 如下图所示,最后 10 位数字 **`2025102315`** 是调试器固件版本的序列号。 Linux 和 macOS 用户可以使用命令 **`dmesg`** 检查内核日志中的序列号。 + +
+ 点击查看图片详情 + +
+
+ + +### 最新固件 + +所有Tang系列板载调试器的最新固件序列号记录在这里: + +| 开发板型号 | MCU 型号 | 下载链接 |串号| SHA256 杂凑/校验 | + | ------------- | ---------- | -------------------------------------------------------------------------------------------------------------| --------- |-----------------------------------------------------------------------------------------------------------------------------------------------| + | nano 1K | BL702 | N/A | N/A |N/A | + | nano 4K | BL702 | N/A | N/A |N/A | + | Nano 9K | BL702 | N/A | N/A |N/A | + | Primer 20K | BL702 | N/A | N/A |N/A | + | | | | | | + | nano 20K | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.bin) |2025012315 |[bl616_fpga_partner_20kNano.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_20kNano.sha256) | + | Primer 25K | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.bin) |2025012315 |[bl616_fpga_partner_25kDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_25kDock.sha256) | + | Mega NEO | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.bin) |2025012315 |[bl616_fpga_partner_NeoDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_NeoDock.sha256) | + | Mega 138K Pro | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.bin) |2025012315 |[bl616_fpga_partner_138kproDock.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_138kproDock.sha256)| + | Console | BL616 | [点我](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.bin) |2025012319 |[bl616_fpga_partner_Console.sha256](https://api.dl.sipeed.com/TANG/Debugger/onboard/BL616/202501231x/bl616_fpga_partner_Console.sha256) | + +### 故障排除 +如果您在使用过程中遇到任何问题,或者对文档有任何意见或建议,请随时向我们反馈。联系方式如下。 + +- **交流论坛: [maixhub.com/discussion](https://maixhub.com/discussion)** +- **QQ 交流群:[834585530](https://jq.qq.com/?_wv=1027&k=wBb8XUan)** +- **Telegram** : [t.me/sipeed](t.me/sipeed) +- **Reddit** : [reddit.com/r/GowinFPGA/](reddit.com/r/GowinFPGA/) +- 商业邮箱 : [support@sipeed.com](support@sipeed.com) +- 直接本页下方留言 + +>在大多数情况下,对于MCU相关的问题 ***博流智能*** 的官方文档足以进行故障排除。[【点击这里】](https://dev.bouffalolab.com/document/)以访问相关文档。 + +#### 常见问题 +- TBD,等待收集反馈后再添加。 + diff --git a/docs/soft/maixpy3/zh/usage/vision/maixpy3-example.ipynb b/docs/soft/maixpy3/zh/usage/vision/maixpy3-example.ipynb index c1e0012e..76f21104 100644 --- a/docs/soft/maixpy3/zh/usage/vision/maixpy3-example.ipynb +++ b/docs/soft/maixpy3/zh/usage/vision/maixpy3-example.ipynb @@ -1,872 +1,872 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "f4231c63", - "metadata": {}, - "source": [ - "---\n", - "\n", - "title: MaixPy3 基本使用示例\n", - "keywords: jupyter, MaixPy3 IDE, 图像获取,图像显示,图像处理\n", - "desc: maixpy 如何显示一张图,如何获取一张图,如何修改一张图\n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "id": "82e6fe35", - "metadata": {}, - "source": [ - "| 更新时间 | 负责人 | 内容 | 备注 |\n", - "| --- | --- | --- | --- |\n", - "| 2022年1月4日 | dianjixz | 初次编写文档 | --- |\n", - "| 2022年1月18日 | dianjixz | 修订文档文档 | 使用 Jupyter notebook 进行编写文档 |\n", - "| 2022年3月22日 | rui | 修改部分表述错误 | ---- |\n", - "| 2022年5月7日 | dls | 增加更多常用 API 说明 | ---- |\n", - "| 2022年5月11日 | dls | 0.4.8 后 image.new 取代 image.Image().new | 支持 new load open 接口 |\n", - "| 2022年5月25日 | dls | 0.4.9 后 加入了 opencv 的 Canny 、 flip, tobytes 支持导出 jpg bmp png 等数据,修复了 RGB 贴图透明度混合|\n", - "| 2022年5月31日 | dls | 0.5.0 后 找色的 LAB 阈值顺序发生了改变 |\n", - "| 2022年7月04日 | dls | 0.5.1 后 修复了 find_blobs 函数,原先采用 cv 实现,现改为 mv 实现 |\n", - "\n", - "\n", - "## \"hello world!\"\n", - "\n", - "确保目标机器已经安装 maixpy3 软件包。\n", - "\n", - "使用 maixpy3 包在图像上显示 \"hello world!\" 。\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ae04d801", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDi6KKK+ZP3EKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKBWCiiigYUUUUAFFFFABRRRQRze9yhRRRQGvNYKKKKCwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigSSQUUUUBuFFFFBPM+W4UUUUBzPluFFFFBYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAKFJXgZ9DmjIJJAzWjZaUt1peoX5lKfZNvy4znNZy524PAbvVNNHPTrRm2l0EoooqTdhRRRQMKKKKAFwDkNwDSgFmbC5A96MfKNvzYq/omlrrWsRWJm8ssrHpnoM1Sjd2OatVjSg6j2Rn9yG4zSgE5IXIHvSuu0sindsYjP41f0PSl1vWYbEzmIsrN0z0GaFG7sKrXjTouq9jNop0i7JGT+6SKbUnStgooooGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFOjXfIqf3iBQJsCMFcrgH3pOMjbzitDWtMXRtWlsll8w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tYfL6r++XkdjXNhv4emei0oklAIE8vPUbzWrqJ7nkPB14aYSpaPZ6peh0fyeFI+WB1xgQApyLb8ehyK5sse7bpSSTx0oLFm+bJbuSc5pd2BjduXsMdahyudVHDezXNKV5Pd/10N7wW4TxTbs7BVEb4J7fLWHLnzZCTkF2x+dNVmRlaNyjDqR2pPVs5J60OWli4UOXESq90l9wlS2/wDx8RE/3x/OoqUHFZnUo7nR+O3WTxfckMHQxx4I/wB0VzmWxvBwykEU4s8rMzMXc9SaYCCMg/UVpOd3c5MLh44ejGk3eysdH9q03xEqtqt79k1BBg3Gwt9o9Bjtinf8IH4jf50tYfL6r++Xketc4GOMYAHYUCSUDAnlweo3mqU11OR4PE01bDVLLs1f7jvfCNnY6L4gitr0LJqsscmRuwLXAPfoc1wkvE8p37mMjbmx05oDMJN2WLn+LdyPxpnAAVT8op1KiasisNgalLESrSnfmt/XoWdPgtrm+iivLjyIWPzSYzj0H41oeI7K2s75Ft8RSEfvLMHcIeODu7561jj1A+Y96UsWADEsvYk8ms4ySVjoqYecsRGqp6LoMoooqDvCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooJtcKKKKA2Ciiigm0ZO4UUUUCai3sLSUUUF26hRRRQEddQooooEnFdQooooBxUgooooK3CiiigNgooooE9Qooop2Ek0FFFFIF7ugUUUU7A1rcKKKKQvdtYKKKKLA0ou7CilpKBOfucwUUUd6DS4UUUUEWi27oKKKKCW4yk4BRRRQU+V2QUUUUAuXVWCiiig0CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//Z" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Fri Jan 14 16:48:03 2022 )\n" - ] - } - ], - "source": [ - "from maix import display, image \n", - "hello_img = image.new(size = (240, 240), \n", - " color = (255, 0, 0), mode = \"RGB\") #创建一张红色背景图\n", - "hello_img.draw_string(30, 115, \"hello world!\", scale = 1.0, \n", - " color = (255, 255, 255), thickness = 1) #在红色背景图上写下hello world\n", - "display.show(hello_img) #把这张图显示出来" - ] - }, - { - "cell_type": "markdown", - "id": "76ba5402", - "metadata": {}, - "source": [ - "## 从摄像头获取图像并显示\n", - "\n", - "使用 maixpy3 包从摄像头获取图像并显示。" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a7d8673e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from maix import camera, display, image #引入python模块包\n", - "\n", - "while True:\n", - " img = camera.capture() #从摄像头中获取一张图像\n", - " display.show(img) #将图像显示出来" - ] - }, - { - "cell_type": "markdown", - "id": "7001105f", - "metadata": {}, - "source": [ - "\n", - "## 在屏幕中画一条线" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "30e0b142", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyIlfE6l2YDVxzyf8Aj4/oMAVz7oyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVYEMOCDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhlJDDkEU2igDogI/EsX8Kaqo+guP6DAFYDqyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVYEMOCDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhlJDDkEU2igDogI/EsX8Kaqo+guP6DAFYDqyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVYEMOCDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhlJDDkEU2igDogI/EsX8Kaqo+guP6DAFYDqyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVdSrDqDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhkJDA5BFNooA6ViniiIAKqawo5PQXA/kMAVz7RSRjDrtGcYNJHIY3DLkd+DU1zdzX9w1xcMDIcAsBj9KAKtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/9k=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Fri Jan 14 16:47:26 2022 )\n" - ] - } - ], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(size = (240, 240), color = (0, 0, 0), \n", - " mode = \"RGB\") #创建一张黑色背景图\n", - "\n", - "img.draw_line(0, 0, 100, 100, color = (127, 127, 127), \n", - " thickness = 1) #画一条从(0,0)到(100,100)的白色线段\n", - "\n", - "display.show(img)" - ] - }, - { - "cell_type": "markdown", - "id": "3bad6497", - "metadata": {}, - "source": [ - "## 在屏幕中画一个框" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "46a92c4e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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0tNbgdP4U+5cfhXRd653wp9y4/Cui714WM/jM/UuG/8AkXQ+YUUUVynvhRRRQAUUUUAFFFFAAKD3pRSHvT6k9AHSuL8Q/wDIXl/Cu0HSuL8Q/wDIXl/Cu/L/AOKz5Pi3/dIepj0UUV6x+eBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADm5NOHGDTcUoPQULceysdR4V6XJ+ldFmuc8K/duB9K6Ida8TFpe2Z+n8OKLy2C9RcUmKM+9H41y6nv6BijFH40fjRqGgYoxR+NH40ahoGKXFJ+NGfejUNBSaSilAo0SE207IQVxfiH/kLzfhXaiuL8Qc6vN6jFehl6Tkz5Ti3/AHaDfcxqKKK9U/PAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigB6jJpcdaXG1qQHJIpr3paDtyydzqPCuBHcDucV0RBBIrhLW+n08/u3wGqw2vagSWD8V5lfCSqVLn2WVcQ4bB4SNKS1R2OPajHtXE/8JDqH/PX9KP+Eh1D/nr+lZ/2fV7nof624T+RnbY9qMe1cT/wkOof89f0o/4SHUP+ev6Uf2fV7h/rbhP5Gdtj2ox7VxP/AAkOof8APX9KP+Eh1D/nr+lH9n1e4f624T+RnbY9qMe1cT/wkOof89f0o/4SHUP+ev6Uf2fV7i/1twn8jO2x7UuMdq4n+39Qx/rv0pf7f1A/8tsH6U1l8mtx/wCtmG3cGdv1GAuK4vXQRq85DdcZpBr2oA4M+fwrPmnkuZjLK2Xbqa3wuFlTk9Txc6zqhmFCEYwe5VoooruPlgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKMmiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACil2n0NG0+hp8r7AJRS7T6GjB9DRyvsAlFLg+howfQ0cr7AJRS4PoaMH0NHK+wCUUuD6GjB9DRyvsAlFLg+howfQ0cr7AJRS4PoaMH0NHK+wCUUuD6GjB9DRyvsAlFLg+howfQ0cr7AJRS4PoaMH0NHK+wCUUYopAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFKv3h9aSlH3h9acd0Bo3E8iSkKQMAdqg+1y5HT8qS74m/CoOMDivXx+OxUcVNKZEIKxZ+1yH0/Kk+2Sg9vyqv36UDHpXM8yxfNf2jGoK5Z+1Se35UfapPb8qq5FGRT/ALTxn/PxhyFr7VJ7flR9qk9vyqrkUZFH9p4z/n4w5C19qk9vyo+1Se35VVyKMij+08Z/z8Ycha+1Se35UfapPb8qq5FGRR/aeM/5+MOQtfapPb8qPtUnt+VVcijIo/tPGf8APxhyFr7VJ7flR9qk9vyqrkUZFH9p4z/n4w5C19qk9vyo+1Se35VVyKMij+08Z/z8Ycha+1Se35UoupMjp+VVMilBGR9aazPGX/iMOQs3X+u6dqq9qtXX+u/Cqvalmf8AvtT1CGwlHaijtXB3KW4lFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Fri Jan 14 16:41:39 2022 )\n" - ] - } - ], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(size = (240, 240), color = (0, 0, 0), \n", - " mode = \"RGB\") #创建一张黑色背景图\n", - "\n", - "img.draw_rectangle(10, 10, 60, 60, color=(255, 0, 0), \n", - " thickness=-1) #画一个从(10, 10)到(60, 60)的红色实心矩形\n", - "\n", - "img.draw_rectangle(80, 160, 160, 200, color=(0, 0, 255), \n", - " thickness=1) #画一个从(80, 160)到(160, 200)的蓝色矩形外框\n", - "\n", - "display.show(img)" - ] - }, - { - "cell_type": "markdown", - "id": "d36fa2f2", - "metadata": {}, - "source": [ - "## 在屏幕中画一个圆" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "16b74e3c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWkpaKq1+oBRRRSegBRRRSAM0ufekpce9Ul5CsNoooqRhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA859KbTsn0pCKuSgvhYkHJo/ClVSx4qwLWTGePzralha1X4EFyvikxVw20nt+dMNtJ7fnXRPLcZH4qViFK5W6UfhTnjZTyKbXFOm4O0lYtMbRRRWYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFopKXtVLW4Ds8ig/eptKDzTUrQcRWHdcknmpEiH3n4FEScb26Ckd9xBIwtdcIRoxVWqvRdyWyUz7AVjGBUBLdWPWkJyfaj8c1FbFTrfxPkuw0huWz1NLkjnJpO9BrBTtvuMmWVgACMinlUkwY+DUA4HBoX64rpjiJx0raoloQ8HmkzzmrGBInTkVARxWVSk4JVO+w7jc0uelGKTFY66oYlFFFSMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWiijtTvYQvpTlXc4Apo5xVm0AMnIrowtH2tZQBhOdp8tTwKrkkj6U9j8+485pvTOR1qsVW9tP2n3LsJIaBzRRS/hxXOkrXZTdhtLSGgUcyfxCF4oGKDSCktHpqBYt5zFICKbNGUcjPBpoHQVYnx9nibv3rup/vsNJP7OxJU55pO1P7mm+1cbXuKXcY2iiisygooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBaKKKAHDpVu2P7/APCqY6VZtj++/CvRy2ajjKUuxnJFY53H60ZNKeGNJmuKatr1LEozS0mOaUtVzAJRRRUDCiiigB3Q1ak4tUquBgVPP/qIxXoYT3aVWXZEPUgJ5FNpe2ab2rifuxSKQlFFFQMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAU9aKU96B3qkthIKfE+1hTKBVU5uDUl0BonmUJIGX7p6VGQM8dDU6fvYihHzDpUGDyPTpXTiI8s/bLZkpjO1GaMcUmK5LNadyhKKKKkYUUUUATRIZHCgVJO4PAPC9KfEpiiL4wT901Vbk57V3TvSoL++StWJn5aSiiuNvmsMSiiipGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA/JByKnUrIBu4NVyaVTzzXRSqKD/eK/kSSywMnUZqMAD2p6ybG4bcKl8+P+KOuj2eGraqXL5CKuOacAKseZAP+Wf60nnxdov1o+qUo/FUSC9yJImkcKozmp1ijjx5hDEdVpsk4KkL8g/u1AWJ+lTz0KT25x2bCSQueaYelBNJXJKVyhaKSioAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAU0ooP0pBVddGIXv1p3PrTO9L9KpOH2lcBxPtScdzSUlK8Y7ILCnFJRRSb5ugBSUtJUjCiiloASiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiijFABRRiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAkJBGBQWGR6UHOOnFOUZ5P5Uthtu92C8sR2PWnrEzMEjUsT6VsaboL3kZkdvLU9sda6Kz0+1slzFAFf+8TnNc1XFxpnvZfw9isVJTmuWLOUGg6gV3eVj8alTw7fNEW2c12IPzZPSkHIJHSuJ4+XY+ljwpgY/FJs41/Dmo5wIACP9qqMsE1s5jlUqw6nGa9AIzwenrUc0ENwgjkQYHfFXDMH1RzV+EovXD1Lep58C+84HNN52HHQ10upeHzhprduBXNsjKpB4I7Gu+lWjNaHyePwFXAz9nWWnQioycUEYFHOK12OGz2G0UUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAnBJyOorZ0DTVvJGll+6nT3rIiVnkVE6ngV3djaLZ2MUP8SDJPrmuXF1eSJ9Dw9l8sVilOavCJZ6AADAFAopK8VtzZ+k23bfuhS0mKMUtDTUKKKKNAd3s7C4OMmsLXtKR4jdRjB7gVujgfWkZdwMUi5VhWtCq4SPOzLCUcVRcay16ep5sRgkGgk9av6pZmzvWQjvVHGcivfjLmjc/J61KVKq6b3RHRRRTMgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKO9AGxoQzq8WMfjXan73HWuP8PRo+poWbB9K7HknHavIx7vJH6HwpHlwMpd2NoFLSVw9D6vrcKKKKRYUUUUAFKKKBTexG9mc74rH7uEj3rmAeldX4ojj+zQtuwxzXJknGO1e7hH+5R+XcRRtmE0MoooroPCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooHWgDZ8PE/2xCBxnNdp1Ugd+lefwyPbXKyx8FSMV3kEy3MKSIMZHFeXmENUz7vhKveFTDvpqPoooFed0Ps73bXYKKKKRYUUUUALRSUdBn0qraGcWruPY57xUfltlPTmuY9+1a+uXZvL85+4nQVlgDK+le7h48tJH5Nm9f22NqzIKKD1orc8sKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjvRRQBOd28c8jvXSaBqWX+zyuAK5njdg9KdGVV8hiCOlZVqSnGx34DHzwNVVqe3Y9HGc4zgUmMHA6etYek65HJF5d23zjgGtpXDxbkYFT6V4lWhKDP07CZlRxVFVovXt1FpaMUYrJtHo77oKSlpPrxTVhOLt7rsOJPB28HtWdrF+tjZsIpBuf+H1ov9Xt7KN0Vt03YetcbdXUl5MZZSS5rvw2Gd+aR8tnmeQoRdCi7ze/kMMztI79z1pm7Bz600YzzSdDXqKJ+euTcubqNooopkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAOozig9aOM0aoa30FBI5zV6z1S4tCCjGqB60oyaUoxluaUq1WlK9N2Z1A8VoRzb8/WpE8UQ+USbfJ9d1cp0OdtJ7iud4Sj2PYjxHmC2mdQ3ipS3Ft8npuqjd61d3fQ7Ih0XPSsbvz1p4GP4f1q44elHoc1fN8dW0nVsLMXaT53yfWogOM05vfmmcitYo8yTk3724pPIJFB25GOlGTt6cU7kkcUNhpayIqKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjNFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9k=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Fri Jan 14 16:45:05 2022 )\n" - ] - } - ], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(size = (240, 240), color = (0, 0, 0), \n", - " mode = \"RGB\") #创建一张黑色背景图\n", - "\n", - "img.draw_circle(50, 50, 20, color=(0, 0, 255), \n", - " thickness=1) #画一个中心点在(50,50),半径为20的空心蓝圆\n", - "\n", - "img.draw_circle(150, 150, 20, color=(255, 0, 0), \n", - " thickness=-1) #画一个中心点在(150,150),半径为20的实心红圆\n", - "\n", - "display.show(img)" - ] - }, - { - "cell_type": "markdown", - "id": "f12af35b", - "metadata": {}, - "source": [ - "## 在屏幕上显示字符\n", - "\n", - "显示中文需要将中文字体文件存放到开发板中,也可以直接存放到 U 盘中,在使用 `image.load_freetype(\"path\") ` 加载 ttf 字体字库,path 为字体文件的路径。" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "0b0148ca", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAnX5YycZPY/3ajAJyB37V0Wj+Fv7V8Ka5rn2rYNL8v93t/1m4469q57IKgMMf7VAEdFFFABRRRQAUUUUAOK/KDTwuTx8yj8KTaAoYnr2re8GeGv+Er8SwaObj7OZUdt+M/dUn+lAHPlflBp4Xnj5lH4U6aIQzOhbO1yv5GtvwZ4a/4SvxLBo5uPs5lR234z91Sf6UAc7RUk8fk3EkWc7GK5+hqOgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKkgj864jizjewXP1NACleeflU/jTAvyk10HjPw1/wAIp4ln0cXH2gxIjb8Y+8oP9awdoKlg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lF5deWSbyce3mHmgD2L4d6TpnhHxlaafqQSfX54pTId+FsMIcc9G3A/hXjd5j7dcNjI81v50zz5fMMyyOH/vbjn86Yx3ZLHLUAafh+y0/UNagttUvfsVo5O6bbuxxwMe54rd8eaPpmk30X2NRaXbj99pobeLYYGDv/i3Dn2zXIFwPu8A9R6UruzfM5ZmP8ROTQBFRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//Z" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Fri Jan 14 16:49:17 2022 )\n" - ] - } - ], - "source": [ - "from maix import display, image #引入python模块包\n", - "\n", - "hello_img = image.new(size = (240, 240), color = (0, 0, 0), \n", - " mode = \"RGB\") #创建一张黑色背景图\n", - "\n", - "hello_img.draw_string(30, 115, \"hello world!\", scale = 1.0, color = (255, 255, 255), \n", - " thickness = 1) #在黑色背景图上写下hello world\n", - "\n", - "display.show(hello_img) #把这张图显示出来" - ] - }, - { - "cell_type": "markdown", - "id": "052c94a6", - "metadata": {}, - "source": [ - "\n", - "## 加载 ttf 字体与计算字符串尺寸\n", - "\n", - "支持中文或多国语言字体必备,使用的是 python3 默认的 utf-8 字符编码。\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "7642ac31", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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WQrIKQqCMEcUtFMYwRIDkKBT8UUUrJCSS2CiiimMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKM0AFFFFABRRRQAUUUUAFFFFABRRkUUAFFJkCjIoAWijIoyKACikyDS0AFFFGaACiijNABRSZApaACijNGc0AFFJkCjIFAC0UZFFABRRmkLAd6AFoozmigAooooAKKKM0AFFGaKACiijIoAKKKKACiiigAooooAKKM0ZFABRRRQAUUUUAFFFFABRRRQAzPf0pNwYZBxmjgLkcV5r8UPEmraHJp6abdeUZd275c9KzqTjTV2dGEws8VVVKnuz0kOv8AepC6E/fr51/4T/xQf+Yj/wCOCkPj3xOeuo/+OCub67TPe/1Vxb0dj6N3jH3qN4/vV85/8J74o/6CP/jgo/4T7xR/0Ef/ABwUvr9Mf+qmL7o+jN4/vUbx/er5z/4T7xR/0Ef/ABwUf8J74o/6CP8A44KPr9MP9VMX3R9GE56Y/OlH0r51i8f+JlnTdqBZC6g/KPWvoW1fzbWJmOWKAk/hW9GuqqPKzHKq2AaVR3uSD5ufWsrXNes9Cs3uLqUZUfKuetax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OuCAR6EU48ClHSloO+uhClvCOfKT/vkVJj3pelA5pe8gk7vUQKKB780u7HakBzyKoVmtQxRj0p9JSAbkj3ozTutJj3pgOFFFFIYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUYoooAMUYoooAMUUUUAGKKKKACiiigAxRiiigAooooAMUYoooAMUUUUAFGKKKADFGKKKACiiigAooooAKKKKADFGKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACijNFABRRkU1HSRdyMGX1ByKAHUUUUAFFFFABRRRQAUUUUAFFFGaACiiigAooooAKKM0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBxfiHVr+z8d+GdNguNlne+b58W37+0ZHNdaJ4vMMRlTzP7m4Z/KvLPiuNYbxP4YHh/wD5CpMvknjjjk8+1XNW8FanYaQNctLh73xfFtLXedqsufmGzpwvFdsqEVSptu11+vXyIudxrlpfXmjzQafe/YrgjiTbu47j8axfA2lX+lafJ9oP2e1c/ubHf5n2c5OTv77jz7ZrV03WLTXvDbajYz+dDJC67wMfMAQf1rmvhfv/AOFYRby27M+dzZP3j3rGKapuPmVc7oypsMnmoF/vZGB+NKjLIgZWV17MpyDXifw20HXvEujyw6tfOPDHmOEt/wCKf5jn5hyMGuu8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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(color=(255, 255, 255))\n", - "image.load_freetype(\"/home/res/sans.ttf\")\n", - "s = \"二进制例程\"\n", - "x, y = image.get_string_size(s, 3)\n", - "img.draw_string(0, 120 - (y + 5), s, 3, (255, 0, 0)) # show left-button\n", - "\n", - "s = \"可执行文件示例\"\n", - "x, y = image.get_string_size(s, 2)\n", - "img.draw_string(240 - x, 0, s, 2, (0, 255, 0)) # show right-up # wait fix\n", - "\n", - "image.free_freetype()\n", - "\n", - "s = \"bin example\"\n", - "x, y = image.get_string_size(s, 1)\n", - "img.draw_string(0, 240 - (y + 5), s, 1, (0, 0, 255)) # show left-button\n", - "\n", - "display.show(img)\n" - ] - }, - { - "cell_type": "markdown", - "id": "f093553e", - "metadata": {}, - "source": [ - "## 在屏幕上画一个椭圆" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "eb2cf1aa", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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cqMJfFG51xu/DGrKYP7M/s5pf+XrzC2w9+Peql74UuI7eW9sJhd6emNs44Lf8B61zqghsHqOgzV3T9XvdOuUntZyjR52qeR+VZqlUj/Df3mXsqkf4cvkyoYyjMSCjDsRURHHTnvXXf2jputoINStxDfy/evweAew2j8q57UdPuNNujbXMZDr6cgjtzVRl3NITvuUKKPworVmglFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCYMNpGOvf0qeKBprhY4/m3EAkCq6E52ngd66zwtCljBe6+4D/YlAEB/j3cdampU5IX+SM61TkhfrsixqmpS+E5P7M0tk88J+/uCoPmZHHHbFcY5eRnlZiWzySammlkuZWkdjliSAaj2BgWLfQetKnBwjb7xUqXJC3XqV6KKKs1CiiigAzRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAT+YSFGMN3PrXS6V4iiigjstVshewqdtuS20x56knvXMqRkAnA/lS7z8wPelKCqLkexE6aqJxexr+I9K/snV5IFkE0RAYSAYByM4rFYcn2rrkB13wczbNjaX1cnJfca5QqTgnj1qKMpP3XvEjDzcqbjLeJBRRRWhsFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUASDlRz+Fdb4Zk+2aHqmjQr5l5dBTEvTheTXKEELnHPrV7S7+40u+iu7Z/LlQ439eD1/Ss6kHONvmjOrT54W67oqSI8Upj7oSDTGYjGBgV0vinT4BcrfaWpk0+YZiZRkk4+bI7c1zLAk59aqnPnjzfeVSnzwv1IqKKKooKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAkXJPFP2gA/Nz3pI1JdfetrQ9AutXeSWKMFIiC25goI74zUyqKkueWxE6qpRc5bGrYgaN4J1B7lth1Hb9l/6abTz9K5JsqAG69a6DxTqkF1eCysT/AMSy0GIE/uk/e/WueyMknv0b0qaUWvee8iMPFqDm95fkQUUUVobBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF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AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//Z" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Fri Jan 14 16:49:49 2022 )\n" - ] - } - ], - "source": [ - "from maix import image, display\n", - "img = image.new(size = (240, 240), color = (0, 0, 0), \n", - " mode = \"RGB\") #创建一张黑色背景图\n", - "img.draw_ellipse(120, 40, 20, 50, 90, 0, 360, color=(0,255,0), \n", - " thickness = 1)\n", - "display.show(img)" - ] - }, - { - "cell_type": "markdown", - "id": "9aed0ce4", - "metadata": {}, - "source": [ - "画椭圆的参数比较复杂,暂无 API 说明。" - ] - }, - { - "cell_type": "markdown", - "id": "90ce1387", - "metadata": {}, - "source": [ - "\n", - "## 在一张图上截图、贴图、图像透明混合\n", - "\n", - "> 透明图层混合目前还没能完美实现所有通道的 alpha 透明混合,范围在 0.0, 1.0 之间,目前采用 RGB 透明混合,非 RGBA 融合。\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "2d6904ba", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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ny5P+ebflR5cn/PNvyr0bYn/ADzX8qNif881/Kj6+v5Q/wCIrL/nz+J5z5cn/PNvyo8uT/nm35V6NsT/AJ5r+VGxP+ea/lR9fX8of8RWX/Pj8TzoxP8A882/KgRP/wA82/KvRtif881/KjYn/PNfyp/X1bYP+IraX9h+J5y0bjJMbH8K6PwoCv2sMCm7HUV0QSMdI1/KngKDwoXd6CorYtTp2S3PGz/j/wDtbCSwqpWv5iUUUV5p+YsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQMm0/OM0Mf3TeuK59nYSNlzjNb06akj28ryz67zJSOh/EfnR+I/Oucz7n86Mn1P51osOj2f9VLLWZ0f4j86PxH51zeT6n86Mn1P50fV0H+qn986T8R+dH4j865vJ9T+dGT6n86Pq6D/VT++dJ+I/Oj8R+dc3k+p/OjJ9T+dH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ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9k=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Sat May 7 11:54:46 2022 )\n" - ] - } - ], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(color=(255, 0, 0))\n", - "img.draw_string(100, 100, \"hello\", 2, color=(0, 0, 255))\n", - "\n", - "mk = img.crop(90, 90, 100, 50) # 截一张图出来, x, y, w, h\n", - "imga = image.new(color=(0, 255, 0))\n", - "imga.draw_image(mk, 10, 10)\n", - "# imga.draw_image(imga) # py no-allow use self but libmaix support\n", - "imga.draw_image(mk, 100, 100, alpha=0.5)\n", - "display.show(imga)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "67e121a6", - "metadata": {}, - "source": [ - "\n", - "## 图像的缩放、旋转、翻转\n", - "\n", - "在 0.4.8 之后的镜像后才支持翻转 。\n", - "\n", - "- resize(w, h, func) # width, height, cv::INTER_LINEAR\n", - "\n", - "- flip(code) # -1 horizontal & vertical, 1 horizontal, 0 vertical\n", - "\n", - "- rotate(angle, adjust) # [-360, +360], [adjust uasge](https://blog.csdn.net/qq_40622955/article/details/119180886)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "4671f9ca", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ rpyc-kernel ]( running at Wed May 11 16:05:34 2022 )\n" - ] - } - ], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(color=(255, 0, 0))\n", - "img.draw_string(100, 100, \"KL\", 2, color=(0, 0, 255))\n", - "\n", - "mk = img.crop(90, 90, 50, 50)\n", - "\n", - "imga = image.new(color=(0, 255, 0))\n", - "\n", - "imga.draw_image(mk, 10, 10) # 原图\n", - "\n", - "imga.draw_image(mk.rotate(-90), 70, 10) # 顺时针 90 旋转\n", - "\n", - "imga.draw_image(mk.flip(1), 130, 10) # 水平翻转 horizontal\n", - "\n", - "imga.draw_image(mk.resize(80, 50), 10, 80) # 缩放到 (80, 50)\n", - "\n", - "imga.draw_image(mk.flip(0), 100, 80) # 垂直翻转 vertical\n", - "\n", - "imga.draw_image(mk.rotate(-135, adjust=0), 10, 150) # 顺时针 135 旋转\n", - "\n", - "imga.draw_image(mk.rotate(+45, adjust=1), 100, 150) # 逆时针 45 旋转\n", - "\n", - "display.show(imga)" - ] - }, - { - "cell_type": "markdown", - "id": "2a5daa36", - "metadata": {}, - "source": [ - "## 打开图像与保存文件\n", - "\n", - "现在保存文件根据文件名后缀存储对应图像格式,如 .jpg 或 .png 时会编码存储图片,如果想要在 cv2 中使用,以下为互转的示例。" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6710f1c2", - "metadata": {}, - "outputs": [], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(size=(240, 240), mode=\"RGB\", color=(255, 255, 255))\n", - "img.draw_line(0, 0, 240, 240)\n", - "img.draw_rectangle(40, 120, 160, 200, color=(255, 0, 0), thickness=16) #\n", - "img.draw_circle(120, 120, 20, color=(0, 255, 0))\n", - "img.draw_string(40, 40, \"dalaoshu\", 2, color=(0, 0, 255))\n", - "\n", - "import cv2\n", - "import numpy as np\n", - "cv_img = cv2.imdecode(np.frombuffer(img.tobytes('jpg'), np.uint8), cv2.IMREAD_COLOR)\n", - "\n", - "cv_img = cv_img[ : , : , (2,1,0)]\n", - "\n", - "tmp = image.load(cv_img.tobytes(), cv_img.shape)\n", - "\n", - "tmp.save('tmp.jpg')\n", - "\n", - "img_encode = cv2.imencode('.jpg', cv_img)[1]\n", - "\n", - "tmp = image.open(img_encode.tobytes())\n", - "\n", - "tmp.save('tmp.jpg')" - ] - }, - { - "cell_type": "markdown", - "id": "9af24c0d", - "metadata": {}, - "source": [ - "\n", - "以上操作都是在 linux desktop 分支下测试的,其他平台需要自备 opencv 和 numpy 喔。" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "d8b52d1c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tmp.png <_maix_image.Image 0x21d3550 \" width\":160, \"height\":120, \"type\"=RGB, \"size\":57600>\n" - ] - } - ], - "source": [ - "from maix import image, display\n", - "\n", - "img = image.new(size=(240, 240), mode=\"RGB\", color=(255, 255, 255))\n", - "img.draw_line(0, 0, 240, 240)\n", - "img.draw_rectangle(40, 120, 160, 200, color=(255, 0, 0), thickness=16) #\n", - "img.draw_circle(120, 120, 20, color=(0, 255, 0))\n", - "img.draw_string(40, 40, \"dalaoshu\", 2, color=(0, 0, 255))\n", - "\n", - "# 保存图片到 test.png 中\n", - "img.save(\"test.png\")\n", - "# 读取 test.png 中的图片\n", - "tmp = image.open(\"test.png\")\n", - "\n", - "# 0.5.0 以后支持导出 jpg 、 bmp 、 png 、 默认 rgb 等格式的图像数据到 bytes 变量中,方便向外传输图像数据。\n", - "img_bytes = tmp.resize(size=(160, 120)).tobytes('jpg')\n", - "# >>> img_bytes = img.tobytes('jpg')\n", - "# >>> img_bytes[:2]\n", - "# b'\\xff\\xd8'\n", - "# >>> img_bytes[-2:]\n", - "# b'\\xff\\xd9'\n", - "# >>>\n", - "# >>> img_bytes = img.tobytes('bmp')\n", - "# >>> img_bytes[:2]\n", - "# b'BM'\n", - "# >>> img_bytes = img.tobytes('rgb')\n", - "# >>> img_bytes[:2]\n", - "# b'\\x00\\x00'\n", - "# >>> img_bytes = img.tobytes('png')\n", - "# >>> img_bytes[:2]\n", - "# b'\\x89P'\n", - "# >>>\n", - "\n", - "# 0.5.2 以后 image.open 支持直接打开上述格式导出的 bytes 编码数据。\n", - "tmp = image.open(img_bytes)\n", - "print('tmp.png', tmp)\n", - "\n", - "tmp.save(\"tmp.png\")\n", - "\n", - "display.show(tmp)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "d7e37e94", - "metadata": {}, - "source": [ - "## 【传统视觉基础】寻找色块(颜色识别)\n", - "\n", - "> 该功能需要更新到 0.5.1 版本以后,填色的顺序为 [(L 最小值, L 最大值, A 最小值, A 最大值, B 最小值, B 最大值)]。\n", - "\n", - "使用 find_blobs 的查找色块算法,查找图像中符合 LAB 颜色阈值的色块,可以在列表中放入多个阈值区间进行匹配,通过阈值编辑工具可将目标颜色变成白色意为提取,其他颜色全变为黑色表示忽略。\n", - "\n", - "如 `blue = 13, 54, 11, 48, -91, -28` 为什么是 蓝色 的 lab 阈值,这是因为使用 LAB 阈值工具可以获得两个期望颜色区间的最大和最小的 L A B 值,所以上图对应的下图示意图的顺序。\n", - "\n", - "
\n", - " \n", - "
\n", - "\n", - "现已支持在线图传调试 LAB 阈值 [wiki.sipeed.com/threshold](https://wiki.sipeed.com/threshold) ,动态调试效果请看 [Github 实现](https://github.com/junhuanchen/thresholding-filter-browser-html)。\n", - "\n", - "注意,在线调试使用的是 OPENCV 的函数,和 OPENMV 的实际表现在 Y 通道上有差距,如果遇到调试时可用,实机有差距时,只需要将调试出来的 L 值通道,对其 ±10 或 ±20 就可以使用了。\n", - "> Lab颜色空间中的L分量用于表示像素的亮度,取值范围是 [0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是 [127,-128];b表示从黄色到蓝色的范围,取值范围是 [127,-128]。 \n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "9220f2c1", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from maix import image, display, camera\n", - "blue = [(34, 100, -38, 3, -128, -28)] # 0.5.0 以后蓝色的 lab 阈值,0.4.9 之前为 [(13, 11, -91, 54, 48, -28)]\n", - "while True:\n", - " img = camera.capture()\n", - " blobs = img.find_blobs(blue, merge=True) #在图片中查找lab阈值内的颜色色块 merge 合并小框。\n", - " if blobs:\n", - " for i in blobs:\n", - " img.draw_rectangle(i[\"x\"], i[\"y\"], i[\"x\"] + i[\"w\"], i[\"y\"] + i[\"h\"], \n", - " color=(0, 0, 255), thickness=1) #将找到的颜色区域画出来\n", - " display.show(img)" - ] - }, - { - "attachments": { - "123.jpg": { - "image/jpeg": "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" - } - }, - "cell_type": "markdown", - "id": "0e05cd48", - "metadata": {}, - "source": [ - "## 【传统视觉基础】阈值处理\n", - "\n", - "该功能需要更新到 0.5.3 版本以后\n", - "\n", - "基于上述获得的 LAB 阈值,可以直接应用到图像上(俗称二值化),便于后续的寻线寻迹预处理,可以解决红、黄、蓝、绿线等各种场合。\n", - "\n", - "![123.jpg](attachment:123.jpg)\n", - "\n", - "这里演示的是蓝色跑道白色数值的场合,当然具体情况具体分析吧!\n", - "\n", - "> [不想 `pip install -U maixpy3` 联网下载的可以到 pypi 下载 armv7l 的 whl 包放到板子里使用 `pip install maixpy3*.whl -U` 安装](https://pypi.org/project/maixpy3/0.5.3/#files)。\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "9240e3f4", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "from maix import image, display, camera\n", - "THRESHOLD = [(34, 100, -38, 3, -128, -28)]\n", - "while True:\n", - " img = camera.capture().binary(THRESHOLD, invert=False, zero=False) # invert 取反阈值,zero 是否不填充阈值区域。\n", - " display.show(img)\n" - ] - }, - { - "cell_type": "markdown", - "id": "c7982339", - "metadata": {}, - "source": [ - "## 【传统视觉基础】寻线处理\n", - "\n", - "常用于一些十字线(路口)的识别。\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a185ce25", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from maix import camera, display, image\n", - "while True:\n", - " img = camera.capture()\n", - " tmp = img.find_lines((0, 0, 240, 240), 2, 1, 1100, 50, 50)\n", - " for l in tmp:\n", - " img.draw_line(l[0], l[1], l[2], l[3], color = (0, 255, 0))\n", - " display.show(img)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f8ec1490", - "metadata": {}, - "source": [ - "## 【传统视觉基础】寻线寻迹\n", - "\n", - "找线算法是面对小车寻线而开发的一个算法。主要的流程是,灰度化 -> 自适应阈值处理 -> 形态学运算 -> 图像最小二乘法。完成算法流程后返回一条线的信息,让小车能够根据识别出来线的信息进行运动。这个接口比较适合做图像寻线。\n", - "\n", - "对应实现 [点我跳转到 github](https://github.com/sipeed/MaixPy3/blob/release/ext_modules/_maix_image/_maix_vision.cpp#L513-L612)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "d3306f13", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from maix import image, display, camera\n", - "import time\n", - "\n", - "while True:\n", - " img = camera.capture()\n", - " line = img.find_line()\n", - " img.draw_line(line[\"rect\"][0], line[\"rect\"][1], line[\"rect\"][2],\n", - " line[\"rect\"][3], color=(255, 255, 255), thickness=1)\n", - " img.draw_line(line[\"rect\"][2], line[\"rect\"][3], line[\"rect\"][4],\n", - " line[\"rect\"][5], color=(255, 255, 255), thickness=1)\n", - " img.draw_line(line[\"rect\"][4], line[\"rect\"][5], line[\"rect\"][6],\n", - " line[\"rect\"][7], color=(255, 255, 255), thickness=1)\n", - " img.draw_line(line[\"rect\"][6], line[\"rect\"][7], line[\"rect\"][0],\n", - " line[\"rect\"][1], color=(255, 255, 255), thickness=1)\n", - " img.draw_circle(line[\"cx\"], line[\"cy\"], 4,\n", - " color=(255, 255, 255), thickness=1)\n", - " display.show(img)" - ] - }, - { - "cell_type": "markdown", - "id": "5c5746ef", - "metadata": {}, - "source": [ - "\n", - "## 【传统视觉基础】获取区域的颜色\n", - "\n", - "颜色统计算法,统计感兴趣区域最多的颜色并返回。\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "09c23d85", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from maix import image, display, camera\n", - "import time\n", - "\n", - "while True:\n", - " img = camera.capture()\n", - " colors = img.get_blob_color((100, 100, 10, 10), 0, 0)\n", - " img.draw_rectangle(100, 100, 110, 110, \n", - " color=(255, 0, 0), thickness=1) #将找到的颜色区域画出来\n", - " img.draw_rectangle(9, 9, 21, 21, \n", - " color=(255, 255, 255), thickness=1) #将找到的颜色区域画出来\n", - " img.draw_rectangle(10, 10, 20, 20, \n", - " color=(int(colors[0]), int(colors[1]), int(colors[2])), thickness=-1) #将找到的颜色区域画出来\n", - " display.show(img)" - ] - }, - { - "cell_type": "markdown", - "id": "c6d5ca8c", - "metadata": {}, - "source": [ - " \n", - "## 【传统视觉基础】识别二维码 (过时)\n", - "\n", - "这是标准 python3 库的 libzbar 实现,查找画面中出现的二维码,但功能比较有限制,比如不能输出定位框,现已被 image 实现替代,往下看传统视觉章节可知。" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "03c41e0c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from maix import camera, display, zbar\n", - "while True:\n", - " img = camera.capture()\n", - " result = zbar.scan_codes([\"qrcode\", \"code39\"], img)\n", - " display.show(img.draw_string(10, 10, str(result), 2.0, (255, 0, 0)))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "f4231c63", + "metadata": {}, + "source": [ + "---\n", + "\n", + "title: MaixPy3 基本使用示例\n", + "keywords: jupyter, MaixPy3 IDE, 图像获取,图像显示,图像处理\n", + "desc: maixpy 如何显示一张图,如何获取一张图,如何修改一张图\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "82e6fe35", + "metadata": {}, + "source": [ + "| 更新时间 | 负责人 | 内容 | 备注 |\n", + "| --- | --- | --- | --- |\n", + "| 2022年1月4日 | dianjixz | 初次编写文档 | --- |\n", + "| 2022年1月18日 | dianjixz | 修订文档文档 | 使用 Jupyter notebook 进行编写文档 |\n", + "| 2022年3月22日 | rui | 修改部分表述错误 | ---- |\n", + "| 2022年5月7日 | dls | 增加更多常用 API 说明 | ---- |\n", + "| 2022年5月11日 | dls | 0.4.8 后 image.new 取代 image.Image().new | 支持 new load open 接口 |\n", + "| 2022年5月25日 | dls | 0.4.9 后 加入了 opencv 的 Canny 、 flip, tobytes 支持导出 jpg bmp png 等数据,修复了 RGB 贴图透明度混合|\n", + "| 2022年5月31日 | dls | 0.5.0 后 找色的 LAB 阈值顺序发生了改变 |\n", + "| 2022年7月04日 | dls | 0.5.1 后 修复了 find_blobs 函数,原先采用 cv 实现,现改为 mv 实现 |\n", + "\n", + "\n", + "## \"hello world!\"\n", + "\n", + "确保目标机器已经安装 maixpy3 软件包。\n", + "\n", + "使用 maixpy3 包在图像上显示 \"hello world!\" 。\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ae04d801", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDi6KKK+ZP3EKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKBWCiiigYUUUUAFFFFABRRRQRze9yhRRRQGvNYKKKKCwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigSSQUUUUBuFFFFBPM+W4UUUUBzPluFFFFBYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAKFJXgZ9DmjIJJAzWjZaUt1peoX5lKfZNvy4znNZy524PAbvVNNHPTrRm2l0EoooqTdhRRRQMKKKKAFwDkNwDSgFmbC5A96MfKNvzYq/omlrrWsRWJm8ssrHpnoM1Sjd2OatVjSg6j2Rn9yG4zSgE5IXIHvSuu0sindsYjP41f0PSl1vWYbEzmIsrN0z0GaFG7sKrXjTouq9jNop0i7JGT+6SKbUnStgooooGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFOjXfIqf3iBQJsCMFcrgH3pOMjbzitDWtMXRtWlsll8w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tYfL6r++XkdjXNhv4emei0oklAIE8vPUbzWrqJ7nkPB14aYSpaPZ6peh0fyeFI+WB1xgQApyLb8ehyK5sse7bpSSTx0oLFm+bJbuSc5pd2BjduXsMdahyudVHDezXNKV5Pd/10N7wW4TxTbs7BVEb4J7fLWHLnzZCTkF2x+dNVmRlaNyjDqR2pPVs5J60OWli4UOXESq90l9wlS2/wDx8RE/3x/OoqUHFZnUo7nR+O3WTxfckMHQxx4I/wB0VzmWxvBwykEU4s8rMzMXc9SaYCCMg/UVpOd3c5MLh44ejGk3eysdH9q03xEqtqt79k1BBg3Gwt9o9Bjtinf8IH4jf50tYfL6r++Xketc4GOMYAHYUCSUDAnlweo3mqU11OR4PE01bDVLLs1f7jvfCNnY6L4gitr0LJqsscmRuwLXAPfoc1wkvE8p37mMjbmx05oDMJN2WLn+LdyPxpnAAVT8op1KiasisNgalLESrSnfmt/XoWdPgtrm+iivLjyIWPzSYzj0H41oeI7K2s75Ft8RSEfvLMHcIeODu7561jj1A+Y96UsWADEsvYk8ms4ySVjoqYecsRGqp6LoMoooqDvCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooJtcKKKKA2Ciiigm0ZO4UUUUCai3sLSUUUF26hRRRQEddQooooEnFdQooooBxUgooooK3CiiigNgooooE9Qooop2Ek0FFFFIF7ugUUUU7A1rcKKKKQvdtYKKKKLA0ou7CilpKBOfucwUUUd6DS4UUUUEWi27oKKKKCW4yk4BRRRQU+V2QUUUUAuXVWCiiig0CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//Z" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Fri Jan 14 16:48:03 2022 )\n" + ] + } + ], + "source": [ + "from maix import display, image \n", + "hello_img = image.new(size = (240, 240), \n", + " color = (255, 0, 0), mode = \"RGB\") #创建一张红色背景图\n", + "hello_img.draw_string(30, 115, \"hello world!\", scale = 1.0, \n", + " color = (255, 255, 255), thickness = 1) #在红色背景图上写下hello world\n", + "display.show(hello_img) #把这张图显示出来" + ] + }, + { + "cell_type": "markdown", + "id": "76ba5402", + "metadata": {}, + "source": [ + "## 从摄像头获取图像并显示\n", + "\n", + "使用 maixpy3 包从摄像头获取图像并显示。" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a7d8673e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from maix import camera, display, image #引入python模块包\n", + "\n", + "while True:\n", + " img = camera.capture() #从摄像头中获取一张图像\n", + " display.show(img) #将图像显示出来" + ] + }, + { + "cell_type": "markdown", + "id": "7001105f", + "metadata": {}, + "source": [ + "\n", + "## 在屏幕中画一条线" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "30e0b142", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyIlfE6l2YDVxzyf8Aj4/oMAVz7oyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVYEMOCDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhlJDDkEU2igDogI/EsX8Kaqo+guP6DAFYDqyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVYEMOCDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhlJDDkEU2igDogI/EsX8Kaqo+guP6DAFYDqyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVYEMOCDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhlJDDkEU2igDogI/EsX8Kaqo+guP6DAFYDqyMVZSHHBBoRmRgysQ45BFb5MfiWL+FNVUfQXH9BgCgDnaKc6NG5VgQw4INNoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACnI7RuGUkMOQRTaKAOiAj8Sxfwpqqj6C4/oMAVgOrIxVlIccEGhGZGDKxDjkEVvkx+JYv4U1VR9Bcf0GAKAOdopzo0blWBDDgg02gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKcjtG4ZSQw5BFNooA6ICPxLF/CmqqPoLj+gwBWA6sjFWUhxwQaEZkYMrEOOQRW+TH4li/hTVVH0Fx/QYAoA52inOjRuVdSrDqDTaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApyO0bhkJDA5BFNooA6ViniiIAKqawo5PQXA/kMAVz7RSRjDrtGcYNJHIY3DLkd+DU1zdzX9w1xcMDIcAsBj9KAKtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/9k=" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Fri Jan 14 16:47:26 2022 )\n" + ] + } + ], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(size = (240, 240), color = (0, 0, 0), \n", + " mode = \"RGB\") #创建一张黑色背景图\n", + "\n", + "img.draw_line(0, 0, 100, 100, color = (127, 127, 127), \n", + " thickness = 1) #画一条从(0,0)到(100,100)的白色线段\n", + "\n", + "display.show(img)" + ] + }, + { + "cell_type": "markdown", + "id": "3bad6497", + "metadata": {}, + "source": [ + "## 在屏幕中画一个框" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "46a92c4e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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0tNbgdP4U+5cfhXRd653wp9y4/Cui714WM/jM/UuG/8AkXQ+YUUUVynvhRRRQAUUUUAFFFFAAKD3pRSHvT6k9AHSuL8Q/wDIXl/Cu0HSuL8Q/wDIXl/Cu/L/AOKz5Pi3/dIepj0UUV6x+eBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADm5NOHGDTcUoPQULceysdR4V6XJ+ldFmuc8K/duB9K6Ida8TFpe2Z+n8OKLy2C9RcUmKM+9H41y6nv6BijFH40fjRqGgYoxR+NH40ahoGKXFJ+NGfejUNBSaSilAo0SE207IQVxfiH/kLzfhXaiuL8Qc6vN6jFehl6Tkz5Ti3/AHaDfcxqKKK9U/PAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigB6jJpcdaXG1qQHJIpr3paDtyydzqPCuBHcDucV0RBBIrhLW+n08/u3wGqw2vagSWD8V5lfCSqVLn2WVcQ4bB4SNKS1R2OPajHtXE/8JDqH/PX9KP+Eh1D/nr+lZ/2fV7nof624T+RnbY9qMe1cT/wkOof89f0o/4SHUP+ev6Uf2fV7h/rbhP5Gdtj2ox7VxP/AAkOof8APX9KP+Eh1D/nr+lH9n1e4f624T+RnbY9qMe1cT/wkOof89f0o/4SHUP+ev6Uf2fV7i/1twn8jO2x7UuMdq4n+39Qx/rv0pf7f1A/8tsH6U1l8mtx/wCtmG3cGdv1GAuK4vXQRq85DdcZpBr2oA4M+fwrPmnkuZjLK2Xbqa3wuFlTk9Txc6zqhmFCEYwe5VoooruPlgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKMmiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACil2n0NG0+hp8r7AJRS7T6GjB9DRyvsAlFLg+howfQ0cr7AJRS4PoaMH0NHK+wCUUuD6GjB9DRyvsAlFLg+howfQ0cr7AJRS4PoaMH0NHK+wCUUuD6GjB9DRyvsAlFLg+howfQ0cr7AJRS4PoaMH0NHK+wCUUYopAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFKv3h9aSlH3h9acd0Bo3E8iSkKQMAdqg+1y5HT8qS74m/CoOMDivXx+OxUcVNKZEIKxZ+1yH0/Kk+2Sg9vyqv36UDHpXM8yxfNf2jGoK5Z+1Se35UfapPb8qq5FGRT/ALTxn/PxhyFr7VJ7flR9qk9vyqrkUZFH9p4z/n4w5C19qk9vyo+1Se35VVyKMij+08Z/z8Ycha+1Se35UfapPb8qq5FGRR/aeM/5+MOQtfapPb8qPtUnt+VVcijIo/tPGf8APxhyFr7VJ7flR9qk9vyqrkUZFH9p4z/n4w5C19qk9vyo+1Se35VVyKMij+08Z/z8Ycha+1Se35UoupMjp+VVMilBGR9aazPGX/iMOQs3X+u6dqq9qtXX+u/Cqvalmf8AvtT1CGwlHaijtXB3KW4lFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Fri Jan 14 16:41:39 2022 )\n" + ] + } + ], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(size = (240, 240), color = (0, 0, 0), \n", + " mode = \"RGB\") #创建一张黑色背景图\n", + "\n", + "img.draw_rectangle(10, 10, 60, 60, color=(255, 0, 0), \n", + " thickness=-1) #画一个从(10, 10)到(60, 60)的红色实心矩形\n", + "\n", + "img.draw_rectangle(80, 160, 160, 200, color=(0, 0, 255), \n", + " thickness=1) #画一个从(80, 160)到(160, 200)的蓝色矩形外框\n", + "\n", + "display.show(img)" + ] + }, + { + "cell_type": "markdown", + "id": "d36fa2f2", + "metadata": {}, + "source": [ + "## 在屏幕中画一个圆" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "16b74e3c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWkpaKq1+oBRRRSegBRRRSAM0ufekpce9Ul5CsNoooqRhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA859KbTsn0pCKuSgvhYkHJo/ClVSx4qwLWTGePzralha1X4EFyvikxVw20nt+dMNtJ7fnXRPLcZH4qViFK5W6UfhTnjZTyKbXFOm4O0lYtMbRRRWYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFopKXtVLW4Ds8ig/eptKDzTUrQcRWHdcknmpEiH3n4FEScb26Ckd9xBIwtdcIRoxVWqvRdyWyUz7AVjGBUBLdWPWkJyfaj8c1FbFTrfxPkuw0huWz1NLkjnJpO9BrBTtvuMmWVgACMinlUkwY+DUA4HBoX64rpjiJx0raoloQ8HmkzzmrGBInTkVARxWVSk4JVO+w7jc0uelGKTFY66oYlFFFSMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWiijtTvYQvpTlXc4Apo5xVm0AMnIrowtH2tZQBhOdp8tTwKrkkj6U9j8+485pvTOR1qsVW9tP2n3LsJIaBzRRS/hxXOkrXZTdhtLSGgUcyfxCF4oGKDSCktHpqBYt5zFICKbNGUcjPBpoHQVYnx9nibv3rup/vsNJP7OxJU55pO1P7mm+1cbXuKXcY2iiisygooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBaKKKAHDpVu2P7/APCqY6VZtj++/CvRy2ajjKUuxnJFY53H60ZNKeGNJmuKatr1LEozS0mOaUtVzAJRRRUDCiiigB3Q1ak4tUquBgVPP/qIxXoYT3aVWXZEPUgJ5FNpe2ab2rifuxSKQlFFFQMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAU9aKU96B3qkthIKfE+1hTKBVU5uDUl0BonmUJIGX7p6VGQM8dDU6fvYihHzDpUGDyPTpXTiI8s/bLZkpjO1GaMcUmK5LNadyhKKKKkYUUUUATRIZHCgVJO4PAPC9KfEpiiL4wT901Vbk57V3TvSoL++StWJn5aSiiuNvmsMSiiipGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA/JByKnUrIBu4NVyaVTzzXRSqKD/eK/kSSywMnUZqMAD2p6ybG4bcKl8+P+KOuj2eGraqXL5CKuOacAKseZAP+Wf60nnxdov1o+qUo/FUSC9yJImkcKozmp1ijjx5hDEdVpsk4KkL8g/u1AWJ+lTz0KT25x2bCSQueaYelBNJXJKVyhaKSioAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAU0ooP0pBVddGIXv1p3PrTO9L9KpOH2lcBxPtScdzSUlK8Y7ILCnFJRRSb5ugBSUtJUjCiiloASiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiijFABRRiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAkJBGBQWGR6UHOOnFOUZ5P5Uthtu92C8sR2PWnrEzMEjUsT6VsaboL3kZkdvLU9sda6Kz0+1slzFAFf+8TnNc1XFxpnvZfw9isVJTmuWLOUGg6gV3eVj8alTw7fNEW2c12IPzZPSkHIJHSuJ4+XY+ljwpgY/FJs41/Dmo5wIACP9qqMsE1s5jlUqw6nGa9AIzwenrUc0ENwgjkQYHfFXDMH1RzV+EovXD1Lep58C+84HNN52HHQ10upeHzhprduBXNsjKpB4I7Gu+lWjNaHyePwFXAz9nWWnQioycUEYFHOK12OGz2G0UUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAnBJyOorZ0DTVvJGll+6nT3rIiVnkVE6ngV3djaLZ2MUP8SDJPrmuXF1eSJ9Dw9l8sVilOavCJZ6AADAFAopK8VtzZ+k23bfuhS0mKMUtDTUKKKKNAd3s7C4OMmsLXtKR4jdRjB7gVujgfWkZdwMUi5VhWtCq4SPOzLCUcVRcay16ep5sRgkGgk9av6pZmzvWQjvVHGcivfjLmjc/J61KVKq6b3RHRRRTMgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKO9AGxoQzq8WMfjXan73HWuP8PRo+poWbB9K7HknHavIx7vJH6HwpHlwMpd2NoFLSVw9D6vrcKKKKRYUUUUAFKKKBTexG9mc74rH7uEj3rmAeldX4ojj+zQtuwxzXJknGO1e7hH+5R+XcRRtmE0MoooroPCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooHWgDZ8PE/2xCBxnNdp1Ugd+lefwyPbXKyx8FSMV3kEy3MKSIMZHFeXmENUz7vhKveFTDvpqPoooFed0Ps73bXYKKKKRYUUUUALRSUdBn0qraGcWruPY57xUfltlPTmuY9+1a+uXZvL85+4nQVlgDK+le7h48tJH5Nm9f22NqzIKKD1orc8sKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjvRRQBOd28c8jvXSaBqWX+zyuAK5njdg9KdGVV8hiCOlZVqSnGx34DHzwNVVqe3Y9HGc4zgUmMHA6etYek65HJF5d23zjgGtpXDxbkYFT6V4lWhKDP07CZlRxVFVovXt1FpaMUYrJtHo77oKSlpPrxTVhOLt7rsOJPB28HtWdrF+tjZsIpBuf+H1ov9Xt7KN0Vt03YetcbdXUl5MZZSS5rvw2Gd+aR8tnmeQoRdCi7ze/kMMztI79z1pm7Bz600YzzSdDXqKJ+euTcubqNooopkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAOozig9aOM0aoa30FBI5zV6z1S4tCCjGqB60oyaUoxluaUq1WlK9N2Z1A8VoRzb8/WpE8UQ+USbfJ9d1cp0OdtJ7iud4Sj2PYjxHmC2mdQ3ipS3Ft8npuqjd61d3fQ7Ih0XPSsbvz1p4GP4f1q44elHoc1fN8dW0nVsLMXaT53yfWogOM05vfmmcitYo8yTk3724pPIJFB25GOlGTt6cU7kkcUNhpayIqKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjNFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9k=" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Fri Jan 14 16:45:05 2022 )\n" + ] + } + ], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(size = (240, 240), color = (0, 0, 0), \n", + " mode = \"RGB\") #创建一张黑色背景图\n", + "\n", + "img.draw_circle(50, 50, 20, color=(0, 0, 255), \n", + " thickness=1) #画一个中心点在(50,50),半径为20的空心蓝圆\n", + "\n", + "img.draw_circle(150, 150, 20, color=(255, 0, 0), \n", + " thickness=-1) #画一个中心点在(150,150),半径为20的实心红圆\n", + "\n", + "display.show(img)" + ] + }, + { + "cell_type": "markdown", + "id": "f12af35b", + "metadata": {}, + "source": [ + "## 在屏幕上显示字符\n", + "\n", + "显示中文需要将中文字体文件存放到开发板中,也可以直接存放到 U 盘中,在使用 `image.load_freetype(\"path\") ` 加载 ttf 字体字库,path 为字体文件的路径。" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "0b0148ca", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAnX5YycZPY/3ajAJyB37V0Wj+Fv7V8Ka5rn2rYNL8v93t/1m4469q57IKgMMf7VAEdFFFABRRRQAUUUUAOK/KDTwuTx8yj8KTaAoYnr2re8GeGv+Er8SwaObj7OZUdt+M/dUn+lAHPlflBp4Xnj5lH4U6aIQzOhbO1yv5GtvwZ4a/4SvxLBo5uPs5lR234z91Sf6UAc7RUk8fk3EkWc7GK5+hqOgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKkgj864jizjewXP1NACleeflU/jTAvyk10HjPw1/wAIp4ln0cXH2gxIjb8Y+8oP9awdoKlg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lF5deWSbyce3mHmgD2L4d6TpnhHxlaafqQSfX54pTId+FsMIcc9G3A/hXjd5j7dcNjI81v50zz5fMMyyOH/vbjn86Yx3ZLHLUAafh+y0/UNagttUvfsVo5O6bbuxxwMe54rd8eaPpmk30X2NRaXbj99pobeLYYGDv/i3Dn2zXIFwPu8A9R6UruzfM5ZmP8ROTQBFRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//Z" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Fri Jan 14 16:49:17 2022 )\n" + ] + } + ], + "source": [ + "from maix import display, image #引入python模块包\n", + "\n", + "hello_img = image.new(size = (240, 240), color = (0, 0, 0), \n", + " mode = \"RGB\") #创建一张黑色背景图\n", + "\n", + "hello_img.draw_string(30, 115, \"hello world!\", scale = 1.0, color = (255, 255, 255), \n", + " thickness = 1) #在黑色背景图上写下hello world\n", + "\n", + "display.show(hello_img) #把这张图显示出来" + ] + }, + { + "cell_type": "markdown", + "id": "052c94a6", + "metadata": {}, + "source": [ + "\n", + "## 加载 ttf 字体与计算字符串尺寸\n", + "\n", + "支持中文或多国语言字体必备,使用的是 python3 默认的 utf-8 字符编码。\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7642ac31", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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WQrIKQqCMEcUtFMYwRIDkKBT8UUUrJCSS2CiiimMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKM0AFFFFABRRRQAUUUUAFFFFABRRkUUAFFJkCjIoAWijIoyKACikyDS0AFFFGaACiijNABRSZApaACijNGc0AFFJkCjIFAC0UZFFABRRmkLAd6AFoozmigAooooAKKKM0AFFGaKACiijIoAKKKKACiiigAooooAKKM0ZFABRRRQAUUUUAFFFFABRRRQAzPf0pNwYZBxmjgLkcV5r8UPEmraHJp6abdeUZd275c9KzqTjTV2dGEws8VVVKnuz0kOv8AepC6E/fr51/4T/xQf+Yj/wCOCkPj3xOeuo/+OCub67TPe/1Vxb0dj6N3jH3qN4/vV85/8J74o/6CP/jgo/4T7xR/0Ef/ABwUvr9Mf+qmL7o+jN4/vUbx/er5z/4T7xR/0Ef/ABwUf8J74o/6CP8A44KPr9MP9VMX3R9GE56Y/OlH0r51i8f+JlnTdqBZC6g/KPWvoW1fzbWJmOWKAk/hW9GuqqPKzHKq2AaVR3uSD5ufWsrXNes9Cs3uLqUZUfKuetax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OuCAR6EU48ClHSloO+uhClvCOfKT/vkVJj3pelA5pe8gk7vUQKKB780u7HakBzyKoVmtQxRj0p9JSAbkj3ozTutJj3pgOFFFFIYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUYoooAMUYoooAMUUUUAGKKKKACiiigAxRiiigAooooAMUYoooAMUUUUAFGKKKADFGKKKACiiigAooooAKKKKADFGKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACijNFABRRkU1HSRdyMGX1ByKAHUUUUAFFFFABRRRQAUUUUAFFFGaACiiigAooooAKKM0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBxfiHVr+z8d+GdNguNlne+b58W37+0ZHNdaJ4vMMRlTzP7m4Z/KvLPiuNYbxP4YHh/wD5CpMvknjjjk8+1XNW8FanYaQNctLh73xfFtLXedqsufmGzpwvFdsqEVSptu11+vXyIudxrlpfXmjzQafe/YrgjiTbu47j8axfA2lX+lafJ9oP2e1c/ubHf5n2c5OTv77jz7ZrV03WLTXvDbajYz+dDJC67wMfMAQf1rmvhfv/AOFYRby27M+dzZP3j3rGKapuPmVc7oypsMnmoF/vZGB+NKjLIgZWV17MpyDXifw20HXvEujyw6tfOPDHmOEt/wCKf5jn5hyMGuu8Ol/Cfiy48OXEhh0q5x/Y0DHcWwMyfN16+tXWwypTlBSu1/X3gnc9CHSg0ZpDXHvoMYMEZVuT3pnmp5wTzUEnePcMn8K4v4n+LT4Y8OMtpdmDVbkgWoWPcTgjccfSvOtT8R6HY6edYstVur7xkuzNz5DqCMjcNv3eFzXZSwk5RTWz/r7hXPfc9C3BpBIjBdrht3QjkGszRdVtvEOiwX1rI0ttPHgllKnPQ8GuX3y/Dy5ctIZvDUhyiE5azb0Hd9zH8KxVNuTj17Bc7osFfa8i5f7qk4J+lKWWNS7uqoO7HArj9D0281jUofEOux+TKmTY2ivkQA8Ekjhs8HnpWn4ufRv+EbuV8QswsDjzFQnceeMY5/KjktLlTHc2RcxS4SO4iZz/AHXBP5VI0kaElmC47scCvBdTu/D+k2B1XwHb3Cy28iLc30rvi2DEAfK33s9K7/4pyyn4Y3UscjCfEJVlODuJFbvC2cddxXO4NxFv2eahf+7uGT+FDzRxFQzoin+8wFeVxeE9bXwrF4maJ/8AhNFCkymXjZnH3fu/cq3Z6WnxEvL7UdRD3ejRqv8AZTK5jxIBh+n+0O9Q6EXrzaILnpXDfdPP96lVwSFUrlfvAHJX61yfgPVru7059N1qUNrtg2LqMfwKSdnI4Py4rhZbXxPf/GLXbXQL5rSyfy/t0pAYINvAAPr7URw13KLdraiuezxzRSn93IkhXrtYHFcv8Q9YvdE8HXV9ps4iuUkjUORnALAGueutJj+Hmraff6az22hyMf7Wldy+5jwnB6cnt61o/Fhkf4dXTgbozJCceoLDFONJe0j1THc7S2fzLaIk5Yxqx+pFOlliiIEkyRs33dzAZrJ1LWLPQPDH9pX8vk28UC/vMZwSMDj6145pviDQfEGnG88bavdXl5GzNaQLbvH5HPHK/ezxSp4dzTl0QXPfBkMTuyD0HpSjjPOT3rhvhh4sfxL4cCXU7y6lbMROHiKYUk7frxiu4xj5R8vpWE4+zfKxj6KDRU7agLRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA8+8c+HNc1rxR4eutFl+yC183zL3Abycj+6euaZjxy5/4R2QZUjB1/5fmHUjy+3pXoBGCOOnSjnOQOvWtXXailJbCSMrTdCtND0JtL06Ly4EjcIuerNnJ/EmsfwJpGoaP4DTTb+Ly7wedlM5+8Tj+ddWy8qzckfxelDknCldynqfSo9q+X1HY5X4d6Rf6J4OtLHUYfs9wkkjNFndwWJHNR69o19qHjvw1qVvButbLzfOmz93I44rsCQvJPHelGPzp+2lzubWrFYdRRS1l10Gc14m8Mrrvk3MEy2uqWmfst2ybxHnr8p4Nc+Ljxho8y2DeG4Na2EBtRykXmA99vbFeg7STjoR0NA3AHufWt4VnypNXQrECBoYfkhUfJkRLgAHHT865jStGvdX1BNb8R2/lSx7ltrHduW3B4JJHDZHPtXWrtbPGG70oJJOfy9KzjKSbCxyGl6Xq3hnXY7GxjN34fumJUM2DY4GTyeW3E/hR4y0O/uNS0zX9OQ3c2lh8aeTgXG4Y5J4GOtdfwSRj6ikTqQDx6elWqj5ucdjyXxM/jPxLoEuk/8ISlp58iM0i3C8BWB7V1vj3R9Q1fwE2nafB5t4TDhM4+6RmuuGM8fhQuOQf4at4nWKStbUVio0Uv9miEJlzb7Dz324rn/hzo99ongu1sdSh8i6jkkYpnOAWJFdUdufMJ4HSkGSctwx6D0rF1WouD2YWOS0DRr2w8feJtSuLfZaX3leTLuzv2jB47VykOma7qPxO8UnRta/s5YjCZU8oP5vy8DJ6f/Xr1nJJB6HuPWsDSfDZ0rxXrOsC581dS2futuPK2jHXvmuiniGnK+9rfl/kLlMOKw1/xnILXxHpn9maVbt+9tt4f7Z6HI+7gjNaPxC0e91nwTcadpkPmXBeLYmcZCsP6V1LEnAVtv9aFB4wOB0FYqq+e60t0K5TM1LRbTW9AGmalF5lu0aBlz0YYx+orkWtfGHhkbEtYPFCynCjy0g+zgdB75/pXoOCXY7cH+dKclxhsAfeHrThWtpuFjL0Oa7uNLhuL/S0068kzvtkIOPxFavVuvI7U1crJjOVPQelOHXnkjvWcrT2AeaKKKW+gC0UUUwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/2Q==" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(color=(255, 255, 255))\n", + "image.load_freetype(\"/home/res/sans.ttf\")\n", + "s = \"二进制例程\"\n", + "x, y = image.get_string_size(s, 3)\n", + "img.draw_string(0, 120 - (y + 5), s, 3, (255, 0, 0)) # show left-button\n", + "\n", + "s = \"可执行文件示例\"\n", + "x, y = image.get_string_size(s, 2)\n", + "img.draw_string(240 - x, 0, s, 2, (0, 255, 0)) # show right-up # wait fix\n", + "\n", + "image.free_freetype()\n", + "\n", + "s = \"bin example\"\n", + "x, y = image.get_string_size(s, 1)\n", + "img.draw_string(0, 240 - (y + 5), s, 1, (0, 0, 255)) # show left-button\n", + "\n", + "display.show(img)\n" + ] + }, + { + "cell_type": "markdown", + "id": "f093553e", + "metadata": {}, + "source": [ + "## 在屏幕上画一个椭圆" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "eb2cf1aa", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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cqMJfFG51xu/DGrKYP7M/s5pf+XrzC2w9+Peql74UuI7eW9sJhd6emNs44Lf8B61zqghsHqOgzV3T9XvdOuUntZyjR52qeR+VZqlUj/Df3mXsqkf4cvkyoYyjMSCjDsRURHHTnvXXf2jputoINStxDfy/evweAew2j8q57UdPuNNujbXMZDr6cgjtzVRl3NITvuUKKPworVmglFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCYMNpGOvf0qeKBprhY4/m3EAkCq6E52ngd66zwtCljBe6+4D/YlAEB/j3cdampU5IX+SM61TkhfrsixqmpS+E5P7M0tk88J+/uCoPmZHHHbFcY5eRnlZiWzySammlkuZWkdjliSAaj2BgWLfQetKnBwjb7xUqXJC3XqV6KKKs1CiiigAzRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAT+YSFGMN3PrXS6V4iiigjstVshewqdtuS20x56knvXMqRkAnA/lS7z8wPelKCqLkexE6aqJxexr+I9K/snV5IFkE0RAYSAYByM4rFYcn2rrkB13wczbNjaX1cnJfca5QqTgnj1qKMpP3XvEjDzcqbjLeJBRRRWhsFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUASDlRz+Fdb4Zk+2aHqmjQr5l5dBTEvTheTXKEELnHPrV7S7+40u+iu7Z/LlQ439eD1/Ss6kHONvmjOrT54W67oqSI8Upj7oSDTGYjGBgV0vinT4BcrfaWpk0+YZiZRkk4+bI7c1zLAk59aqnPnjzfeVSnzwv1IqKKKooKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAkXJPFP2gA/Nz3pI1JdfetrQ9AutXeSWKMFIiC25goI74zUyqKkueWxE6qpRc5bGrYgaN4J1B7lth1Hb9l/6abTz9K5JsqAG69a6DxTqkF1eCysT/AMSy0GIE/uk/e/WueyMknv0b0qaUWvee8iMPFqDm95fkQUUUVobBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF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AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//Z" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Fri Jan 14 16:49:49 2022 )\n" + ] + } + ], + "source": [ + "from maix import image, display\n", + "img = image.new(size = (240, 240), color = (0, 0, 0), \n", + " mode = \"RGB\") #创建一张黑色背景图\n", + "img.draw_ellipse(120, 40, 20, 50, 90, 0, 360, color=(0,255,0), \n", + " thickness = 1)\n", + "display.show(img)" + ] + }, + { + "cell_type": "markdown", + "id": "9aed0ce4", + "metadata": {}, + "source": [ + "画椭圆的参数比较复杂,暂无 API 说明。" + ] + }, + { + "cell_type": "markdown", + "id": "90ce1387", + "metadata": {}, + "source": [ + "\n", + "## 在一张图上截图、贴图、图像透明混合\n", + "\n", + "> 透明图层混合目前还没能完美实现所有通道的 alpha 透明混合,范围在 0.0, 1.0 之间,目前采用 RGB 透明混合,非 RGBA 融合。\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2d6904ba", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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ny5P+ebflR5cn/PNvyr0bYn/ADzX8qNif881/Kj6+v5Q/wCIrL/nz+J5z5cn/PNvyo8uT/nm35V6NsT/AJ5r+VGxP+ea/lR9fX8of8RWX/Pj8TzoxP8A882/KgRP/wA82/KvRtif881/KjYn/PNfyp/X1bYP+IraX9h+J5y0bjJMbH8K6PwoCv2sMCm7HUV0QSMdI1/KngKDwoXd6CorYtTp2S3PGz/j/wDtbCSwqpWv5iUUUV5p+YsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQMm0/OM0Mf3TeuK59nYSNlzjNb06akj28ryz67zJSOh/EfnR+I/Oucz7n86Mn1P51osOj2f9VLLWZ0f4j86PxH51zeT6n86Mn1P50fV0H+qn986T8R+dH4j865vJ9T+dGT6n86Pq6D/VT++dJ+I/Oj8R+dc3k+p/OjJ9T+dH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ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9k=" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Sat May 7 11:54:46 2022 )\n" + ] + } + ], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(color=(255, 0, 0))\n", + "img.draw_string(100, 100, \"hello\", 2, color=(0, 0, 255))\n", + "\n", + "mk = img.crop(90, 90, 100, 50) # 截一张图出来, x, y, w, h\n", + "imga = image.new(color=(0, 255, 0))\n", + "imga.draw_image(mk, 10, 10)\n", + "# imga.draw_image(imga) # py no-allow use self but libmaix support\n", + "imga.draw_image(mk, 100, 100, alpha=0.5)\n", + "display.show(imga)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "67e121a6", + "metadata": {}, + "source": [ + "\n", + "## 图像的缩放、旋转、翻转\n", + "\n", + "在 0.4.8 之后的镜像后才支持翻转 。\n", + "\n", + "- resize(w, h, func) # width, height, cv::INTER_LINEAR\n", + "\n", + "- flip(code) # -1 horizontal & vertical, 1 horizontal, 0 vertical\n", + "\n", + "- rotate(angle, adjust) # [-360, +360], [adjust uasge](https://blog.csdn.net/qq_40622955/article/details/119180886)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "4671f9ca", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ rpyc-kernel ]( running at Wed May 11 16:05:34 2022 )\n" + ] + } + ], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(color=(255, 0, 0))\n", + "img.draw_string(100, 100, \"KL\", 2, color=(0, 0, 255))\n", + "\n", + "mk = img.crop(90, 90, 50, 50)\n", + "\n", + "imga = image.new(color=(0, 255, 0))\n", + "\n", + "imga.draw_image(mk, 10, 10) # 原图\n", + "\n", + "imga.draw_image(mk.rotate(-90), 70, 10) # 顺时针 90 旋转\n", + "\n", + "imga.draw_image(mk.flip(1), 130, 10) # 水平翻转 horizontal\n", + "\n", + "imga.draw_image(mk.resize(80, 50), 10, 80) # 缩放到 (80, 50)\n", + "\n", + "imga.draw_image(mk.flip(0), 100, 80) # 垂直翻转 vertical\n", + "\n", + "imga.draw_image(mk.rotate(-135, adjust=0), 10, 150) # 顺时针 135 旋转\n", + "\n", + "imga.draw_image(mk.rotate(+45, adjust=1), 100, 150) # 逆时针 45 旋转\n", + "\n", + "display.show(imga)" + ] + }, + { + "cell_type": "markdown", + "id": "2a5daa36", + "metadata": {}, + "source": [ + "## 打开图像与保存文件\n", + "\n", + "现在保存文件根据文件名后缀存储对应图像格式,如 .jpg 或 .png 时会编码存储图片,如果想要在 cv2 中使用,以下为互转的示例。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6710f1c2", + "metadata": {}, + "outputs": [], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(size=(240, 240), mode=\"RGB\", color=(255, 255, 255))\n", + "img.draw_line(0, 0, 240, 240)\n", + "img.draw_rectangle(40, 120, 160, 200, color=(255, 0, 0), thickness=16) #\n", + "img.draw_circle(120, 120, 20, color=(0, 255, 0))\n", + "img.draw_string(40, 40, \"dalaoshu\", 2, color=(0, 0, 255))\n", + "\n", + "import cv2\n", + "import numpy as np\n", + "cv_img = cv2.imdecode(np.frombuffer(img.tobytes('jpg'), np.uint8), cv2.IMREAD_COLOR)\n", + "\n", + "cv_img = cv_img[ : , : , (2,1,0)]\n", + "\n", + "tmp = image.load(cv_img.tobytes(), cv_img.shape)\n", + "\n", + "tmp.save('tmp.jpg')\n", + "\n", + "img_encode = cv2.imencode('.jpg', cv_img)[1]\n", + "\n", + "tmp = image.open(img_encode.tobytes())\n", + "\n", + "tmp.save('tmp.jpg')" + ] + }, + { + "cell_type": "markdown", + "id": "9af24c0d", + "metadata": {}, + "source": [ + "\n", + "以上操作都是在 linux desktop 分支下测试的,其他平台需要自备 opencv 和 numpy 喔。" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d8b52d1c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tmp.png <_maix_image.Image 0x21d3550 \" width\":160, \"height\":120, \"type\"=RGB, \"size\":57600>\n" + ] + } + ], + "source": [ + "from maix import image, display\n", + "\n", + "img = image.new(size=(240, 240), mode=\"RGB\", color=(255, 255, 255))\n", + "img.draw_line(0, 0, 240, 240)\n", + "img.draw_rectangle(40, 120, 160, 200, color=(255, 0, 0), thickness=16) #\n", + "img.draw_circle(120, 120, 20, color=(0, 255, 0))\n", + "img.draw_string(40, 40, \"dalaoshu\", 2, color=(0, 0, 255))\n", + "\n", + "# 保存图片到 test.png 中\n", + "img.save(\"test.png\")\n", + "# 读取 test.png 中的图片\n", + "tmp = image.open(\"test.png\")\n", + "\n", + "# 0.5.0 以后支持导出 jpg 、 bmp 、 png 、 默认 rgb 等格式的图像数据到 bytes 变量中,方便向外传输图像数据。\n", + "img_bytes = tmp.resize(size=(160, 120)).tobytes('jpg')\n", + "# >>> img_bytes = img.tobytes('jpg')\n", + "# >>> img_bytes[:2]\n", + "# b'\\xff\\xd8'\n", + "# >>> img_bytes[-2:]\n", + "# b'\\xff\\xd9'\n", + "# >>>\n", + "# >>> img_bytes = img.tobytes('bmp')\n", + "# >>> img_bytes[:2]\n", + "# b'BM'\n", + "# >>> img_bytes = img.tobytes('rgb')\n", + "# >>> img_bytes[:2]\n", + "# b'\\x00\\x00'\n", + "# >>> img_bytes = img.tobytes('png')\n", + "# >>> img_bytes[:2]\n", + "# b'\\x89P'\n", + "# >>>\n", + "\n", + "# 0.5.2 以后 image.open 支持直接打开上述格式导出的 bytes 编码数据。\n", + "tmp = image.open(img_bytes)\n", + "print('tmp.png', tmp)\n", + "\n", + "tmp.save(\"tmp.png\")\n", + "\n", + "display.show(tmp)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "d7e37e94", + "metadata": {}, + "source": [ + "## 【传统视觉基础】寻找色块(颜色识别)\n", + "\n", + "> 该功能需要更新到 0.5.1 版本以后,填色的顺序为 [(L 最小值, L 最大值, A 最小值, A 最大值, B 最小值, B 最大值)]。\n", + "\n", + "使用 find_blobs 的查找色块算法,查找图像中符合 LAB 颜色阈值的色块,可以在列表中放入多个阈值区间进行匹配,通过阈值编辑工具可将目标颜色变成白色意为提取,其他颜色全变为黑色表示忽略。\n", + "\n", + "如 `blue = 13, 54, 11, 48, -91, -28` 为什么是 蓝色 的 lab 阈值,这是因为使用 LAB 阈值工具可以获得两个期望颜色区间的最大和最小的 L A B 值,所以上图对应的下图示意图的顺序。\n", + "\n", + "
\n", + " \n", + "
\n", + "\n", + "现已支持在线图传调试 LAB 阈值 [wiki.sipeed.com/threshold](https://wiki.sipeed.com/threshold) ,动态调试效果请看 [Github 实现](https://github.com/junhuanchen/thresholding-filter-browser-html)。\n", + "\n", + "注意,在线调试使用的是 OPENCV 的函数,和 OPENMV 的实际表现在 Y 通道上有差距,如果遇到调试时可用,实机有差距时,只需要将调试出来的 L 值通道,对其 ±10 或 ±20 就可以使用了。\n", + "> Lab颜色空间中的L分量用于表示像素的亮度,取值范围是 [0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是 [127,-128];b表示从黄色到蓝色的范围,取值范围是 [127,-128]。 \n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9220f2c1", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from maix import image, display, camera\n", + "blue = [(34, 100, -38, 3, -128, -28)] # 0.5.0 以后蓝色的 lab 阈值,0.4.9 之前为 [(13, 11, -91, 54, 48, -28)]\n", + "while True:\n", + " img = camera.capture()\n", + " blobs = img.find_blobs(blue, merge=True) #在图片中查找lab阈值内的颜色色块 merge 合并小框。\n", + " if blobs:\n", + " for i in blobs:\n", + " img.draw_rectangle(i[\"x\"], i[\"y\"], i[\"x\"] + i[\"w\"], i[\"y\"] + i[\"h\"], \n", + " color=(0, 0, 255), thickness=1) #将找到的颜色区域画出来\n", + " display.show(img)" + ] + }, + { + "attachments": { + "123.jpg": { + "image/jpeg": "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" + } + }, + "cell_type": "markdown", + "id": "0e05cd48", + "metadata": {}, + "source": [ + "## 【传统视觉基础】阈值处理\n", + "\n", + "该功能需要更新到 0.5.3 版本以后\n", + "\n", + "基于上述获得的 LAB 阈值,可以直接应用到图像上(俗称二值化),便于后续的寻线寻迹预处理,可以解决红、黄、蓝、绿线等各种场合。\n", + "\n", + "![123.jpg](attachment:123.jpg)\n", + "\n", + "这里演示的是蓝色跑道白色数值的场合,当然具体情况具体分析吧!\n", + "\n", + "> [不想 `pip install -U maixpy3` 联网下载的可以到 pypi 下载 armv7l 的 whl 包放到板子里使用 `pip install maixpy3*.whl -U` 安装](https://pypi.org/project/maixpy3/0.5.3/#files)。\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9240e3f4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "from maix import image, display, camera\n", + "THRESHOLD = [(34, 100, -38, 3, -128, -28)]\n", + "while True:\n", + " img = camera.capture().binary(THRESHOLD, invert=False, zero=False) # invert 取反阈值,zero 是否不填充阈值区域。\n", + " display.show(img)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c7982339", + "metadata": {}, + "source": [ + "## 【传统视觉基础】寻线处理\n", + "\n", + "常用于一些十字线(路口)的识别。\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a185ce25", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from maix import camera, display, image\n", + "while True:\n", + " img = camera.capture()\n", + " tmp = img.find_lines((0, 0, 240, 240), 2, 1, 1100, 50, 50)\n", + " for l in tmp:\n", + " img.draw_line(l[0], l[1], l[2], l[3], color = (0, 255, 0))\n", + " display.show(img)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f8ec1490", + "metadata": {}, + "source": [ + "## 【传统视觉基础】寻线寻迹\n", + "\n", + "找线算法是面对小车寻线而开发的一个算法。主要的流程是,灰度化 -> 自适应阈值处理 -> 形态学运算 -> 图像最小二乘法。完成算法流程后返回一条线的信息,让小车能够根据识别出来线的信息进行运动。这个接口比较适合做图像寻线。\n", + "\n", + "对应实现 [点我跳转到 github](https://github.com/sipeed/MaixPy3/blob/release/ext_modules/_maix_image/_maix_vision.cpp#L513-L612)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d3306f13", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from maix import image, display, camera\n", + "import time\n", + "\n", + "while True:\n", + " img = camera.capture()\n", + " line = img.find_line()\n", + " img.draw_line(line[\"rect\"][0], line[\"rect\"][1], line[\"rect\"][2],\n", + " line[\"rect\"][3], color=(255, 255, 255), thickness=1)\n", + " img.draw_line(line[\"rect\"][2], line[\"rect\"][3], line[\"rect\"][4],\n", + " line[\"rect\"][5], color=(255, 255, 255), thickness=1)\n", + " img.draw_line(line[\"rect\"][4], line[\"rect\"][5], line[\"rect\"][6],\n", + " line[\"rect\"][7], color=(255, 255, 255), thickness=1)\n", + " img.draw_line(line[\"rect\"][6], line[\"rect\"][7], line[\"rect\"][0],\n", + " line[\"rect\"][1], color=(255, 255, 255), thickness=1)\n", + " img.draw_circle(line[\"cx\"], line[\"cy\"], 4,\n", + " color=(255, 255, 255), thickness=1)\n", + " display.show(img)" + ] + }, + { + "cell_type": "markdown", + "id": "5c5746ef", + "metadata": {}, + "source": [ + "\n", + "## 【传统视觉基础】获取区域的颜色\n", + "\n", + "颜色统计算法,统计感兴趣区域最多的颜色并返回。\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "09c23d85", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from maix import image, display, camera\n", + "import time\n", + "\n", + "while True:\n", + " img = camera.capture()\n", + " colors = img.get_blob_color((100, 100, 10, 10), 0, 0)\n", + " img.draw_rectangle(100, 100, 110, 110, \n", + " color=(255, 0, 0), thickness=1) #将找到的颜色区域画出来\n", + " img.draw_rectangle(9, 9, 21, 21, \n", + " color=(255, 255, 255), thickness=1) #将找到的颜色区域画出来\n", + " img.draw_rectangle(10, 10, 20, 20, \n", + " color=(int(colors[0]), int(colors[1]), int(colors[2])), thickness=-1) #将找到的颜色区域画出来\n", + " display.show(img)" + ] + }, + { + "cell_type": "markdown", + "id": "c6d5ca8c", + "metadata": {}, + "source": [ + " \n", + "## 【传统视觉基础】识别二维码 (过时)\n", + "\n", + "这是标准 python3 库的 libzbar 实现,查找画面中出现的二维码,但功能比较有限制,比如不能输出定位框,现已被 image 实现替代,往下看传统视觉章节可知。" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "03c41e0c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAeADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDdpwpvenVpuDjzahTqbTqOUlytoIM04E0cU7ilcd2t7jcU7FNzTs0D5odUOApcU3NKGoGOxRim7qXNADsUYpM0ZpALijFJmjNAD8UYpm6jdQBJijFM3UbqAH4oxTN1G6gB+KMUzdRuoAfS1Hupd1IB/FHFM5o5oAdmjNNzRmgB2aM03NGaAHcUcUzmjmgYuaM03NGaAHcUvFM5o5phKL3uPIFIQKbk0hJotcai5dR+BRgVHk0ZNIQ/FGKZuo3GgB5zTDmk3NRk0AGKMUmaM0ALSU0tSbqBD8UYpm6jdQAtJTS1JuoAXFJigtSbqAFxSYozRmgQ05pDmnFhSbhQAuKXFOxS4q4lJ2iN2HaA3yFvxpR8zByxbb7YpQSGUkZxWVqc16b+ztre98nzt38GelZ1J2NsHR9tI1toZsbuPpQTk7CuV9aym03VymBrG4/9cwK0rVJ4rYJPcb39dtJMurSUdq6Y/FLinAUuK0Rzc01srjcUoFOxS4oEM20oWnUtADMUoFOxS4pANxRinYoxQAYpcUUuKAExRinYooAbijFOoxQA3FGKdRigBuKKdRSASinUUAMop1FADaKdRQA2inYoxQMbijFOooAMMv31x+NIFJPTiqd7a3Vyc2d79l/4Duqk+n60I2La35mATjygKylM7cNhVUhf2psEBD855PSk5xg9BWdoU73mjxT3By+SM/Q1pctvJ+6K0pyuclSkqc7e1G4oxTqKZIzFGKdRQA0rSbadmkoAbikxUmKQigBmKTFOpKBDStJtp2aSgBhFJipMUhFADKSnUlADaSnUlAhpFJipMUhFAD6dTadVPcHvL1E9Ky78f8VBpf8AwKtb0rKv/wDkYNL/AOBfyrGtsehgP48vQ1u9FFFa7KJwSjOnJtPQz725mh1mwt0+7Nu/StIfeyp+Ydayb/P/AAkejuOib/5VqkxrubeFPXk4rKFSzkdmJinGhKMdfIflcfMcmkHPTiqlpqdlen9wcEHHzcfzq6ctw3FXzczOTEUpQglU2uKpAZVHRazL24ng1vT7VW+WXdWiwzGV7msnUyv/AAkejknld/8AKpqvlR3YWnGdWVKGzRsKQHC9lrOvLme31vT7VT8su6tBvmQr3NZWpbT4k0ck8rv/AJVNeVofMnAKM8RKUld22NdgByE5PfNKVZMA/MDSM6ZcySBY1554qnY6nY3u8W8uJFOPmGP51rKp7/yOaOHquLnSp31LtFH1ooi9DFuaqKEfv8h1FNpGZVGWZVAGeTilGVmVPlVRKlFryXceRjrH+tIoLd9oqnZ6rY35PkXHIOPmGP51cbrhqL6lVINKUal1qLwHVR0XvWZf3U9vrWn2qt8su6tI/NEV/iNY+pbT4k0ck8rv/lU1djpwMIzqShUXNGxsDCuqjotZl7cz2+t6faqflm3VpvlkK9yetY2p7T4k0ck8rv8A5VNV3v6lZeuabXkzaIpKC3NGa17+hxXtGEfMPlxkJye+aUgxnDDcDTWkC7y7hY1GeaqWeqWV9vFvLiRT/EMfzqOc1jTxKvVjG8e5dxRim7qN1VuTGnKFNzUrsy9Qvbi01ixSN/kdX8wY68cVJoU89xo0ctxJukdm38e/FVNXO7W9O3jHySfjxUnhnC6Fb8bhvf8AHmsIy/eHq1qUIZfF21Nh9wgdkPJUn8qztCupL/SILqU8lmB/A1eduJGU/KUP8qyvDIX/AIR+EZ4Lvj86u16hw0lB4GTtr3NjFNcfupP9w/yozSOf3Un+4f5VVT+HIxpfxY+pleGR/wASCD/ff+da+Kx/DJ/4kEH++/8AOtbdRT/hxN8d/vcvQXFGKTNGao5RcUYpuaN1AC4oxTd1G6gB1JTS1JuoAXFJigtSbqACiiigBKbTqbQIKSnUlADaSnUlADaSnUlAD6dTadVvcT3l6h6Vl3//ACMGl/8AAq1PSsu//wCRg0v/AIFWNfY9DAfxpehrd6WilxWz2iedJJQbpvQwdduVs9X0qZ28sKHD98Ejin2uk3F7Ck2tsXCnKAHGB26VD4iWzGp6Y18S1uS2/wBz2roo9wTk5XA2+4rmitZHvYnERo4OhKnHXzKd/pdneRqJhjyh+6C8c/hUej3UtxbmC5/4+7Y4l+h6fpWiATkoMu3TPasgkv4mDWfVf+P4fh8taSXIzko1I4unVo1N4mwBtK1RuLES6jZ3B/5Ybv1rQI4FNbJYKP46qUedHDTnKDbp7odsGAeiisDXriKz1rTLmeXCYcKMd8cV0PYDqprB1yzhvNd0q3uYsxfMQc1lil7nzO/K5UvrTnPawtpo9xfQrPrTGZwcpCDt2jtyOtaN9pNjfRKJYt2wfJMp27T24HWrYmjjbeDkYxR5yZ4k+Q9sVryXn8jnqYucW50qmlzP0e5lmt3tb87ru2OJPoen6VqbMqWPT0rGuSLXxHZNAdz3u7z/APgI4raJAZT69RU03oVjUpzhiIfDNX9GQXVxb2UEs1w3lbRjzOuSelY9jolxfWqT62zSnJKKDjyx26dc0nilJp4Le3WTybJT+/frsOePrS/Y9X2jbrmYyBhfKHSsnKzOzCw9hhYyVZKU3u+hoX+j2N7bRtPDwoPlhTjnt0qLRrmWWA298+2+gOHGM4Hb9KqrZawzFjrgCHt5Q4o03Srux1SW8m1fzmmx5w8vHTpVJ6in7OdCUJV1ORvY+YVjamo/4SXRv+B/yrXEylxWRqRB8S6L/wAD/lTqbHNl/tVUlCS6Gyw+U1haoP8AiptI/wCB/wAq3mPymsLVD/xU2kf8D/lRNb+o8s93ENeTNYAGQM4yO3tUN1cLY208l0cqo+97npU5yEYDkdz6Vja8CDbrMc6Wh/0lvf8Ah/WqnK1/QwwdP2leCfdkVppVxe2yz60xlYHKRA42jt0rRvNJsr5FEsWSg+SRTt2nt0qy8qxESq3BUc47VF9pCjCviM9Vx1qZRsbTx2JnJVF7q/l7eRV0i5le2e3uzuubU4n+h+7WiVKgZ6noKxFkEniIPZnO7/j99+PlrbdwrnP3z0qoEY2jTclUXuv+Xt5mJrCM2s6bhScLJz6cVN4bATQ7YbCpLPwe3NaXmR78lQSO/pQZFjTBQID2HapjD94aTxs6mFjRtp3HOC6SLngjFVdOsvsFjFADyCTU3nx4C5609XV8SE8CtGrVDmhXnHDyo207i0j/AOqk/wBw/wAqfTXH7qT/AHD/ACqan8ORNL+LH1Mrwz/yAIP99/51qnrWV4Z/5AEH++/861TRT/hxN8d/vcvQXGKTrTJG2ioPtYWqOUtYB600oKZFMsvSpWwtADGAFNwDUgZWprMq0AIQKTAoMi0nmLQAuBSYFBkWk8xaACkNOFIRQAq06kFLQIbSU6koAKbTqbQAlNp1NoAeKWinCrtZhB8rsNA+9WXqH/IwaT/wOtfHDVkaj/yMGk/8D/lWOI2O3LI3rts2DRS4NJWraZwy5YTk4XMPXLaK61XS4Z8sp3cAdD2qw41jTZCCo1FH6tkL5QH861hyzPwrr95iM7v8KFAA+UHn7w9KzdFM9B5jaEVKF7GSdbe7xFpNs168XEyn5PKJ+vWrthp5t988j+ZfS8ySdN/tj2q0qhSdiqidnAxmnMF+RjHyvXnpQomVWvcKb3p1NrRI5L3JRlcnrjpWNq6keIdK2KTHh959OK2lwEB64prL+6YMgMn8B9Kmep04Sp7J38jJkZvNf5zj6U1SfMX5z+VTOkxlf5v0pFt5zKnz/pRDQ5V7yt5kF8hOuaIAhK/Pvb0rTeOZmOTlR0qcKwQAIC38LelV/MfnZksOoqYROirXc3DyRFeWYntfKu1yknVs9COlc402p2j+SshvQ/UY27QK6hizKSMmQ/eHpVGa3lIKnkfxHHSicR4fE+yTT7mTb69ZgY8589xsNX7e8W6OY5T+IqeGyLr8+3/vinJYbW+QfpThGwVqmAmv3cQgmZGI67jzRqKH/hJNH2oTGofJ/CpFtyk2fXpWoqkeWrKDIo4PpRONycNifZP3BWGSyn7q9Kw9TBPiHS2CEqN24+lb2OFUdV61AwBcsUBYfdNHKVh67ikIwb7g6VDd28GoQ/ZphgDofep+QML1o/h6fNRymMKrUl6nPzjU9PfDTf2lj7yY2bB/WoW1WSdMWFqZl6OxONlb10rMAFGH7n1qp5QY/KmE/iAGKzVOx2vGx2q0/eGaTZLaMZZ/muH/AIqnvWkjf5jyehqa2j2LtX5ox/EaLiASjzXP7sVotDkrVJvWr8Jzms31xbyWkUchiWQMXIGenSrek3E95pMLzymWR878jGMdKv8A2YM8YKg9eoqUwtsK4AHsKhQsddTFQll8aahYzyK07UYiFVzb+1XIYysYrRaHEoyfK1OxLTX/ANVJ/uH+VOpJB+6k4/gP8qipK5VOSnUhJ33Mjwz/AMgCH/ff+da/pWT4Z/5AEP8Avv8AzrWNFM6cfKn9cqvXVEFypAqsVVo6tTqzJzVZVwvNWcgy0Xyxip7l9sdNhTc9STQ+YcUAUradudxxSPOXl68VZeyVmyvFM+wjd1oEU55JAetJbvIXzmrUlkWTNENkVGc0ART7y3yU2HeH+erDROW+WmrE4f5qBlwUGnAUGgBRS0gpaBDaSnUlADaKU000AKaYRT6MUAGaXNAWl21cnqK16gLywJ5HpWfqOlz309pNbXP2c2+7JIz1rRAy3zfIfSlwrL5bpkP0OampG6NaNb2NXQyP7O1dl41z8PKFadtFPBABcyfaT69KlADDGN1KqgHH3ahU2japi5V1HntqFOFNp1aJNHLzWcuWN7C0UUUCtcWm96cab3ouOxPRRRQRN+5ddxAgp4UUlLzQaTjyTt5BRgegooouK6Sn5BnPYUm3PalApaLimk2vQbj2oxTqKV7Di0l8I0RgU8DFJS4ouKLTYjGomqUimFc0XBtRT9SOipNlGyi5TsmyPFGB6VJso2UXJVo7zuR4ox+VSbKNlAJ231I6Kk2UbKXMU+drkbI8+1JmpAlOEdAnGC3RnX1pez82195B/wB3NUf7N1kqVfXtwIxjya3hGBwRml8sr919n4ZpOB2QxklTTVjO0vT20/TIbXdkqST+dWjw7t9Kl8tVJctmgJtHruoWhjVr1a1VS01I8U3aKmKU3ZTMiPAoxUmyjZQBHim4qUpSbKBEeKTFSFKTZQBHijFSbKNlAyKkNSbaQrQA0UtAFKaBDaKKKAGmoyKlNNIoAKKKKAH06m06qEFOptOoAAKDThQaAEApaKWgAooooAKb3p1N70AT0UUUALRRRQA6im5ozQAtLTaWgB1FNopAOzRmm0UALRRRQMdRTaKAHUU2igBaKKKADNGaSlxQAtFNooAdSUUlIANJRSUALRRRQAlFFFACUUUUAJTadTTQAtNp1NoAO9Nl6U/vTJelAEYpaQUtADKKKKACm06m0AJRRRQBCbwE043YArK5BqTBIqhF8XoA2+tXIzujzWJ5ZLA1tW/+pAoAkFBoFBoASnU2nUAFFFFABRRRQBLRRRQA8cjJoyDxSVkaprEen8sQKANfaPT9aMD0/WuQPjSz/wCeopp8a2f/AD1FAHY7KXb7VxX/AAm1l/z2pP8AhN7L/ntQB2+Pb9aK4c+ObL/ntTD46sv+e1IDu8UYrgv+E9sP+e1H/Ce2H/PagDvdp9qNp9q8/wD+E9sv+e1KPHlkSB53U0DPQR60hHes7S9QF7ECD1FWL+f7NCW9qALPbjFNXJOOK4G68c21tcFDL3qFvH9oGyJaAPRhjuwowD0rz+z8cW13cLGjck13FlOZrdXXoRQBZ4Bxt/WlI47Vg67rCabGXZ8YrlofH1rLLsMpznHSgD0XaByKNveqWm3X2u3DeozV4HK0AIBijaf7wocnaSa5DX/FUOlMVZsUgOvx9KTA9q81/wCFi2n/AD1NJ/wsS0/56mgD0ofh+dB/D8681HxFs/8AnrQfiLZ/89aAPSfy/Okx/nNebf8ACxbP/nrS/wDCxbP/AJ60Aek4H+TSYH+TXm//AAsex/560f8ACx7H/nrQB6OVygaggFwTXnf/AAsWxIA83ipLXx/ZXl2sKy85xQB35XFMIxzUVnN58Ab2qdjlKAGnrTX6U7vTX6UARiloApTQAykp1JQAlJTqSgBKbTqbQBGLNakFslS07bVCI/s6ipFUKKUClJAoAWiiigAooooAKdTadQAU3vTqb3oAmooopDA9DXnfj8kWZwTXop6GvOfiB/x5mtImcjzIu7ttUnP1qwtjdlchWqXR4ll1JEYcE17Hpug2r2yEoOlS5FJHi/8AZ94f+WLUv9m3n/PFq91/4R+2/ur+VH9g2390flQpA0eF/wBl3v8Azxam/wBlXv8Azxavd/7BtfQflS/2Daei/lRzCseE/wBkX3/PFqUaRff88Wr3b+w7b0H5U4aHbeg/KjmDlPA5tLvY4xuQiqitl0Dddwr27xBpNvHbNhAPlNeIuM3H/bT+tNbEvc928KriwTH90Vp6wjPZkDris3wnn7Ev+6K6KSISJg1ktzV7Hg2o6HqDapM625IJ9apDw/qRHNufzr3c6NbHc7IMmlbRrX5MIK2cyVE8V0fRb2HVYHZCADXtulKy2Sq3YU3+x7ZSHCgEVdWNUEijtis2yrHCeP8AjT5iK8nsXC3wLf3hXrHj7jS5s142ZNs+5e1aR+GxmnY9/wBAv7dbEDd/CK2E1C3kXbnJr5+g8Ualbx7UnIA9q7HwTrl7f3O2abPPpWKjZ3NFI9YY5iP0rxz4icSx/U17ADmH8K8f+I3+tj+prWnsZ1I6nCwQSXMpWKMk1dHh/UWjO2A1r+BoI59QAY559K9ng0iDyRgL+VZvc0UdDwD/AIRzVP8An2P50n/COap/z7H86+hDotr/AM8xSf2Laf8APMVVybHz2fDuq/8APsfzpP8AhHdU/wCfY/nX0J/Y1p/zzFJ/Y1p/zzFHMFj57Ph7Uv8An1P50n/CPal/z6n86+hP7GtP+eYpP7FtP+eQqZblR2PnK5067tkYyIQKn0LB1y2z616f48063gsZCiAV5jomBr1v9aqWxMXqfQmkf8eC/QVebtVHR/8AjwX6CrzdqziWIOlNk+7Th0psn3apgMFLSCloAbRRRQAlNp1NoAKbTqbQBLTqbTqokKdTadQAUUUUAJTqbTqACnU2nUAFN706m96AJaKKKQ0L2Neb/EL/AI8zXpHY15v8Qv8AjzNaRM5HDaB/yFrf617ppX/Hin0rwrw//wAhe3+te7aV/wAeKfSs2ikxt9qUdoN7MAKyj4qtieJlrM8dkrpzMrYNeNtcTYYmZutCQNnu/wDwldt/fX86b/wldt/fX868F+0Sf32/Om/aJP77fnRYSZ73/wAJdablQSqSa6C0u0uVV15zXzfYyu19F+9Y81754ZJ+wxZ54osaIPE3/HjJ/umvA24vT/v/ANa9+8S/8eMn+6a8Al4vT/10/rVrYxe57x4TP+hr/uiujAzXOeERmyX/AHRXRk7M1itzZ7CnA6UZNQ/bIAeop6yJL9000K424lCQM2MYrmr7xbBa3bRtOFI9q6G/JNpIo54rxPxTp97NrEnlxMR7GtFEnmO0v5U8RQlFk3g+lYknw8RYy4jJJ5q54DgktYx9qQ/ia9BubqBoPlcDip5tbBONj551rTTpl6yEYrp/h2MXcx9xWf44kWXVmx0zWh8Ozm8mHuKqrorhBHs6/wCpH0ryD4jf62P6mvX1/wBSPpXkHxG/1sf1NKnsFR6md8Px/wATBvqK9xgH7hPpXhvw/P8AxMW+or3GE/6Mn0rN7miehjat4ii00DzJQKyT47sgwPniua+JJxDlQR+NeViR9vJP51s4mdz3j/hPLH/nuKP+E8sf+e4rwfzG9T+dHmN6n86zaC577b+M7S6uY4o5gSa6mGQzRl1fr7V85+FST4htVJJBJ719C6aAbSIBe1S9zRbHHfEH/kGyV5Jov/Idg/3q9b+IP/IOlryTRf8AkOwf71bPYxW59DaP/wAg9foKvNVDRv8AjwX6VoHoKxiaje9NfpTj1pr9KpgRig0Cg0AJRRRQAlNp1NoASiiigCSnU2nVZIU6m06gBaKKKQCUUUUALRRRQA7saavWndjTV60AS0UUUMY4/dNeafEMf6Ga9L/hNeb/ABCH+hmqiZyOC0D/AJDNv9a940z/AI80+leDeH/+Q1b/AFr3rS/+PJPpWc9zSGxyPj7/AJBk9eLSHk17V4/H/EsnrxOX7zVp0M+omaKbRUjZbsP+P1PqK+gvDX/Hin+6K+fLD/j9T/eFfQfhr/jxT/dFSaRE8S/8eMn+6a8Bl/4/T/10/rXv3iX/AI8ZP9014DL/AMfp/wCun9a0Wxi9z3nwkf8AiXoB/dFauqzPDaEj0rK8JDOnoR/dFbGqQNNaED0rFbmr2PH9Q8a30OozwqDiM+td54P1WbU7SOWVDlveuUu/A7T308ysf3h9K7Lwro8unW8cJb7vtWkiYo6l1DoVPes19Et5HLMB+VafBowDxUopnBeKT/Y1sZbZcY9K88fxxqLhhyB0616x4o0dtQtzEH6+1cCfh2xBy55PpVIlnC3t7NeuzzPXY/Dpg15KB6irP/Cud2ck/lXQ+GPCp0uaUpnt2oYI9AH+pH0rx/4j/wCtj/GvYekP4V458R/9bH9TTp7Cqbmb8P8A/kIN9a9yg/49k+leG/D/AP5CB+te5Qf8eyfSs3uaLY8r+Jn+pryn+GvVviX/AKmvKf4a0sZXG0UUVNgubnhP/kYYPrX0Npf/AB6L9K+efCf/ACMMH1r6G0v/AI9F+lQ9zZbHIfEL/kGy15Fo3/Idg/3q9d+IX/INlryLRv8AkOwf71bPYxW59DaN/wAeCfQVoHoKz9G/48E+grQPQVjE1GnrTZOlOPWmydKpgRilpBS0AJTadTaACm06m0CEooooAkp1Np1WIWnU2nUAFFFFIBKKKKAFooooAd2pq9ad2pq9aAJqKKKGNC/wmvNfiJ/x5mvSv4TXmvxE/wCPM1UTORwfh3/kOQfWvetK/wCPBfpXgvh3/kOQfWvetK/48F+lZz3NIbHJ+PVJ0+UAZ4rxZ4m3cxN1r6N1TS47+N1YZrEHgu1AUmJTWnQz6nhXlSf3T+VHlSf3T+Ve7f8ACF2n/PBaP+ELtP8AngtSNnimnxut5F+6PWvf/DIY6fF24rPXwbbrtcRAEV0lnaLaxqi8YqTSJleJv+PGT/dNeASf8frf9dP617/4m/48ZP8AdNeASf8AH6f+un9a0Wxi9z3rwj/x4L/uiuk/hNc34R/48F/3RXSD7prFbmr2E2J6D8qUIvajil4qmCFzuHIxTA6Zx5wH4VHcyPHCzDnArzDW/HE2nX7J5ROD61UUTJnqR8uT5eCaQRqPlKjH0ri/CniOTWFEldlcSlYN4HOKlFMVViDkkLSjythIArzHxH4zl0u9aIRH/vqrHhTxbJq83lmI9f71DBHo8g/dfhXjPxHOJI/qa9kzmL8K8c+JK/vI/wAaunsRU3Mz4f8A/IRP1r3S3/49k+leF/D/AP5CJ+te6W//AB7p9Kze5otjyz4kIzwYTJ/CvLPs8ygZjb8q+ltR0WO/A34P4VQbwjb7gBGn5VpcjlPnf7LL/wA82/Kj7LL/AM82/Kvof/hEbX/nmn5Uf8Ija/8APNPyqbhynifhWGRNetWaJgATX0FpeRZxH0FZcXhS2gmjlSJQRW9DEIoio4xUPc0Wxw3xB/5B81eQaN/yG4f96vX/AIgf8g+b6V4/o3/Ibh/3q2exitz6H0b/AI8E+grRPSs7Rv8AjwT6CtE9Kxiaje1D/co7UP8AcqmBEKDQKDQAlFFFACU2nU2gQlNp1NoAlp1Np1UIWnU2nUAAoNAoNACUUUUALTqbTqAGmgUGgUATUUUUgHDoK81+In/HnJXpX8Irzb4h/wDHpJWkWZyR5/oDpHqiMeea9w07VLcWaDYDx/erwBXeJw6DaavDXNSRAEuGUfSosXc96/ta29vzo/te29R+deCnxDq3/P03/fNMPiLVv+ftv++aLBc99/ti29R+dH9sW3qPzrwD/hINW/5+2/75o/4SDVv+ftv++aVh3Pf/AO2bb+8Pzo/tm2/vD86+fzr+rf8AP43/AHzTD4g1b/n7b/vmiwXPavEWrQNasAo+6f4q8Kbb9pznH7z+tTTazqE0WHuHb8KqRgiRCyljuHaqbISPoLwj/wAeC/7oropZViQkmue8Ic6en+6K0daLR2jMD2NZs0Qj63AH2uVBX3q1b36XLZQAg+9eAatq+of2pOqyuFVvSvTvAVxNdWMTSyHPuKuSCJ2N/wD8ecn0rwTxkf8AidSfWve9Q/485PpXgXjPP9tScHr6VUNDOaudh8N/9Slen3P/AB7P9K8x+G+RCmQR9a9Ouf8Aj2f6Vl1NnseE+Oj/AMTirvw6/wCPp/qKo+Oc/wBsdD1Par/w6U/anyCOR1FaT2M6ejPalP8Ao34V478SB88f417GB/o34V438SCd8eATyegqYIczF8EXkNpqALnHPevZbfxBarACJl6etfOUckschaMMD9KnGp3xjI8yQfgaJoIn0X/wkFqP4k/76o/4SK1H8Sf99V85nULw/wDLWX9aab68/wCesv60WC59G/8ACQ2v95f++qT/AISG1/vL/wB9V86fb7z/AJ6y/rSfbrz/AJ6S/rRYLn0X/wAJFa/3l/76o/4SG1/vL/31Xzn9tvP+ekv60fbbz/npL+tMR6t451i3ubGRUlUn2rzLRmU67B/vVSlnuJkYO0h/A1c0NCut23yt19KLhY+iNF/5B6/QVoHtWfov/IPX6CtA9qzLE7U2T7lO7U2T7tUBGKWkFLQAlNp1NoAKbTqbQAlNp1NoAlp1Np1USFOptOoAUUGgUGgBKKKKACnU2nUALTe9OpvegCaiiikwQvbBrB1zw/HqqYNb4PzYNGAGoTBo4MfD+2/54frS/wDCv7b/AJ9x+dd3gelJx6U7iscL/wAIDaj/AJYCl/4QK0PWAV28s6Qj5pf0qFb+Bj/rR+VFwscd/wAIFbd7cfnR/wAIBZn/AJdx+ddyjiXoKZJNHD94frSuOxxf/CBWX/PIUv8AwgNl/wA8hXXDU7f++KX+07f++KLhY5EeALQf8u4/OnjwHaAg/Zx19a6n+07f2/Oj+0rf2/OgdhNNsBZwiPpipry2F1EY6khmWYbhilaQRHcTQByM3gm3uJt5jGc1t6TpC6fhFTAHpVl9Tt/M+WQCl/ta2U/6wU7gWp4vMiKFetcte+D7a8lLvECTW7/alr180Uv9rW7cCQVPNYLXKGk+HotNA2gCtqRFkj21FBexzNgEVPxu4pdSo7HLah4Uh1Cfc0YqbT/DEVhINkYH0ro+/D/pUcs6wDcz1pPYzjuOMbKm3PasDUvDcOotl1B+orROsWoON4/OrcFyk4ymKm9h7nJnwNZ/88l/KgeBbP8A55L+VdkOf4v0oIx/F+lFwOMPge0U/wCpX8qU+CbTH+pX8q7HH+1+lMklEY+9+lFwscp/wg9kOkS/lR/whFn/AM8l/Kt6TWLZDjzBmpoL2K4+7IKLhY5r/hB7P/niv5Uf8IPZ/wDPFfyrrv8AgdHP9+kOxyI8E2Zb5ol/KnQ+DLWCfekS/lXR3F5DB8zyAVWXWrdzhZBmgLFi1gWCLaKf05FLHIkqZFDfd4qRjT1pr9KcetNfpVARU6m06gAptOptABTadTaAEptOptAElOptOqxBTqbTqAFooopCCiiigAp1Np1ABTe9OpvegCftRRRSYIeMUGgEHmsfVdbSw6kDFCQNmz+FNP0rkP8AhNLP/nsKQ+NLP/nsKOWwg8ZahNYWsjRnLJ3rz3SfFGpT6giySZVj0rtryeHxBC0UR3CTvVGx8Aw2l2kwYkrzjFVzWA7zSHeS0Q56isbxfdyWVjI6E5xW7p1t9nt0jzWfrmli/geNuQaiJUjxQeL9TBI849aY3jHVM4EprtX+G9uNzLn1rg/EOj/2VdFFFabma0JT4x1Xp5pqSPxdqe5QZzyRVXQNH/tW6VGFd6nw3twFduvWovctI7XwtPJdWKvIOw71e1oslmzKOx71y0erw+H4hDJLgDjmqmreN7Wa0KLKM4otcG7HB6r4n1O21SZBMcZqj/wluqAAecay9QuBd300uO9U8rsziqkRFHQf8JXqn/PY0n/CV6r/AM9jXPZpc+1StCmezeANTvr+3VpnzXpYBwp8vJ+teD+DvE0WlIsch2iu7PxAsd4UXIFItyO946Fa5zxVLNDaMYh2PesRviFZDrKKxPEfji3urUiOXqMVRm2cQ/iXVBc7GmON+P1r2nwjcS3NorSPyQK+fAxe8DEdWz+tfQHgw/6CnyfwionuXDY6wDPVcUcnjFUNRvFtIDIz4AFcZL8QrGKcxNNyDiqa0EnqegkDZiqGsEx2ZK9cVW0fV11KAMtX763a4t9vtQpDcTwHX9d1GLWpUjuzgHpivQfh/eT3VoJLiQuafe/D62u7l7iSDaWPrXQaD4dj0lEhhHBobBI6H+L7n60HhuBUF5MYIS7P0FcJf+P7WyumjeXoaUQkyXx9PPbWEhhbafavL9H1nUJdagQ3JAz0rZ8U+MINUtXSJ92a5bw8c67bsY85PrVNko+itHObBSeeKvselZ+j/wDHgv0FX26Cs4liDrTZacOtNlqmBGKWkFLQA2m06m0ALTadTaBCU2nU2gB9OptOqwFp1Np1AC0UUUhBRRRQAU6m07tQAueKZ3pQeKQdaAJqKKKQDq83+IRI06TBI57V6R/hXm/xD/5BstaRRnJnlEkh/vN+dMMh/vN+dJJUdS2NHqPw4ZVgAc/ma9T+0wfKvmDP0r510fXZ9KYBSTXUaX45u7jUVjMJIzjrU2NEezjDDIpRVLSZzPbBj3FXsYFLYCOYDyn4HSvDfiN/yEYPxr3Kb/VP9K8N+I3/ACEoPqa0iZyGeAXVbw7yBzXtqTw+RH++HT0r5s07UZNOmZo2zXSR+Pr2MxIIi3OOtRYtM1/iDbTXcuYIieexrgjpeoAjMD/nXuWiWiarbLJNg5GeRWu3h6zZwNq/lRewNXPnQaRf7zm3aq89nLbITLCRX0mfD1mCfkX8q86+IWl29ralkAH4ULUTPKVUu21EyTV1NJv2XKwMRU+gRJNqyIzZBPpXvWl6FZ/YoyVU5HpUy0KjqeAjR9Q/592pf7H1H/ng9fRn9gWn9xfypRoFp/cX8qYrHzn/AGPqJ/5YPS/2LqJ/5YNX0YNAtP7i/lSjQrT+4v5VQcp86Joeo74yYG+8K928IrIlnGskeDtFag0G0Mijav5Vdt7WOBF2HH4VE9yo7GR4n4sH/wB01873h/4mLf7/APWvojxR/wAeD/7pr51vD/xMW/3/AOta20Mr6nuXgMbNMi+ldoxVQzMa4vwMcaZF9K6bWJGitGZTjisIm0mTtfW/3DIMikN7bsRiUcV4bq/jLUbfVZI1l4BrN/4TjVsMRKa0sZ8x7vql3bm1f5h09a+fPE7h9XkKnjNWJvGWpzKVZzg+9YM0zzzGSQ5JpoTI/WtXw3/yHbT6msod61vDX/IdtPqamQ0fRGkf8eC/Srx7VT0j/jwX6VdPapiWNHWmy04dabLVMCMUpGai34NSK2aACm06m0AFJRSUCEpKKSgCSiiiqEPFLTaWgBwoNAoNABRRRQAtFFFACikJopDQBNRRRSAevNecfEQ402WvRxxXnfxAjL6dLgE/QVSM5I8mgt/tdwsQHU12dp8PnmtxJzyK5/RIZP7VjLIwGfSvdNJaE2catgcUSLR5kfh2/lqfNPH+zVyw8CNbX6TeaeP9mvVEKH5Pl4p4VWGMDj2qUUirpcBtrcKT2q6QQvWovNiHAIpfPjIxuFKwXHTElMDvXnfifwe+rXm+vQjNFtBJH50M8JcHIqiTx0fDZs/60/8AfNPX4cEFT5p4Ofu1675sHqtL5sHqtIq5l6BYGxtQh7DFaN3OLWHeTTzNCF4IrM16aJrE4YdDQFzJm8a2sM7RtIMisbVLZfFVoyI2Qa8o1mRv7WmYSnAavWfh68JsImdskinIUTK0z4etZX6SgHg16hp8JggWM9hUiywDk4p32iHqCKlIpmbqusJpwLyMABWHD45s5H8vzBknHWs34iSKdMlZHwfrXkGlOzarApkOC1ORMT6bsboXcW4elWlrF8OZFiM/3RWyPu5qUUwc7VZt/T2rmdZ8Vw6ZOivIBXSSn9y/ydq8V+I9tPJdKY1br2qiTc8Q+NrO7sHRLgMSPSvIp5xJeNIBkbs0slrcRp88Lge9VxnFUSepeFfGdvYWqxu4GBXRt4vttYk8hHzkYrxKG0uZh+7jbHtXT+C7G6i1gGSNsZ71lYu9zrZfh9Df3TXG04PNN/4VnAATtNen2PyWajbyRVkrtYDaOapOxPLc8gvPhxBDb7lU5AJrzfUbT7HeyW4HQ19L6sGFodq9jXz/AK/pt5JrM0ixtjPpVMRpeF/CC6tB5jjINdjY/Dy3stQimVelWPh3bz22mRLKnJ9a9Cbhs7elSUV7OH7PbbT6U/IVTT3qBsnigZKPu02U/JQPu02T7tAEGKkXihRSnigYU2nU00ANpKDSUCCm06m0APp1Np1UIWnU2nUAOFBpooNAC0tNpaAH0U2igB1N706m96AJqKKKQIXODiqF/pcV4PmAP1rQ+tHBqkDRzU/huGCLegUkc9K4jVfFk2lXxt0iJx716reRs1sQOMivKdd8HXF9qRmEpGfahCR0XhLxDJqwDOpH413NwxS23q+OPSuC8H6DLpYCyOT+Fd3cgvbbFTPHrUyKR5f4i8ZTaXqRiSI/nWOfiJcZw0R/76rS8S+ELrUtSMqSH8qxR8P7wklpD+VXYzuTH4i3H/PI/wDfVJ/wsW5/55H/AL6qH/hX15/z0P5Un/Cvrz/nofyqSif/AIWLdf8API/nSf8ACxbr/nkfzqH/AIV7e/8APQ/lR/wr29/56H8qYXJT8RbojHln/vqq154+urqIxeWemOtPPw7uxz5h/KobvwDd20Rl809M9KAuclNK1xMXbrnNbui+LLjSYtkeawZomglKN1zitzRfClzq0W+MHmobBGx/wse6P8J/Og/Ee7H3UP51FN8PLyGEyEnj2rk7y1ksZzE/Ue1VEbNjWPFdzq0RR84PvWZpHOqQg/3qo88mrWnS+TqEUjdAaUgR9KeHedOTn+EVs4AxXD6F4ps49PUF1BwO9af/AAltmSP3if8AfVSimdIRlSDWXeaHBeNlwD9RWefF1n3kT/vqm/8ACXWf/PRfzqiTL8UeHbRbFtirlVPavC5VC3ZC9A+P1r2vxL4otXsm2MpLKehrxNmD3eV6M+f1qiT2nwdoVtNpykqvIHauui0K2gYEKoPsKyPBA/4lyfQV12ORmsrmvKNjTaMGncA0Z4JrF1PXorAkOQMepqkrk3NaWNZUIZazG0O2kclo1/KsU+OrH/nqv51GfHNiD/rl/OqEdNbWMFnyh/SrecfNmuNPjyw3bftC/lT7Txta3k/krcDr6VJR1vVuajZMNmiCUTxbhSsfWgQhqOSpDUclADQaU00UtAwNNNONNNACU2nU2gQUZoNMJoAlpRTTSg1Qh9FNooAeDSmmiloAKWm0tADqWm0tADhSE80UhPNAE/ako7UlJgiQHH0oLBOc0mfkxXM+JtZOkwb81UQbOmMit1UfnUZjhbqi/nXk/wDwsXn7h/Oj/hYy91P50rCTPWURE/gX86kLg/wj868j/wCFip/dP50f8LHQfwn86LA2eseVCf4F/OjyIf7i/nXk/wDwsZf7p/Oj/hZC/wB0/nSsO56z5EH/ADzX86PIg/55r+deT/8ACyE/un86P+FkJ/dP50WC56v5MX/PNfzo8mL+4v515P8A8LKT+4fzoHxKQsBsPJx1oCT1PWWggCjAFZuuxRCxbCjoe1JoOoHULUOfTNaV1bi6hKEUXKlsfM2tAnVp1WI4LeleufDtI/7OhVlwR61rS+Cbae4aRoVyeaydVuI/ClozqNoFN+8QvdO1v4oRZynjpXz34xKjXpdo4zXUXXxJaa3ZBnmuD1W9bUL95j3oXujfvFGlFIaKmwMlE8yjAkYfjSi4nfgO5/E1Cfeuy8EaLDqtztkGeaL2BHK+ZdHoZPzNIZpzw0rj8TXvbeCLJUP7heleUeM9Ji028IjTHNVDYTOaMsp4Du1JHHJ5qko33h2rq/BOkx6jdDzCCM9MV60vgyzEYOxc49Ki+o0M8GOE06JGbBxXW+agLDzAa8r8Qa2/hlkREwPY03w142m1W+KFT1HejlK5j1ZjlM15T8THIhJBI+hr1CF91rn2ryr4nH/R60ijOTPKjK/95vzpvmP/AHm/Om5NAzSYx3mMR94/nW74TLHxDDyevrWBiuh8Hf8AIxQ/WpKR9B6dxaL9KtP1FVrHi0X6VO3UVMRid6ZL0p/emS9KpgMFKaaKWgApDRSUANopTTTQICaaaM0lAEtFFFUIWnU2nUAFOptOoAbRRRQAtOptOoAKaetOpp60ATUUUUmBIvWuC+IH/ILlrvFPzVwvj/8A5BctVEzkzxlA00wjVuSfSultPBV5dQiRWOD7Vhaad2qICnG6vftAgi/syMlB0pXLSPJv+EBvP7x/KmnwDef3j+Ve4fZ4v7gpRbw/3F/Oi4NHh58AX394/lTT4Avv7x/Kvc/s8H90UfZoP7opXHY8M/4QC/8A7x/Kk/4V/f8A94/lXuotof7opRaQ/wBwUXCx8/3vgu+s4g7Z4ya5pFIuERuzf1r6M8RW0IspeBwpr55uDi/Yj/np/WqZDep7/wCDDnTl/wB0V0ksqwxZJrmvBh/4li/7orU1sslixBxwazZq9hjeIrVZGjZ1Uj3rj/Flm3iKzaKCXOfQV5frOoXiavPtuGIDV6t8Pv8ASLKJphvJHc1b90he8ed3HgK/hhLkHC+1crdW0lpO0MgwVr6fv7aAWc/A4HpXz14vVV1+4VRgA0L3hv3SvpPh+41fb5WcH2rZl+H2oRxs244HtXW/DJEe0RmjBr0m9gja0c7FHFTF3BnzBd2klnctDIMEV2HgHVILKdllYDkVneNwqa6+0ACubjeRGJjJB9qJIEfR0nia08nPmoeP71eP+Or+O+vyY8EeoNcqZ7kAfPJj6mo2Zi2XyT7mqhsDO9+Go/0qT6ivchzCPpXiHwz/AOPmT6ivcE/1Y+lZ9SonmvjHwpLrUyFJSOT/AA1R8M+DJtJvizyE8j+GvWHCMsZk2im/u1clNpq2yUhsClbf3xXDeL/DcmtLjBrvCTnjpSOqsMYGaFIHE8Kvvh9PZQNIc4Arh5omhlaM9Qa+lfEKAabLkD7tfOeq4/tGXHrTYikOhro/BYzr0X1rnexrpfBAzrsX1qSkfQFl/wAei/Spj1FQ2f8Ax6L9KlPUVMRid6ZL0p/emS9KpgNFBpooNABTadTaAFppp1NoEMopTTTQBLS02lqyUOpabSigpDqKKKQgoptFADqWm0tADhSE0UhoAmFBoFBpMY9fvCuG8fj/AIlUtdwn3hXE+Ph/xKZaqJnI8e0441Bf94V9B+HzmwT/AHRXzzYHGoL/ALwr6E8On/QE/wB0VE9zSGwniDUTp1s8megrz7/hZEa70bPB9a6/xqP+JVIT6V4DKcSScd606EdT08fEuP3/ADpR8S4/f868q/CjPtUjZ6xH8So5ZAgyMkd69H0XUDfxiUHggV8y25BuUIH8Qr6I8I4/s1D/ALIqSolzxH/yDpf901853X/H+3/XT+tfRniP/kGyf7pr5zuv+P8Ab/rp/WrjsQ9z33wbkacmP7orW10btPbP901keC8/2Ymf7orZ1iFpLJgPSs47mr2PnHWyBq84A/ir2D4ccadFn0rz7VPB+p3GpzyBDjOa9A8GhtGso0ueCPWrmjOJ2uoHFk/0r538YHPiCfnvXvGoa1aGzYBl6eteBeKpkn1+dkPGaI6DkW/Dfil9EGOcV003xMWaMgqc49a8zzz0pUQyOFVck1KGy7quoPqV407V0fgfQ4tUuCZVyKoWvg3U7qLciHGM12vg3T59CB+0DBz3oeoLQ6V/A1iImGxenpXlHjHSU0vUQkfTmvdJdetTAxDLnHrXmfizw/da7dpNbjjmmtBMq/DMf6TIfcV7YCTHwe1eSeEdJuNAaVrkYGR1r0FvEVobf/WKCB60PUEcj4s8ZyaPciNEOee9QeFvG02r3bRyIeo71yPj7UIr6+V42B5PSn/DznUG57inIIHvET5gWn5+YVDB/wAeyk+lUb3XILJwHKj6mpSuEyHxI3/Erl+lfOeo5N/L/vV7Z4j8UWcthIiOuSPWvD7uQTXbup6mrbJRFwDgiun8Chjra49aXSfBV3qsIlDEA+1dd4b8ESaXqAlkkOfpWbKPTrXi2X6VI33hUcY2wqKe/UUIYd6ZL0p/emS9KpAMFKaaKWkAlJRSUAFJRSUAIxpmaVzxURNAFmim0VZKJKWm0tBQ8UGmig0hBRRRQAtOptOoAUUhNFIaAJl6Uo601elKOtJjQ5T8wrjfHP8AyCZfpXYr94Vx/jj/AJBM30qomcjxWz4vl/3v619CeGz/AMS5P90V89WvF8v+9/WvoPw0f+Jcn+6Kie5pDYo+Nf8AkEz/AEr5/m4kb619A+M+dJn+lfP0/wDrG+prToZ9SKiilrMokt/+PhP94V9D+Dj/AMS5P90V88Qf8fCf7wr6E8HH/iXJ/uipZUTQ8R86dL/umvnS6/4/2/66f1r6L8Qf8g6T/dNfOl5/x/t/10/rWsdiHue9+Cj/AMS5f90V1LKJI8GuU8E/8g9R/siuhvrj7NAT7ZrOO5q9h32KDf8AcArzr4hSSadp8jwSbST2p9z8RLa3u5omkyV4rifFHixdYh8tVyD71qzM559c1Fk2NcMQaosxdiztlj3pv1FHHpWYBgdjV/RE3avAO270rqvBvheLVYfMmjzmu8tvAFpbXkUqRDNK5S1Oi0O0gNiCyjoO1YPjeNLPTp5IRg47V2Fpbi0tvLYVx/xBfbpc4HTFXHUHoeNW+q3sl4qmdsFumfeve/DcEcuno0rgnaO1fOasUl8xR0bNd/pPxBNjB5Tr0AHWk9BI7/xmscOmyeWMHHavCpL27MjjznAz7161pWtjxUDG43A9quv4DsTGzG3GTQtQeh4e7tK/zk/jXZ/DrH9oP65FZfi3SU0q/CIMCtX4cqPt7t7ilMInuaZ+xj6V458Sp3SeIBmHXoa9hUlbcD2rxj4mMTdxD3NVT1CZwBklf5dzH8ackTh1zG3Udq6bwXpUWpXoWQZ5r1dfB9gqDMKk49Ki4DfBwRdKiyQDjuK6cNCd2WBP0ry7xJr0/ht0ggTA56Gjwn4uutU1AxSKSM+tBR6pjNMYUsTZT8KQn5qEIWo3NOqN6pAJRRRSADTDTjTDQAtJRSE0AIRTStLuozQA+im0VYiSlptLQA6lzTaWhgJSimmlBqQHUtNpaYDhSE0UhoAlQ8Uvemp0pe9Jgh6n7tcn44GdLk+ldSD92uY8aDOlS/SqiTI8Ot/+P5f9/wDrX0F4ZbOnJ/uivny3/wCP0f7/APWvfvCrZsF5/hFJlwWg/wAS2j3tjJHGOSK8ek8DamZXZVOCfSvfCAzEEDFRLBDtPAoRKWp4L/wgeq/88zSf8IHqv/PM1739mh/55j86X7LD/wA8x+dIdjwaLwRqcc6synAPpXsHhS2ks7BY5RyBW19mgzjAqVUVBhQMUBYyvEH/AB4Sf7pr52u/+Qg3/XT+tfRPiD/jwk/3TXztd/8AIRb/AK6f1q1sS9z3jwQ2dPX/AHRW3rCNJaMqjJwawvBQ/wBBXH90V1ZCuuGFYrc1ex4Nqfg7VLjVJJFiOCaojwPq5DDyjX0CbO3xu8oZNJ9jhB4jHPvWjdzJKx8+S+CtShjDsp/Kufnhe3laKQYYV9MX9rALYjA6Gvn7xQgTW5gq8Z9KEh3PRfhk3/EvjzXpzSBFJNeZfDT/AJB0fGK9E1EFbRiD2qEWyF9atopQkjKMe9cP461e0n0yVEYEn3rg/FOq3sOtSokzgA+lc7NeXNyoWWRmFaJmbRAAXYIo5JrpLPwTqN7EsiA4NYVgD9uiypxu9K+hfDcUf9mRdOlQyzlfBPhq70iT95XokhItjn0pVijDEqRTJ2P2dhkdKEFzwv4hnOqp9TVn4bD/AE2X6iqnj/c2qrgE9egq98N1IvJcqR06iqm7kwVj2lf9SNrdq868XeELnWbvcj/pXo0bfuFylBRNwYrURKkeXeH/AA5L4cmlllPHHNdYfGNko2GVc9KPF4VbCUqcErXgwmkN6paRvv8Ar71dhKR6lrvhtvE8qzRzkD6VL4Y8GPol00rzE8j+Gum8MOjafH5jAfKK3EkjIdUINS3Yqw5eAPpSNTz0qM0CFqN6dUb0AKKDTRQaAHE000ZpKAEptOptABTadTaAH0U2irESUtNpaAH0U2igBTQKaaBUgPpabS0wHUhpaQ0ASL0pe9NU8UoPNJghw/hrmvGOW0uUH0rpB8zKRWJ4isZL+ylRPSqiTI8AD7Ji/cMa7XRvHDWNuIj296pSeBNRMpwDjNMbwHqBOADTY4S0Oj/4WQPT9aX/AIWSPT9a5n/hBdT/ALhpp8C6n/cNCJUtTqv+FkR+tOHxJj/vVyP/AAg+rf8API0n/CD6t/zxNKw+Y6//AIWTH60v/Cyo/wC9XHf8IRq3/PE0n/CE6t/zxNFg5jptT8fJd2jRhuorzuabz7zzPVq3h4I1Uj/VGgeC9WVgfJPBprYHuet+CQf7LQD0FdZ6etcx4StJbKxVH64rpRw+T0rFbmr2HDgsxNcr4j8RJo8RkfOPrXUH5gdtef8AjzSLnVLMpEpzWiRDZTtvHMOp3CW2c761m8G2eplrl4gd/NcDoPhXVLPVIpZYSApr2uwV1tBGx2lQKG7Ao3M/RtCh0uLZEK15YxPF5bin5xyoo+b7xpAcnfeC7S9uPOa3H51X/wCEAsC2426/nXZEbuAKQgH5cc0AcW/gmxhTfHCMrzWDqXi46BcfZUj4HHWvTbjd5BCHkivIvFHhLUNR1RpUJwT6U0K48/ExggXYfzp0XxFa6mWLYeTjrWB/wgGokZyfyqey8B6hFdo5zgH0oYXPRrbQINWQTSqDkZ5Falj4etrBt8agfQVY0W3kt7UI/YAVpZyNtRe5pawLxSk0h4pM0Es5fxqf+JdI+e1eCybjO7hejetfQniTTpdStXhXjIrzRvhpcuWP2grz/dq73ISsYtj4xv7G3WNWJx712ngrxNdatcvHKD1HescfDOYlcTE+vFdP4V8JNolwzs/6VNiuax3Q6Cg0vammgY4dKhbrUgPFQt1oAcKDTRQaACkopKAFpKKSgBKSikoAfS02lqxDqWm0tAC0tNpaQC0U2igB1LTaWgBwNBpooNAEsf3Kd/DUafcp2floAeDSkZpoGKXdQAzyYvQUeTF/dFOz7UZ9qQCfZ4fQflR9nh9B+VOzRmgBPs8PoPyo+zw+g/KnZozQMb9kh9BR9kh/uinbjRuNADPscP8AdFH2OH0FSbqN1ADkhROlOOT0pm7PSjcRQBJ92o3hjl+9ijf60ZU0gGfZYQ2QBUw2qMAUwNxSB2J6UAS0VHvo30APzTc03NNJoAkOG61GbeJuuKMmjIoATyYf7opfJh/uijNLmgB4xQajDUFqAH5ozUeaM0AOzSceg/Kmk0maADj0FLxTaKAHE000ZpKAF7VC3WpO1Qt1oAdRTaKAFpKKSgApKKSgApKKSgB+aM03NGasRJmnA1CDTs0ASZozTc0ZpAONAppoFAD6KbRQA4UGmig0ASxdKf3qOLpT880AOoxTd1G6gB3NHNJuo3UgHYpcUzdRuoAfzRzSbqNwoGOxRimbqN1AD+aOaTeKNwoAXNGTTd4o30AO5o5pNwo3CkA6im5ozQAuKXFJmk3UAGKTFBak3UAO5pKN1G4UALikxTd1G6gBcmjJpu8UbxQAuTRk03eKN4oAdmm5o303fQA+io99G+gB9JimbqXdQA4nioT1qQ9KhJ5oAeKDTRQaACkopKACkopKACim0UAOoptFUIdRRRQA+im0UAPoptFADqWm0tADhSE0UhoAljNPB5qGM08GgBWNNzStTKAH5ozTaM0hiGYbtuaczBR1rHlaRbsAHinX00iIME0AaX2hGPWpQ2Rwa5RJpVcZJrcs5HePn0oAvb134zSGVEbk1nLIwmOTTPnnuMZxQBrK6OM5pvnx5xmsOWeSB9mTUwcbN5PNAGw0qL/FQsnmcBqxY3+0PgNUkbPDNjdmgDYzRmm54FGaAHZqRahqRaAFY0zNDGmZpAPzmkL7abnFIw3UAI067etHnJs5aqptc/xVXvI/Ki4agC+buNV+8KBcxFc7q5F5pycFjirkUjCLkmgDoTcxHvThcRkda5yO5yOpqxFPnNAGo1/ApxkU8XKOMg1yNxIwmwCetX42kEQINAG79rVeCalSaN+lc80jSOBmtezCqgyaBlwmkzRSUAKKeKjFPFAhSeKh71I3Soe9AElFNooAKSikoAWkopKACkopKAFoptFUIfRTaKAJKKbRQA6lptLQA6im0UAPoptFAEkfSnio46eOtAATTc04im4oAQk7qZLuK8VJgmlCk0hmWLeXzd1SvDLJxV7otKPlXNAGRNYMyjir9pCY4NtWNpNGD0oAovYkzZpr2Lb8itHk80cmgCgLLK1C2nljWqBgUAc0AZi6dsXipre0wcmrucdaXGeRQAUUUUAGaepqOnrQANTKeaZSAQk1FIrEcVKQQaUg4oAzzFMW6mkltZHXk1oYFJgmgDBfS23dKnGnsExWvjNGKAMiHTDDERiiOxZSeK2DktijHzYxQBkf2WGPNSJYeX0rS2ntRjHWgDPOn7hUtrbeSeat9KQrmgYmaTNOxSYoAaKkBpgpwoEK3Soe9SN0qHvQA+im0UALSUUlABSUUlABSUUlADqKbRVAPoptFAD6KbRQA6lptLQA7NGabmjNAD80ZpuaM0ASIakzUKGpM0CHUU2igB9GabmikA6im0UAPzRmm5ozQA+im0ZoAfijFM3UbqAHZozTc0ZoAdmjNNzRmgY7NGabmjNADs0ZpuaM0gFoptFADqKbRQA6im0UAOoptFAC0U2igBaSjNJmgBc0hNNJpM0AOpKM0lAAx4qIHmpG6VEOtADqSikoGFJRSUALRTaKAFpKKSgAoptFUIfRTaKAHg0uajzSg0APzSg0zNJmgCWim0UAPoptFAD1qSoVqTNAh+aM03NGaAIp5/KfNM+3DOaq6kz+lVAX8rNIDUe+Cx76VL9Gi3ZrIky0O2ooEfbszQB0aTrImaQ3K4xVS2IEWKXYOtAF9JN4oxg1BAcVPnNAC0U2igBJZ1RvmqNbyNm5qrcsFmG/pVe6eN1HlcGgDQN+itgVP5qld5FYC7xgmtQFmtRj0oGTG7UnC1MroRnPNZ1vJEFIPWo5JSG+U8UAapbBy5pguEZ8KayGuJScOah3ur5U0gOgB3d6dwKyLKWV25Nan8PNADqKbRQA7NGabmjNADs0hNNJpM0AOzRmm5ozQA4gDoajMqL1NLkAc1WmhMh4NAFlWDCk3YNRopUU8EE0ALmim0UADmo8056joAfSUUlAwoptFAC5pCaaTSZoAdSUUlAH/9k=" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from maix import camera, display, zbar\n", + "while True:\n", + " img = camera.capture()\n", + " result = zbar.scan_codes([\"qrcode\", \"code39\"], img)\n", + " display.show(img.draw_string(10, 10, str(result), 2.0, (255, 0, 0)))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/layout/locales/en/LC_MESSAGES/messages.po b/layout/locales/en/LC_MESSAGES/messages.po index a1538637..1bcd7ea0 100644 --- a/layout/locales/en/LC_MESSAGES/messages.po +++ b/layout/locales/en/LC_MESSAGES/messages.po @@ -1,842 +1,842 @@ -# -msgid "" -msgstr "" - -#: home.html:93 -msgid "/static/home/banner_maixcam.jpg" -msgstr "" - -#: home.html:96 -#, fuzzy -msgid "硬件文档" -msgstr "Hardware Docs" - -#: home.html:97 -msgid "/maixcam" -msgstr "" - -#: home.html:101 -msgid "/maixpy" -msgstr "" - -#: home.html:104 home.html:117 home.html:130 home.html:143 home.html:156 -#: home.html:169 home.html:182 home.html:195 home.html:208 licheepi.html:221 -#: licheepi.html:242 licheepi.html:258 licheepi.html:279 licheepi.html:295 -#: licheepi.html:311 maix.html:167 maix.html:241 maix.html:262 maix.html:279 -#: maix.html:296 maixsense.html:44 maixsense.html:60 others.html:42 -#: tang.html:172 tang.html:188 tang.html:204 tang.html:220 tang.html:236 -#: tang.html:252 tang.html:268 tang.html:284 tang.html:300 tang.html:316 -#: tang.html:496 tang.html:512 tang.html:528 tang.html:544 tang.html:560 -#: tang.html:576 tang.html:592 tang.html:608 tang.html:624 -msgid "购买" -msgstr "Buy" - -#: home.html:105 -#, fuzzy -msgid "https://item.taobao.com/item.htm?id=784724795837" -msgstr "https://www.aliexpress.us/item/325680633" - -#: home.html:110 -msgid "/static/home/banner_nanokvm_zh.jpg" -msgstr "/static/home/banner_nanokvm_en.jpg" - -#: home.html:113 home.html:126 home.html:139 home.html:152 home.html:165 -#: home.html:178 home.html:191 home.html:204 licheepi.html:217 -#: licheepi.html:238 licheepi.html:254 licheepi.html:275 licheepi.html:291 -#: licheepi.html:307 maix.html:180 maix.html:197 maix.html:237 maix.html:254 -#: maix.html:275 maix.html:292 maixsense.html:40 maixsense.html:56 -#: others.html:38 tang.html:168 tang.html:184 tang.html:200 tang.html:216 -#: tang.html:232 tang.html:248 tang.html:264 tang.html:280 tang.html:296 -#: tang.html:312 tang.html:492 tang.html:508 tang.html:524 tang.html:540 -#: tang.html:556 tang.html:572 tang.html:588 tang.html:604 tang.html:620 -msgid "文档" -msgstr "Docs" - -#: home.html:114 -msgid "/nanokvm" -msgstr "" - -#: home.html:118 -#, fuzzy -msgid "https://item.taobao.com/item.htm?id=811206560480" -msgstr "https://www.aliexpress.com/item/1005006080116482.html" - -#: home.html:123 -msgid "/static/home/LicheeRV-Nano.jpg" -msgstr "" - -#: home.html:131 licheepi.html:243 -msgid "https://item.taobao.com/item.htm?id=764939520376" -msgstr "https://www.aliexpress.us/item/325680633" - -#: home.html:136 -msgid "/static/home/LonganPi3H.jpg" -msgstr "" - -#: home.html:144 licheepi.html:280 -msgid "https://item.taobao.com/item.htm?ft=t&id=758221950525" -msgstr "https://www.aliexpress.us/item/100500639" - -#: home.html:149 -msgid "/static/home/console-4A.jpg" -msgstr "" - -#: home.html:196 home.html:209 others.html:43 -msgid "https://item.taobao.com/item.htm?id=737788586308" -msgstr "https://www.aliexpress.com/item/1005006022974163.html" - -#: home.html:218 -msgid "产品动态" -msgstr "Product News" - -#: home.html:222 -msgid "Maix AI 视觉" -msgstr "Maix Vision Series" - -#: home.html:234 -msgid "MaixSense 传感器" -msgstr "MaixSense Sensor Module" - -#: home.html:238 -msgid "其它" -msgstr "Other Products" - -#: licheepi.html:4 -msgid "Linux RISC-V SBC 系列" -msgstr "Linux ARM SBC Series" - -#: licheepi.html:23 -msgid "Linux ARM SBC 系列" -msgstr "Linux ARM SBC Series" - -#: licheepi.html:41 -msgid "RISC-V SBC 系列产品参数对比" -msgstr "RISC-V SBC Series Product Comparison" - -#: licheepi.html:49 licheepi.html:132 maix.html:53 tang.html:32 tang.html:356 -msgid "参数" -msgstr "Parameter" - -#: licheepi.html:57 licheepi.html:140 maix.html:63 -msgid "处理器" -msgstr "CPU" - -#: licheepi.html:63 licheepi.html:146 maix.html:71 -msgid "内存" -msgstr "memory" - -#: licheepi.html:69 licheepi.html:152 maix.html:90 tang.html:130 tang.html:454 -msgid "储存" -msgstr "storage" - -#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 -#: licheepi.html:154 -msgid "预留" -msgstr "reserved" - -#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 -#: licheepi.html:154 licheepi.html:155 maix.html:91 maix.html:92 maix.html:93 -#: maix.html:94 maix.html:95 -msgid "卡" -msgstr "card" - -#: licheepi.html:75 licheepi.html:158 -msgid "GPU和显示" -msgstr "GPU and display" - -#: licheepi.html:81 licheepi.html:82 licheepi.html:108 licheepi.html:160 -#: licheepi.html:161 licheepi.html:185 licheepi.html:186 licheepi.html:187 -#: maix.html:129 maix.html:136 maix.html:137 -msgid "无" -msgstr "no" - -#: licheepi.html:85 licheepi.html:164 -msgid "编解码器" -msgstr "codec" - -#: licheepi.html:88 licheepi.html:91 licheepi.html:94 licheepi.html:166 -#: licheepi.html:169 licheepi.html:173 licheepi.html:174 -msgid "解码" -msgstr "decode" - -#: licheepi.html:88 licheepi.html:91 licheepi.html:95 licheepi.html:166 -#: licheepi.html:170 licheepi.html:174 -msgid "编码" -msgstr "encode" - -#: licheepi.html:99 licheepi.html:178 maix.html:106 -msgid "操作系统" -msgstr "operating system" - -#: licheepi.html:100 licheepi.html:101 licheepi.html:179 licheepi.html:181 -msgid "主线" -msgstr "mainline" - -#: licheepi.html:111 licheepi.html:190 maix.html:114 -msgid "典型外设" -msgstr "typical peripherals" - -#: licheepi.html:126 -msgid "ARM SBC 系列产品参数对比" -msgstr "ARM SBC Product Comparison" - -#: licheepi.html:155 maix.html:92 maix.html:93 -msgid "板载" -msgstr "onboard" - -#: licheepi.html:214 -msgid "高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑" -msgstr "High performance RISC-V@1.85GHz x4 dev board/tablet/laptop" - -#: licheepi.html:222 -msgid "https://item.taobao.com/item.htm?id=715508771884" -msgstr "https://www.aliexpress.com//item/1005005532736080.html" - -#: licheepi.html:226 -msgid "更多" -msgstr "More" - -#: licheepi.html:235 -msgid "高性价比迷你 RISC-V IPC/屏显开发板" -msgstr "High cost-effective mini RISC-V IPC/display dev board" - -#: licheepi.html:251 -msgid "高集成度入门级 RISC-V Linux 开发板" -msgstr "Highly integrated entry-level RISC-V Linux dev board" - -#: licheepi.html:272 -msgid "H618 4核A53@1.5GHz 小电脑" -msgstr "H618 4-core A53@1.5GHz mini PC" - -#: licheepi.html:276 -msgid "/lpi3h.html" -msgstr "/hardware/zh/longan/h618/lpi3h/1_intro.html" - -#: licheepi.html:288 licheepi.html:304 -msgid "迷你" -msgstr "mini" - -#: licheepi.html:288 licheepi.html:304 -msgid "开发板" -msgstr "dev board" - -#: maix.html:5 -msgid "全新 Maix 生态" -msgstr "New Maix Ecosystem" - -#: maix.html:27 -msgid "经典 Maix 视觉系列" -msgstr "Classic Maix Vision Series" - -#: maix.html:46 -msgid "Maix 系列产品参数对比" -msgstr "Maix Series Product Comparison" - -#: maix.html:65 -msgid "双核" -msgstr "Dual core" - -#: maix.html:65 -msgid "位" -msgstr "bit" - -#: maix.html:80 maix.html:83 maix.html:85 -msgid "支持常用" -msgstr "support common" - -#: maix.html:80 maix.html:83 maix.html:86 -msgid "模型" -msgstr "model" - -#: maix.html:80 maix.html:92 -msgid "支持" -msgstr "support" - -#: maix.html:81 maix.html:82 -msgid "支持有限" -msgstr "limited support" - -#: maix.html:81 maix.html:82 -msgid "算子" -msgstr "operations" - -#: maix.html:85 -msgid "和" -msgstr "and" - -#: maix.html:91 maix.html:93 maix.html:94 maix.html:95 -msgid "或者" -msgstr "or" - -#: maix.html:98 -msgid "软件支持" -msgstr "software support" - -#: maix.html:125 maix.html:126 maix.html:127 maix.html:128 maix.html:129 -msgid "支持度" -msgstr "support" - -#: maix.html:125 -msgid "优" -msgstr "good" - -#: maix.html:126 maix.html:128 -msgid "中" -msgstr "medium" - -#: maix.html:127 -msgid "良" -msgstr "ok" - -#: maix.html:140 -msgid "文档和易用性" -msgstr "Documentation and Usability" - -#: maix.html:160 -msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,多种尺寸高清电容触摸屏,完美支持全新 Maix 生态所有软件" -msgstr "" -"RISC-V 1GHz + 1Tops NPU, 4M HD camera, various sizes of HD capacitive " -"touch screen, perfect support for all new Maix ecosystem software" - -#: maix.html:168 tang.html:317 tang.html:625 -msgid "https://sipeed.taobao.com" -msgstr "https://www.aliexpress.com/store/911876460" - -#: maix.html:177 -msgid "Python 语法,简易 API,快速落地 AI 视觉、听觉应用" -msgstr "Python syntax, simple API, quickly land AI vision, voice projects" - -#: maix.html:184 maix.html:202 -msgid "源码" -msgstr "source code" - -#: maix.html:194 -msgid "C++ SDK, MaixPy 同款 API,稳定高效易上手" -msgstr "C++ SDK, MaixPy API, stable, efficient and easy to use" - -#: maix.html:210 -msgid "IDE 和云平台" -msgstr "IDE and cloud platform" - -#: maix.html:212 -msgid "代码编辑运行、图像实时预览,在线一键 AI 模型训练" -msgstr "" -"Code editing and running, real-time image preview, online one-click AI " -"model training" - -#: maix.html:234 -msgid "带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用" -msgstr "" -"MCU with hardware AI acceleration, combined with easy-to-use software to " -"quickly land low-cost AI applications" - -#: maix.html:251 -msgid "硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配" -msgstr "" -"Hardware AI acceleration + Linux + easy-to-use software, education, " -"industrial vision, smart home scene" - -#: maix.html:258 -msgid "MaixPy3" -msgstr "" - -#: maix.html:272 -msgid "3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC" -msgstr "" -"3.6Tops AI ISP, low-light night vision, a large number of common AI model" -" support, security smart IPC" - -#: maix.html:289 -msgid "10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持" -msgstr "" -"10Tops AI computing power, 32 channels of 1080p HD AI video surveillance," -" AI large model support" - -#: maix.html:297 -msgid "https://item.taobao.com/item.htm?id=744014549573" -msgstr "https://www.aliexpress.us/item/3256806030962938.html" - -#: maixsense.html:4 -msgid "MaixSense 传感器模组系列" -msgstr "MaixSense Sensor Module" - -#: maixsense.html:37 -msgid "深度传感器模组" -msgstr "Depth Sensor Module" - -#: maixsense.html:53 -msgid "深度摄像头模组" -msgstr "Depth Camera Module" - -#: others.html:24 -msgid "其它未列出的产品请进入" -msgstr "For other products not listed, please enter" - -#: others.html:24 -msgid "产品文档" -msgstr "Product documentation" - -#: others.html:24 -msgid "在左侧目录查找" -msgstr "Find in the left menu" - -#: others.html:35 -msgid "逻辑分析仪+CKLink+DAPLink+USB转串口 多合一指尖工具" -msgstr "" -"Logic Analyzer + CKLink + DAPLink + USB to Serial Port, an all-in-one " -"fingertip tool." - -#: tang.html:5 tang.html:329 -msgid "Tang FPGA 系列" -msgstr "Tang FPGA Series" - -#: tang.html:25 tang.html:349 -msgid "Tang 系列板卡参数对比" -msgstr "Tang Series Product Comparison" - -#: tang.html:46 tang.html:370 -msgid "芯片" -msgstr "Chip" - -#: tang.html:58 tang.html:382 -msgid "查找表(LUT)" -msgstr "LUT4" - -#: tang.html:70 tang.html:394 -msgid "寄存器(FF)" -msgstr "FF" - -#: tang.html:107 tang.html:108 tang.html:109 tang.html:111 tang.html:131 -#: tang.html:132 tang.html:133 tang.html:134 tang.html:135 tang.html:136 -#: tang.html:137 tang.html:138 tang.html:139 tang.html:431 tang.html:432 -#: tang.html:433 tang.html:435 tang.html:455 tang.html:456 tang.html:457 -#: tang.html:458 tang.html:459 tang.html:460 tang.html:461 tang.html:462 -#: tang.html:463 -msgid "板载_fpga" -msgstr "Onboard" - -#: tang.html:112 tang.html:113 tang.html:114 tang.html:115 tang.html:138 -#: tang.html:139 tang.html:436 tang.html:437 tang.html:438 tang.html:439 -#: tang.html:462 tang.html:463 -msgid "内含" -msgstr "Inchip" - -#: tang.html:118 tang.html:442 -#, fuzzy -msgid "内嵌处理器" -msgstr "CPU" - -#: tang.html:142 tang.html:466 -msgid "其他特点" -msgstr "Ohter Features" - -#: tang.html:143 tang.html:467 -msgid "内含 12.5G Transceivers" -msgstr "Inchip 12.5G Transceivers" - -#: tang.html:143 tang.html:144 tang.html:467 tang.html:468 -msgid "支持 PCIe 3.0 通信" -msgstr "Support PCIe 3.0 Interface" - -#: tang.html:143 tang.html:467 -msgid "支持 SFP+ 数据传输" -msgstr "Support SFP+ (10G) Transmission" - -#: tang.html:144 tang.html:468 -msgid "内含 8.0G Transceivers" -msgstr "Inchip 6.6G Transceivers" - -#: tang.html:144 tang.html:145 tang.html:468 tang.html:469 -msgid "支持 USB3 数据传输" -msgstr "Support USB3 SS Transmission" - -#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 -msgid "内含 6.6G Transceivers" -msgstr "Inchip 6.6G Transceivers" - -#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 -msgid "内含 2.5G MIPI C/DPHY RX/TX" -msgstr "2.5G MIPI C/DPHY RX/TX inside" - -#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 -msgid "支持 PCIe 2.0 通信" -msgstr "Support PCIe 2.0 Interface" - -#: tang.html:146 tang.html:470 -msgid "内含 2.5G MIPI DPHY RX/TX" -msgstr "2.5G MIPI DPHY RX/TX inside" - -#: tang.html:146 tang.html:470 -msgid "支持 PMOD, 64MByte SDRAM模块" -msgstr "Support PMOD,64MByte SDRAM Module" - -#: tang.html:146 tang.html:470 -msgid "支持 USB手柄" -msgstr "Support USB Joystick" - -#: tang.html:147 tang.html:471 -msgid "丰富外设,HDMI/以太网/USB" -msgstr "Rich peripherals, HDMI/Ethernet/USB" - -#: tang.html:148 tang.html:472 -msgid "M.2 外形兼容" -msgstr "M.2 Golden Fingers compatible" - -#: tang.html:149 tang.html:473 -msgid "for RetroGame ~" -msgstr "" - -#: tang.html:150 tang.html:474 -msgid "for RISCV softcore" -msgstr "" - -#: tang.html:151 tang.html:475 -msgid "GOAI~" -msgstr "" - -#: tang.html:165 -msgid "预售中,敬请期待。。。" -msgstr "Pre-saling..." - -#: tang.html:169 -msgid "/hardware/zh/tang/tang-console/mega-console.html" -msgstr "/hardware/en/tang/tang-console/mega-console.html" - -#: tang.html:173 -#, fuzzy -msgid "https://sipeed.com/tangconsole" -msgstr "https://sipeed.com/tangconsole" - -#: tang.html:181 tang.html:489 -msgid "小体积的中等量 FPGA 开发板" -msgstr "Campact Medium-capacity FPGA Board" - -#: tang.html:185 tang.html:493 -msgid "/hardware/zh/tang/tang-mega-60k/mega-60k.html" -msgstr "/hardware/en/tang/tang-mega-60k/mega-60k.html" - -#: tang.html:189 tang.html:205 tang.html:497 tang.html:513 -msgid "https://item.taobao.com/item.htm?id=808924746746" -msgstr "https://www.aliexpress.com/item/3256807078990410.html" - -#: tang.html:197 tang.html:505 -msgid "小体积的大容量 FPGA 开发板" -msgstr "Campact High-capacity FPGA Board" - -#: tang.html:201 tang.html:509 -msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" -msgstr "/hardware/en/tang/tang-mega-138k/mega-138k.html" - -#: tang.html:213 tang.html:521 -msgid "可以高速通信的大容量 FPGA 开发板" -msgstr "High Speed Interface FPGA Board" - -#: tang.html:217 tang.html:525 -msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" -msgstr "/hardware/en/tang/tang-mega-138k/mega-138k-pro.html" - -#: tang.html:221 tang.html:529 -msgid "https://item.taobao.com/item.htm?id=740536508140" -msgstr "https://www.aliexpress.com/item/1005006080116482.html" - -#: tang.html:229 tang.html:537 -msgid "自由拓展的 FPGA 开发板" -msgstr "Free Expansion FPGA board" - -#: tang.html:233 tang.html:541 -msgid "/hardware/zh/tang/tang-primer-25k/primer-25k.html" -msgstr "/hardware/en/tang/tang-primer-25k/primer-25k.html" - -#: tang.html:237 tang.html:545 -msgid "https://item.taobao.com/item.htm?id=746293292946" -msgstr "https://www.aliexpress.com/item/1005006224593018.html" - -#: tang.html:245 tang.html:553 -msgid "自带多种外设接口的 FPGA 开发板" -msgstr "Mutiple Interfaces FPGA Board" - -#: tang.html:249 tang.html:557 -msgid "/hardware/zh/tang/tang-primer-20k/primer-20k.html" -msgstr "/hardware/en/tang/tang-primer-20k/primer-20k.html" - -#: tang.html:253 tang.html:561 -msgid "https://item.taobao.com/item.htm?id=680099020807" -msgstr "https://www.aliexpress.com/item/1005004653308809.html" - -#: tang.html:261 tang.html:569 -msgid "适用于模拟复古游戏机的 FPGA 开发板" -msgstr "Retro Games Friendly FPGA Board" - -#: tang.html:265 tang.html:573 -msgid "/hardware/zh/tang/tang-nano-20k/nano-20k.html" -msgstr "/hardware/en/tang/tang-nano-20k/nano-20k.html" - -#: tang.html:269 tang.html:577 -msgid "https://item.taobao.com/item.htm?id=717932028073" -msgstr "https://www.aliexpress.com/item/1005005581148230.html" - -#: tang.html:277 tang.html:585 -msgid "适合 RiscV 软核验证的 FPGA 开发板" -msgstr "RiscV Softcore FPGA Board" - -#: tang.html:281 tang.html:589 -msgid "/hardware/zh/tang/Tang-Nano-9K/Nano-9K.html" -msgstr "/hardware/en/tang/Tang-Nano-9K/Nano-9K.html" - -#: tang.html:285 tang.html:593 -msgid "https://item.taobao.com/item.htm?id=666055424174" -msgstr " https://www.aliexpress.com/item/1005003803994525.html" - -#: tang.html:293 tang.html:601 -msgid "芯片内部含有 MCU 的 FPGA 开发板" -msgstr "Hardcore Inside FPGA Board" - -#: tang.html:297 tang.html:605 -msgid "/hardware/zh/tang/Tang-Nano-4K/Nano-4K.html" -msgstr "/hardware/en/tang/Tang-Nano-4K/Nano-4K.html" - -#: tang.html:301 tang.html:609 -#, fuzzy -msgid "https://item.taobao.com/item.htm?id=661994055100" -msgstr "https://www.aliexpress.com/item/1005003152104886.html" - -#: tang.html:309 tang.html:617 -#, fuzzy -msgid "开发中,敬请期待。。。" -msgstr "Pre-saling..." - -#: tang.html:313 tang.html:621 -msgid "/hardware/zh/tang/tang-primer-15k/primer-15k.html" -msgstr "/hardware/en/tang/tang-primer-15k/primer-15k.html" - -#~ msgid "预定" -#~ msgstr "Order" - -#~ msgid "带有高速通信接口的大容量 FPGA 开发板" -#~ msgstr "High-capacity FPGA board with high-speed ports" - -#~ msgid "尽情期待" -#~ msgstr "Coming soon" - -#~ msgid "了解更多" -#~ msgstr "Learn more" - -#~ msgid "Linux SBC 系列" -#~ msgstr "Linux SBC Series" - -#~ msgid "Linux ARM SBC 系列" -#~ msgstr "Linux ARM SBC Series" - -#~ msgid "/static/home/ax650_presell.jpg" -#~ msgstr "" - -#~ msgid "/static/home/licheepi4a_post.jpg" -#~ msgstr "" - -#~ msgid "分享广场" -#~ msgstr "Share Center" - -#~ msgid "MaixHub 官网" -#~ msgstr "MaixHub" - -#~ msgid "产品" -#~ msgstr "Product documentation" - -#~ msgid "全新 Maix 生态" -#~ msgstr "Neo Maix ecosystem" - -#~ msgid "经典 Maix 系列" -#~ msgstr "Classic Maix Series" - -#~ msgid "全新 Maix AI 视觉系列" -#~ msgstr "Neo Maix AI Vision" - -#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸553x368高清屏,玩美支持全新 Maix 生态所有软件" -#~ msgstr "" -#~ "RISC-V 1GHz + 1Tops NPU, 4M HD " -#~ "camera, 2.3-inch 553x368 HD screen, " -#~ "beautifully supports all new Maix " -#~ "ecosystem software" - -#~ msgid "和 MaixPy 同款 API,稳定高效易上手" -#~ msgstr "With the same API as MaixPy, stable, efficient, and easy to get started" - -#~ msgid "C++ SDK, 和 MaixPy 同款 API,稳定高效易上手" -#~ msgstr "" -#~ "C++ SDK, with the same API as " -#~ "MaixPy, stable, efficient, and easy to" -#~ " get started" - -#~ msgid "Python 编程、代码运行、图像实时预览、应用打包等" -#~ msgstr "" -#~ "Python programming, code execution, real-" -#~ "time image preview, application packaging, " -#~ "etc." - -#~ msgid "下载" -#~ msgstr "Downloads" - -#~ msgid "代码编辑运行、图像预览、在线 AI 模型训练" -#~ msgstr "Code editing and execution, image preview, online AI model training" - -#~ msgid "代码编辑运行、图像实时预览
在线一键 AI 模型训练" -#~ msgstr "" -#~ "Code editing and execution, real-time" -#~ " image preview, online one-click AI" -#~ " model training" - -#~ msgid "软件和云平台" -#~ msgstr "Software and cloud platform" - -#~ msgid "工具和云平台" -#~ msgstr "Tools and cloud platform" - -#~ msgid "Python 语法,快速落地 AI 视觉、听觉应用" -#~ msgstr "" -#~ "Python syntax, quick implementation of " -#~ "AI vision and auditory applications " - -#~ msgid "文档丰富度" -#~ msgstr "Rich documentation" - -#~ msgid "敬请期待。。。" -#~ msgstr "Coming Soon..." - -#~ msgid "/static/home/banner_maixcam.jpg" -#~ msgstr "/static/home/banner_maixcam_en.jpg" - -#~ msgid "/maixcam" -#~ msgstr "/en/maixcam" - -#~ msgid "/maixpy" -#~ msgstr "/en/maixpy" - -#~ msgid "https://item.taobao.com/item.htm?id=784724795837" -#~ msgstr "https://www.aliexpress.com/store/911876460" - -#~ msgid "/static/home/LicheeRV-Nano.jpg" -#~ msgstr "/static/home/LicheeRV-nano_en.jpg" - -#~ msgid "/static/home/LonganPi3H.jpg" -#~ msgstr "/static/home/maixiii_axpi_en.jpg" - -#~ msgid "/static/home/console-4A.jpg" -#~ msgstr "/static/home/maixiii_axpi_en.jpg" - -#~ msgid "产品动态" -#~ msgstr "Product News" - -#~ msgid "Maix AI 视觉" -#~ msgstr "Maix AI Vision" - -#~ msgid "MaixSense 传感器" -#~ msgstr "MaixSense Sensor" - -#~ msgid "其它" -#~ msgstr "Others" - -#~ msgid "Tang FPGA 系列" -#~ msgstr "Tang FPGA Series" - -#~ msgid "Tang 系列板卡参数对比" -#~ msgstr "Tang Series Product Comparison" - -#~ msgid "芯片" -#~ msgstr "Chip" - -#~ msgid "查找表(LUT)" -#~ msgstr "LUT4" - -#~ msgid "寄存器(FF)" -#~ msgstr "FF" - -#~ msgid "板载_fpga" -#~ msgstr "Onboard" - -#~ msgid "内含" -#~ msgstr "Inchip" - -#~ msgid "内嵌处理器" -#~ msgstr "CPU" - -#~ msgid "其他特点" -#~ msgstr "Ohter Features" - -#~ msgid "内含 6.6G Transceivers" -#~ msgstr "Inchip 6.6G Transceivers" - -#~ msgid "支持 PCIe 2.0 通信" -#~ msgstr "Support PCIe 2.0 Interface" - -#~ msgid "支持 USB3 数据传输" -#~ msgstr "Support USB3 SS Transmission" - -#~ msgid "内含 12.5G Transceivers" -#~ msgstr "Inchip 12.5G Transceivers" - -#~ msgid "支持 PCIe 3.0 通信" -#~ msgstr "Support PCIe 3.0 Interface" - -#~ msgid "支持 SFP+ 数据传输" -#~ msgstr "Support SFP+ (10G) Transmission" - -#~ msgid "内含 2.5G MIPI C/DPHY RX/TX" -#~ msgstr "2.5G MIPI C/DPHY RX/TX inside" - -#~ msgid "内含 2.5G MIPI DPHY RX/TX" -#~ msgstr "2.5G MIPI DPHY RX/TX inside" - -#~ msgid "支持 PMOD, 64MByte SDRAM模块" -#~ msgstr "Support PMOD,64MByte SDRAM Module" - -#~ msgid "支持 USB手柄" -#~ msgstr "Support USB Joystick" - -#~ msgid "丰富外设,HDMI/以太网/USB" -#~ msgstr "Rich peripherals, HDMI/Ethernet/USB" - -#~ msgid "M.2 外形兼容" -#~ msgstr "M.2 Golden Fingers compatible" - -#~ msgid "for RetroGame ~" -#~ msgstr "" - -#~ msgid "for RISCV softcore" -#~ msgstr "" - -#~ msgid "GOAI~" -#~ msgstr "" - -#~ msgid "小体积的大容量 FPGA 开发板" -#~ msgstr "Campact High-capacity FPGA Board" - -#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" -#~ msgstr "/hardware/en/tang/tang-mega-138k/mega-138k.html" - -#~ msgid "可以高速通信的大容量 FPGA 开发板" -#~ msgstr "High Speed Interface FPGA Board" - -#~ msgid "自由拓展的 FPGA 开发板" -#~ msgstr "Free Expansion FPGA board" - -#~ msgid "自带多种外设接口的 FPGA 开发板" -#~ msgstr "Mutiple Interfaces FPGA Board" - -#~ msgid "适用于模拟复古游戏机的 FPGA 开发板" -#~ msgstr "Retro Games Friendly FPGA Board" - -#~ msgid "适合 RiscV 软核验证的 FPGA 开发板" -#~ msgstr "RiscV Softcore FPGA Board" - -#~ msgid "芯片内部含有 MCU 的 FPGA 开发板" -#~ msgstr "Hardcore Inside FPGA Board" - -#~ msgid "开发中,敬请期待。。。" -#~ msgstr "Coming soon..." - -#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" -#~ msgstr "/hardware/en/tang/tang-mega-138k/mega-138k-pro.html" - -#~ msgid "淘宝" -#~ msgstr "" - +# +msgid "" +msgstr "" + +#: home.html:93 +msgid "/static/home/banner_maixcam.jpg" +msgstr "" + +#: home.html:96 +#, fuzzy +msgid "硬件文档" +msgstr "Hardware Docs" + +#: home.html:97 +msgid "/maixcam" +msgstr "" + +#: home.html:101 +msgid "/maixpy" +msgstr "" + +#: home.html:104 home.html:117 home.html:130 home.html:143 home.html:156 +#: home.html:169 home.html:182 home.html:195 home.html:208 licheepi.html:221 +#: licheepi.html:242 licheepi.html:258 licheepi.html:279 licheepi.html:295 +#: licheepi.html:311 maix.html:167 maix.html:241 maix.html:262 maix.html:279 +#: maix.html:296 maixsense.html:44 maixsense.html:60 others.html:42 +#: tang.html:172 tang.html:188 tang.html:204 tang.html:220 tang.html:236 +#: tang.html:252 tang.html:268 tang.html:284 tang.html:300 tang.html:316 +#: tang.html:496 tang.html:512 tang.html:528 tang.html:544 tang.html:560 +#: tang.html:576 tang.html:592 tang.html:608 tang.html:624 +msgid "购买" +msgstr "Buy" + +#: home.html:105 +#, fuzzy +msgid "https://item.taobao.com/item.htm?id=784724795837" +msgstr "https://www.aliexpress.us/item/325680633" + +#: home.html:110 +msgid "/static/home/banner_nanokvm_zh.jpg" +msgstr "/static/home/banner_nanokvm_en.jpg" + +#: home.html:113 home.html:126 home.html:139 home.html:152 home.html:165 +#: home.html:178 home.html:191 home.html:204 licheepi.html:217 +#: licheepi.html:238 licheepi.html:254 licheepi.html:275 licheepi.html:291 +#: licheepi.html:307 maix.html:180 maix.html:197 maix.html:237 maix.html:254 +#: maix.html:275 maix.html:292 maixsense.html:40 maixsense.html:56 +#: others.html:38 tang.html:168 tang.html:184 tang.html:200 tang.html:216 +#: tang.html:232 tang.html:248 tang.html:264 tang.html:280 tang.html:296 +#: tang.html:312 tang.html:492 tang.html:508 tang.html:524 tang.html:540 +#: tang.html:556 tang.html:572 tang.html:588 tang.html:604 tang.html:620 +msgid "文档" +msgstr "Docs" + +#: home.html:114 +msgid "/nanokvm" +msgstr "" + +#: home.html:118 +#, fuzzy +msgid "https://item.taobao.com/item.htm?id=811206560480" +msgstr "https://www.aliexpress.com/item/1005006080116482.html" + +#: home.html:123 +msgid "/static/home/LicheeRV-Nano.jpg" +msgstr "" + +#: home.html:131 licheepi.html:243 +msgid "https://item.taobao.com/item.htm?id=764939520376" +msgstr "https://www.aliexpress.us/item/325680633" + +#: home.html:136 +msgid "/static/home/LonganPi3H.jpg" +msgstr "" + +#: home.html:144 licheepi.html:280 +msgid "https://item.taobao.com/item.htm?ft=t&id=758221950525" +msgstr "https://www.aliexpress.us/item/100500639" + +#: home.html:149 +msgid "/static/home/console-4A.jpg" +msgstr "" + +#: home.html:196 home.html:209 others.html:43 +msgid "https://item.taobao.com/item.htm?id=737788586308" +msgstr "https://www.aliexpress.com/item/1005006022974163.html" + +#: home.html:218 +msgid "产品动态" +msgstr "Product News" + +#: home.html:222 +msgid "Maix AI 视觉" +msgstr "Maix Vision Series" + +#: home.html:234 +msgid "MaixSense 传感器" +msgstr "MaixSense Sensor Module" + +#: home.html:238 +msgid "其它" +msgstr "Other Products" + +#: licheepi.html:4 +msgid "Linux RISC-V SBC 系列" +msgstr "Linux ARM SBC Series" + +#: licheepi.html:23 +msgid "Linux ARM SBC 系列" +msgstr "Linux ARM SBC Series" + +#: licheepi.html:41 +msgid "RISC-V SBC 系列产品参数对比" +msgstr "RISC-V SBC Series Product Comparison" + +#: licheepi.html:49 licheepi.html:132 maix.html:53 tang.html:32 tang.html:356 +msgid "参数" +msgstr "Parameter" + +#: licheepi.html:57 licheepi.html:140 maix.html:63 +msgid "处理器" +msgstr "CPU" + +#: licheepi.html:63 licheepi.html:146 maix.html:71 +msgid "内存" +msgstr "memory" + +#: licheepi.html:69 licheepi.html:152 maix.html:90 tang.html:130 tang.html:454 +msgid "储存" +msgstr "storage" + +#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 +#: licheepi.html:154 +msgid "预留" +msgstr "reserved" + +#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 +#: licheepi.html:154 licheepi.html:155 maix.html:91 maix.html:92 maix.html:93 +#: maix.html:94 maix.html:95 +msgid "卡" +msgstr "card" + +#: licheepi.html:75 licheepi.html:158 +msgid "GPU和显示" +msgstr "GPU and display" + +#: licheepi.html:81 licheepi.html:82 licheepi.html:108 licheepi.html:160 +#: licheepi.html:161 licheepi.html:185 licheepi.html:186 licheepi.html:187 +#: maix.html:129 maix.html:136 maix.html:137 +msgid "无" +msgstr "no" + +#: licheepi.html:85 licheepi.html:164 +msgid "编解码器" +msgstr "codec" + +#: licheepi.html:88 licheepi.html:91 licheepi.html:94 licheepi.html:166 +#: licheepi.html:169 licheepi.html:173 licheepi.html:174 +msgid "解码" +msgstr "decode" + +#: licheepi.html:88 licheepi.html:91 licheepi.html:95 licheepi.html:166 +#: licheepi.html:170 licheepi.html:174 +msgid "编码" +msgstr "encode" + +#: licheepi.html:99 licheepi.html:178 maix.html:106 +msgid "操作系统" +msgstr "operating system" + +#: licheepi.html:100 licheepi.html:101 licheepi.html:179 licheepi.html:181 +msgid "主线" +msgstr "mainline" + +#: licheepi.html:111 licheepi.html:190 maix.html:114 +msgid "典型外设" +msgstr "typical peripherals" + +#: licheepi.html:126 +msgid "ARM SBC 系列产品参数对比" +msgstr "ARM SBC Product Comparison" + +#: licheepi.html:155 maix.html:92 maix.html:93 +msgid "板载" +msgstr "onboard" + +#: licheepi.html:214 +msgid "高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑" +msgstr "High performance RISC-V@1.85GHz x4 dev board/tablet/laptop" + +#: licheepi.html:222 +msgid "https://item.taobao.com/item.htm?id=715508771884" +msgstr "https://www.aliexpress.com//item/1005005532736080.html" + +#: licheepi.html:226 +msgid "更多" +msgstr "More" + +#: licheepi.html:235 +msgid "高性价比迷你 RISC-V IPC/屏显开发板" +msgstr "High cost-effective mini RISC-V IPC/display dev board" + +#: licheepi.html:251 +msgid "高集成度入门级 RISC-V Linux 开发板" +msgstr "Highly integrated entry-level RISC-V Linux dev board" + +#: licheepi.html:272 +msgid "H618 4核A53@1.5GHz 小电脑" +msgstr "H618 4-core A53@1.5GHz mini PC" + +#: licheepi.html:276 +msgid "/lpi3h.html" +msgstr "/hardware/zh/longan/h618/lpi3h/1_intro.html" + +#: licheepi.html:288 licheepi.html:304 +msgid "迷你" +msgstr "mini" + +#: licheepi.html:288 licheepi.html:304 +msgid "开发板" +msgstr "dev board" + +#: maix.html:5 +msgid "全新 Maix 生态" +msgstr "New Maix Ecosystem" + +#: maix.html:27 +msgid "经典 Maix 视觉系列" +msgstr "Classic Maix Vision Series" + +#: maix.html:46 +msgid "Maix 系列产品参数对比" +msgstr "Maix Series Product Comparison" + +#: maix.html:65 +msgid "双核" +msgstr "Dual core" + +#: maix.html:65 +msgid "位" +msgstr "bit" + +#: maix.html:80 maix.html:83 maix.html:85 +msgid "支持常用" +msgstr "support common" + +#: maix.html:80 maix.html:83 maix.html:86 +msgid "模型" +msgstr "model" + +#: maix.html:80 maix.html:92 +msgid "支持" +msgstr "support" + +#: maix.html:81 maix.html:82 +msgid "支持有限" +msgstr "limited support" + +#: maix.html:81 maix.html:82 +msgid "算子" +msgstr "operations" + +#: maix.html:85 +msgid "和" +msgstr "and" + +#: maix.html:91 maix.html:93 maix.html:94 maix.html:95 +msgid "或者" +msgstr "or" + +#: maix.html:98 +msgid "软件支持" +msgstr "software support" + +#: maix.html:125 maix.html:126 maix.html:127 maix.html:128 maix.html:129 +msgid "支持度" +msgstr "support" + +#: maix.html:125 +msgid "优" +msgstr "good" + +#: maix.html:126 maix.html:128 +msgid "中" +msgstr "medium" + +#: maix.html:127 +msgid "良" +msgstr "ok" + +#: maix.html:140 +msgid "文档和易用性" +msgstr "Documentation and Usability" + +#: maix.html:160 +msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,多种尺寸高清电容触摸屏,完美支持全新 Maix 生态所有软件" +msgstr "" +"RISC-V 1GHz + 1Tops NPU, 4M HD camera, various sizes of HD capacitive " +"touch screen, perfect support for all new Maix ecosystem software" + +#: maix.html:168 tang.html:317 tang.html:625 +msgid "https://sipeed.taobao.com" +msgstr "https://www.aliexpress.com/store/911876460" + +#: maix.html:177 +msgid "Python 语法,简易 API,快速落地 AI 视觉、听觉应用" +msgstr "Python syntax, simple API, quickly land AI vision, voice projects" + +#: maix.html:184 maix.html:202 +msgid "源码" +msgstr "source code" + +#: maix.html:194 +msgid "C++ SDK, MaixPy 同款 API,稳定高效易上手" +msgstr "C++ SDK, MaixPy API, stable, efficient and easy to use" + +#: maix.html:210 +msgid "IDE 和云平台" +msgstr "IDE and cloud platform" + +#: maix.html:212 +msgid "代码编辑运行、图像实时预览,在线一键 AI 模型训练" +msgstr "" +"Code editing and running, real-time image preview, online one-click AI " +"model training" + +#: maix.html:234 +msgid "带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用" +msgstr "" +"MCU with hardware AI acceleration, combined with easy-to-use software to " +"quickly land low-cost AI applications" + +#: maix.html:251 +msgid "硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配" +msgstr "" +"Hardware AI acceleration + Linux + easy-to-use software, education, " +"industrial vision, smart home scene" + +#: maix.html:258 +msgid "MaixPy3" +msgstr "" + +#: maix.html:272 +msgid "3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC" +msgstr "" +"3.6Tops AI ISP, low-light night vision, a large number of common AI model" +" support, security smart IPC" + +#: maix.html:289 +msgid "10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持" +msgstr "" +"10Tops AI computing power, 32 channels of 1080p HD AI video surveillance," +" AI large model support" + +#: maix.html:297 +msgid "https://item.taobao.com/item.htm?id=744014549573" +msgstr "https://www.aliexpress.us/item/3256806030962938.html" + +#: maixsense.html:4 +msgid "MaixSense 传感器模组系列" +msgstr "MaixSense Sensor Module" + +#: maixsense.html:37 +msgid "深度传感器模组" +msgstr "Depth Sensor Module" + +#: maixsense.html:53 +msgid "深度摄像头模组" +msgstr "Depth Camera Module" + +#: others.html:24 +msgid "其它未列出的产品请进入" +msgstr "For other products not listed, please enter" + +#: others.html:24 +msgid "产品文档" +msgstr "Product documentation" + +#: others.html:24 +msgid "在左侧目录查找" +msgstr "Find in the left menu" + +#: others.html:35 +msgid "逻辑分析仪+CKLink+DAPLink+USB转串口 多合一指尖工具" +msgstr "" +"Logic Analyzer + CKLink + DAPLink + USB to Serial Port, an all-in-one " +"fingertip tool." + +#: tang.html:5 tang.html:329 +msgid "Tang FPGA 系列" +msgstr "Tang FPGA Series" + +#: tang.html:25 tang.html:349 +msgid "Tang 系列板卡参数对比" +msgstr "Tang Series Product Comparison" + +#: tang.html:46 tang.html:370 +msgid "芯片" +msgstr "Chip" + +#: tang.html:58 tang.html:382 +msgid "查找表(LUT)" +msgstr "LUT4" + +#: tang.html:70 tang.html:394 +msgid "寄存器(FF)" +msgstr "FF" + +#: tang.html:107 tang.html:108 tang.html:109 tang.html:111 tang.html:131 +#: tang.html:132 tang.html:133 tang.html:134 tang.html:135 tang.html:136 +#: tang.html:137 tang.html:138 tang.html:139 tang.html:431 tang.html:432 +#: tang.html:433 tang.html:435 tang.html:455 tang.html:456 tang.html:457 +#: tang.html:458 tang.html:459 tang.html:460 tang.html:461 tang.html:462 +#: tang.html:463 +msgid "板载_fpga" +msgstr "Onboard" + +#: tang.html:112 tang.html:113 tang.html:114 tang.html:115 tang.html:138 +#: tang.html:139 tang.html:436 tang.html:437 tang.html:438 tang.html:439 +#: tang.html:462 tang.html:463 +msgid "内含" +msgstr "Inchip" + +#: tang.html:118 tang.html:442 +#, fuzzy +msgid "内嵌处理器" +msgstr "CPU" + +#: tang.html:142 tang.html:466 +msgid "其他特点" +msgstr "Ohter Features" + +#: tang.html:143 tang.html:467 +msgid "内含 12.5G Transceivers" +msgstr "Inchip 12.5G Transceivers" + +#: tang.html:143 tang.html:144 tang.html:467 tang.html:468 +msgid "支持 PCIe 3.0 通信" +msgstr "Support PCIe 3.0 Interface" + +#: tang.html:143 tang.html:467 +msgid "支持 SFP+ 数据传输" +msgstr "Support SFP+ (10G) Transmission" + +#: tang.html:144 tang.html:468 +msgid "内含 8.0G Transceivers" +msgstr "Inchip 6.6G Transceivers" + +#: tang.html:144 tang.html:145 tang.html:468 tang.html:469 +msgid "支持 USB3 数据传输" +msgstr "Support USB3 SS Transmission" + +#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 +msgid "内含 6.6G Transceivers" +msgstr "Inchip 6.6G Transceivers" + +#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 +msgid "内含 2.5G MIPI C/DPHY RX/TX" +msgstr "2.5G MIPI C/DPHY RX/TX inside" + +#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 +msgid "支持 PCIe 2.0 通信" +msgstr "Support PCIe 2.0 Interface" + +#: tang.html:146 tang.html:470 +msgid "内含 2.5G MIPI DPHY RX/TX" +msgstr "2.5G MIPI DPHY RX/TX inside" + +#: tang.html:146 tang.html:470 +msgid "支持 PMOD, 64MByte SDRAM模块" +msgstr "Support PMOD,64MByte SDRAM Module" + +#: tang.html:146 tang.html:470 +msgid "支持 USB手柄" +msgstr "Support USB Joystick" + +#: tang.html:147 tang.html:471 +msgid "丰富外设,HDMI/以太网/USB" +msgstr "Rich peripherals, HDMI/Ethernet/USB" + +#: tang.html:148 tang.html:472 +msgid "M.2 外形兼容" +msgstr "M.2 Golden Fingers compatible" + +#: tang.html:149 tang.html:473 +msgid "for RetroGame ~" +msgstr "" + +#: tang.html:150 tang.html:474 +msgid "for RISCV softcore" +msgstr "" + +#: tang.html:151 tang.html:475 +msgid "GOAI~" +msgstr "" + +#: tang.html:165 +msgid "预售中,敬请期待。。。" +msgstr "Pre-saling..." + +#: tang.html:169 +msgid "/hardware/zh/tang/tang-console/mega-console.html" +msgstr "/hardware/en/tang/tang-console/mega-console.html" + +#: tang.html:173 +#, fuzzy +msgid "https://sipeed.com/tangconsole" +msgstr "https://sipeed.com/tangconsole" + +#: tang.html:181 tang.html:489 +msgid "小体积的中等量 FPGA 开发板" +msgstr "Campact Medium-capacity FPGA Board" + +#: tang.html:185 tang.html:493 +msgid "/hardware/zh/tang/tang-mega-60k/mega-60k.html" +msgstr "/hardware/en/tang/tang-mega-60k/mega-60k.html" + +#: tang.html:189 tang.html:205 tang.html:497 tang.html:513 +msgid "https://item.taobao.com/item.htm?id=808924746746" +msgstr "https://www.aliexpress.com/item/3256807078990410.html" + +#: tang.html:197 tang.html:505 +msgid "小体积的大容量 FPGA 开发板" +msgstr "Campact High-capacity FPGA Board" + +#: tang.html:201 tang.html:509 +msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" +msgstr "/hardware/en/tang/tang-mega-138k/mega-138k.html" + +#: tang.html:213 tang.html:521 +msgid "可以高速通信的大容量 FPGA 开发板" +msgstr "High Speed Interface FPGA Board" + +#: tang.html:217 tang.html:525 +msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" +msgstr "/hardware/en/tang/tang-mega-138k/mega-138k-pro.html" + +#: tang.html:221 tang.html:529 +msgid "https://item.taobao.com/item.htm?id=740536508140" +msgstr "https://www.aliexpress.com/item/1005006080116482.html" + +#: tang.html:229 tang.html:537 +msgid "自由拓展的 FPGA 开发板" +msgstr "Free Expansion FPGA board" + +#: tang.html:233 tang.html:541 +msgid "/hardware/zh/tang/tang-primer-25k/primer-25k.html" +msgstr "/hardware/en/tang/tang-primer-25k/primer-25k.html" + +#: tang.html:237 tang.html:545 +msgid "https://item.taobao.com/item.htm?id=746293292946" +msgstr "https://www.aliexpress.com/item/1005006224593018.html" + +#: tang.html:245 tang.html:553 +msgid "自带多种外设接口的 FPGA 开发板" +msgstr "Mutiple Interfaces FPGA Board" + +#: tang.html:249 tang.html:557 +msgid "/hardware/zh/tang/tang-primer-20k/primer-20k.html" +msgstr "/hardware/en/tang/tang-primer-20k/primer-20k.html" + +#: tang.html:253 tang.html:561 +msgid "https://item.taobao.com/item.htm?id=680099020807" +msgstr "https://www.aliexpress.com/item/1005004653308809.html" + +#: tang.html:261 tang.html:569 +msgid "适用于模拟复古游戏机的 FPGA 开发板" +msgstr "Retro Games Friendly FPGA Board" + +#: tang.html:265 tang.html:573 +msgid "/hardware/zh/tang/tang-nano-20k/nano-20k.html" +msgstr "/hardware/en/tang/tang-nano-20k/nano-20k.html" + +#: tang.html:269 tang.html:577 +msgid "https://item.taobao.com/item.htm?id=717932028073" +msgstr "https://www.aliexpress.com/item/1005005581148230.html" + +#: tang.html:277 tang.html:585 +msgid "适合 RiscV 软核验证的 FPGA 开发板" +msgstr "RiscV Softcore FPGA Board" + +#: tang.html:281 tang.html:589 +msgid "/hardware/zh/tang/Tang-Nano-9K/Nano-9K.html" +msgstr "/hardware/en/tang/Tang-Nano-9K/Nano-9K.html" + +#: tang.html:285 tang.html:593 +msgid "https://item.taobao.com/item.htm?id=666055424174" +msgstr " https://www.aliexpress.com/item/1005003803994525.html" + +#: tang.html:293 tang.html:601 +msgid "芯片内部含有 MCU 的 FPGA 开发板" +msgstr "Hardcore Inside FPGA Board" + +#: tang.html:297 tang.html:605 +msgid "/hardware/zh/tang/Tang-Nano-4K/Nano-4K.html" +msgstr "/hardware/en/tang/Tang-Nano-4K/Nano-4K.html" + +#: tang.html:301 tang.html:609 +#, fuzzy +msgid "https://item.taobao.com/item.htm?id=661994055100" +msgstr "https://www.aliexpress.com/item/1005003152104886.html" + +#: tang.html:309 tang.html:617 +#, fuzzy +msgid "开发中,敬请期待。。。" +msgstr "Pre-saling..." + +#: tang.html:313 tang.html:621 +msgid "/hardware/zh/tang/tang-primer-15k/primer-15k.html" +msgstr "/hardware/en/tang/tang-primer-15k/primer-15k.html" + +#~ msgid "预定" +#~ msgstr "Order" + +#~ msgid "带有高速通信接口的大容量 FPGA 开发板" +#~ msgstr "High-capacity FPGA board with high-speed ports" + +#~ msgid "尽情期待" +#~ msgstr "Coming soon" + +#~ msgid "了解更多" +#~ msgstr "Learn more" + +#~ msgid "Linux SBC 系列" +#~ msgstr "Linux SBC Series" + +#~ msgid "Linux ARM SBC 系列" +#~ msgstr "Linux ARM SBC Series" + +#~ msgid "/static/home/ax650_presell.jpg" +#~ msgstr "" + +#~ msgid "/static/home/licheepi4a_post.jpg" +#~ msgstr "" + +#~ msgid "分享广场" +#~ msgstr "Share Center" + +#~ msgid "MaixHub 官网" +#~ msgstr "MaixHub" + +#~ msgid "产品" +#~ msgstr "Product documentation" + +#~ msgid "全新 Maix 生态" +#~ msgstr "Neo Maix ecosystem" + +#~ msgid "经典 Maix 系列" +#~ msgstr "Classic Maix Series" + +#~ msgid "全新 Maix AI 视觉系列" +#~ msgstr "Neo Maix AI Vision" + +#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸553x368高清屏,玩美支持全新 Maix 生态所有软件" +#~ msgstr "" +#~ "RISC-V 1GHz + 1Tops NPU, 4M HD " +#~ "camera, 2.3-inch 553x368 HD screen, " +#~ "beautifully supports all new Maix " +#~ "ecosystem software" + +#~ msgid "和 MaixPy 同款 API,稳定高效易上手" +#~ msgstr "With the same API as MaixPy, stable, efficient, and easy to get started" + +#~ msgid "C++ SDK, 和 MaixPy 同款 API,稳定高效易上手" +#~ msgstr "" +#~ "C++ SDK, with the same API as " +#~ "MaixPy, stable, efficient, and easy to" +#~ " get started" + +#~ msgid "Python 编程、代码运行、图像实时预览、应用打包等" +#~ msgstr "" +#~ "Python programming, code execution, real-" +#~ "time image preview, application packaging, " +#~ "etc." + +#~ msgid "下载" +#~ msgstr "Downloads" + +#~ msgid "代码编辑运行、图像预览、在线 AI 模型训练" +#~ msgstr "Code editing and execution, image preview, online AI model training" + +#~ msgid "代码编辑运行、图像实时预览
在线一键 AI 模型训练" +#~ msgstr "" +#~ "Code editing and execution, real-time" +#~ " image preview, online one-click AI" +#~ " model training" + +#~ msgid "软件和云平台" +#~ msgstr "Software and cloud platform" + +#~ msgid "工具和云平台" +#~ msgstr "Tools and cloud platform" + +#~ msgid "Python 语法,快速落地 AI 视觉、听觉应用" +#~ msgstr "" +#~ "Python syntax, quick implementation of " +#~ "AI vision and auditory applications " + +#~ msgid "文档丰富度" +#~ msgstr "Rich documentation" + +#~ msgid "敬请期待。。。" +#~ msgstr "Coming Soon..." + +#~ msgid "/static/home/banner_maixcam.jpg" +#~ msgstr "/static/home/banner_maixcam_en.jpg" + +#~ msgid "/maixcam" +#~ msgstr "/en/maixcam" + +#~ msgid "/maixpy" +#~ msgstr "/en/maixpy" + +#~ msgid "https://item.taobao.com/item.htm?id=784724795837" +#~ msgstr "https://www.aliexpress.com/store/911876460" + +#~ msgid "/static/home/LicheeRV-Nano.jpg" +#~ msgstr "/static/home/LicheeRV-nano_en.jpg" + +#~ msgid "/static/home/LonganPi3H.jpg" +#~ msgstr "/static/home/maixiii_axpi_en.jpg" + +#~ msgid "/static/home/console-4A.jpg" +#~ msgstr "/static/home/maixiii_axpi_en.jpg" + +#~ msgid "产品动态" +#~ msgstr "Product News" + +#~ msgid "Maix AI 视觉" +#~ msgstr "Maix AI Vision" + +#~ msgid "MaixSense 传感器" +#~ msgstr "MaixSense Sensor" + +#~ msgid "其它" +#~ msgstr "Others" + +#~ msgid "Tang FPGA 系列" +#~ msgstr "Tang FPGA Series" + +#~ msgid "Tang 系列板卡参数对比" +#~ msgstr "Tang Series Product Comparison" + +#~ msgid "芯片" +#~ msgstr "Chip" + +#~ msgid "查找表(LUT)" +#~ msgstr "LUT4" + +#~ msgid "寄存器(FF)" +#~ msgstr "FF" + +#~ msgid "板载_fpga" +#~ msgstr "Onboard" + +#~ msgid "内含" +#~ msgstr "Inchip" + +#~ msgid "内嵌处理器" +#~ msgstr "CPU" + +#~ msgid "其他特点" +#~ msgstr "Ohter Features" + +#~ msgid "内含 6.6G Transceivers" +#~ msgstr "Inchip 6.6G Transceivers" + +#~ msgid "支持 PCIe 2.0 通信" +#~ msgstr "Support PCIe 2.0 Interface" + +#~ msgid "支持 USB3 数据传输" +#~ msgstr "Support USB3 SS Transmission" + +#~ msgid "内含 12.5G Transceivers" +#~ msgstr "Inchip 12.5G Transceivers" + +#~ msgid "支持 PCIe 3.0 通信" +#~ msgstr "Support PCIe 3.0 Interface" + +#~ msgid "支持 SFP+ 数据传输" +#~ msgstr "Support SFP+ (10G) Transmission" + +#~ msgid "内含 2.5G MIPI C/DPHY RX/TX" +#~ msgstr "2.5G MIPI C/DPHY RX/TX inside" + +#~ msgid "内含 2.5G MIPI DPHY RX/TX" +#~ msgstr "2.5G MIPI DPHY RX/TX inside" + +#~ msgid "支持 PMOD, 64MByte SDRAM模块" +#~ msgstr "Support PMOD,64MByte SDRAM Module" + +#~ msgid "支持 USB手柄" +#~ msgstr "Support USB Joystick" + +#~ msgid "丰富外设,HDMI/以太网/USB" +#~ msgstr "Rich peripherals, HDMI/Ethernet/USB" + +#~ msgid "M.2 外形兼容" +#~ msgstr "M.2 Golden Fingers compatible" + +#~ msgid "for RetroGame ~" +#~ msgstr "" + +#~ msgid "for RISCV softcore" +#~ msgstr "" + +#~ msgid "GOAI~" +#~ msgstr "" + +#~ msgid "小体积的大容量 FPGA 开发板" +#~ msgstr "Campact High-capacity FPGA Board" + +#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" +#~ msgstr "/hardware/en/tang/tang-mega-138k/mega-138k.html" + +#~ msgid "可以高速通信的大容量 FPGA 开发板" +#~ msgstr "High Speed Interface FPGA Board" + +#~ msgid "自由拓展的 FPGA 开发板" +#~ msgstr "Free Expansion FPGA board" + +#~ msgid "自带多种外设接口的 FPGA 开发板" +#~ msgstr "Mutiple Interfaces FPGA Board" + +#~ msgid "适用于模拟复古游戏机的 FPGA 开发板" +#~ msgstr "Retro Games Friendly FPGA Board" + +#~ msgid "适合 RiscV 软核验证的 FPGA 开发板" +#~ msgstr "RiscV Softcore FPGA Board" + +#~ msgid "芯片内部含有 MCU 的 FPGA 开发板" +#~ msgstr "Hardcore Inside FPGA Board" + +#~ msgid "开发中,敬请期待。。。" +#~ msgstr "Coming soon..." + +#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" +#~ msgstr "/hardware/en/tang/tang-mega-138k/mega-138k-pro.html" + +#~ msgid "淘宝" +#~ msgstr "" + diff --git a/layout/locales/zh/LC_MESSAGES/messages.po b/layout/locales/zh/LC_MESSAGES/messages.po index 2be507df..db84e0d4 100644 --- a/layout/locales/zh/LC_MESSAGES/messages.po +++ b/layout/locales/zh/LC_MESSAGES/messages.po @@ -1,842 +1,842 @@ -# -msgid "" -msgstr "" - -#: home.html:93 -msgid "/static/home/banner_maixcam.jpg" -msgstr "" - -#: home.html:96 -msgid "硬件文档" -msgstr "" - -#: home.html:97 -msgid "/maixcam" -msgstr "" - -#: home.html:101 -msgid "/maixpy" -msgstr "" - -#: home.html:104 home.html:117 home.html:130 home.html:143 home.html:156 -#: home.html:169 home.html:182 home.html:195 home.html:208 licheepi.html:221 -#: licheepi.html:242 licheepi.html:258 licheepi.html:279 licheepi.html:295 -#: licheepi.html:311 maix.html:167 maix.html:241 maix.html:262 maix.html:279 -#: maix.html:296 maixsense.html:44 maixsense.html:60 others.html:42 -#: tang.html:172 tang.html:188 tang.html:204 tang.html:220 tang.html:236 -#: tang.html:252 tang.html:268 tang.html:284 tang.html:300 tang.html:316 -#: tang.html:496 tang.html:512 tang.html:528 tang.html:544 tang.html:560 -#: tang.html:576 tang.html:592 tang.html:608 tang.html:624 -msgid "购买" -msgstr "" - -#: home.html:105 -msgid "https://item.taobao.com/item.htm?id=784724795837" -msgstr "" - -#: home.html:110 -msgid "/static/home/banner_nanokvm_zh.jpg" -msgstr "" - -#: home.html:113 home.html:126 home.html:139 home.html:152 home.html:165 -#: home.html:178 home.html:191 home.html:204 licheepi.html:217 -#: licheepi.html:238 licheepi.html:254 licheepi.html:275 licheepi.html:291 -#: licheepi.html:307 maix.html:180 maix.html:197 maix.html:237 maix.html:254 -#: maix.html:275 maix.html:292 maixsense.html:40 maixsense.html:56 -#: others.html:38 tang.html:168 tang.html:184 tang.html:200 tang.html:216 -#: tang.html:232 tang.html:248 tang.html:264 tang.html:280 tang.html:296 -#: tang.html:312 tang.html:492 tang.html:508 tang.html:524 tang.html:540 -#: tang.html:556 tang.html:572 tang.html:588 tang.html:604 tang.html:620 -msgid "文档" -msgstr "" - -#: home.html:114 -msgid "/nanokvm" -msgstr "" - -#: home.html:118 -msgid "https://item.taobao.com/item.htm?id=811206560480" -msgstr "" - -#: home.html:123 -msgid "/static/home/LicheeRV-Nano.jpg" -msgstr "" - -#: home.html:131 licheepi.html:243 -msgid "https://item.taobao.com/item.htm?id=764939520376" -msgstr "" - -#: home.html:136 -msgid "/static/home/LonganPi3H.jpg" -msgstr "" - -#: home.html:144 licheepi.html:280 -msgid "https://item.taobao.com/item.htm?ft=t&id=758221950525" -msgstr "" - -#: home.html:149 -msgid "/static/home/console-4A.jpg" -msgstr "" - -#: home.html:196 home.html:209 others.html:43 -msgid "https://item.taobao.com/item.htm?id=737788586308" -msgstr "" - -#: home.html:218 -msgid "产品动态" -msgstr "" - -#: home.html:222 -msgid "Maix AI 视觉" -msgstr "" - -#: home.html:234 -msgid "MaixSense 传感器" -msgstr "" - -#: home.html:238 -msgid "其它" -msgstr "" - -#: licheepi.html:4 -msgid "Linux RISC-V SBC 系列" -msgstr "" - -#: licheepi.html:23 -msgid "Linux ARM SBC 系列" -msgstr "" - -#: licheepi.html:41 -msgid "RISC-V SBC 系列产品参数对比" -msgstr "" - -#: licheepi.html:49 licheepi.html:132 maix.html:53 tang.html:32 tang.html:356 -msgid "参数" -msgstr "" - -#: licheepi.html:57 licheepi.html:140 maix.html:63 -msgid "处理器" -msgstr "" - -#: licheepi.html:63 licheepi.html:146 maix.html:71 -msgid "内存" -msgstr "" - -#: licheepi.html:69 licheepi.html:152 maix.html:90 tang.html:130 tang.html:454 -msgid "储存" -msgstr "" - -#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 -#: licheepi.html:154 -msgid "预留" -msgstr "" - -#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 -#: licheepi.html:154 licheepi.html:155 maix.html:91 maix.html:92 maix.html:93 -#: maix.html:94 maix.html:95 -msgid "卡" -msgstr "" - -#: licheepi.html:75 licheepi.html:158 -msgid "GPU和显示" -msgstr "" - -#: licheepi.html:81 licheepi.html:82 licheepi.html:108 licheepi.html:160 -#: licheepi.html:161 licheepi.html:185 licheepi.html:186 licheepi.html:187 -#: maix.html:129 maix.html:136 maix.html:137 -msgid "无" -msgstr "" - -#: licheepi.html:85 licheepi.html:164 -msgid "编解码器" -msgstr "" - -#: licheepi.html:88 licheepi.html:91 licheepi.html:94 licheepi.html:166 -#: licheepi.html:169 licheepi.html:173 licheepi.html:174 -msgid "解码" -msgstr "" - -#: licheepi.html:88 licheepi.html:91 licheepi.html:95 licheepi.html:166 -#: licheepi.html:170 licheepi.html:174 -msgid "编码" -msgstr "" - -#: licheepi.html:99 licheepi.html:178 maix.html:106 -msgid "操作系统" -msgstr "" - -#: licheepi.html:100 licheepi.html:101 licheepi.html:179 licheepi.html:181 -msgid "主线" -msgstr "" - -#: licheepi.html:111 licheepi.html:190 maix.html:114 -msgid "典型外设" -msgstr "" - -#: licheepi.html:126 -msgid "ARM SBC 系列产品参数对比" -msgstr "" - -#: licheepi.html:155 maix.html:92 maix.html:93 -msgid "板载" -msgstr "" - -#: licheepi.html:214 -msgid "高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑" -msgstr "" - -#: licheepi.html:222 -msgid "https://item.taobao.com/item.htm?id=715508771884" -msgstr "" - -#: licheepi.html:226 -msgid "更多" -msgstr "" - -#: licheepi.html:235 -msgid "高性价比迷你 RISC-V IPC/屏显开发板" -msgstr "" - -#: licheepi.html:251 -msgid "高集成度入门级 RISC-V Linux 开发板" -msgstr "" - -#: licheepi.html:272 -msgid "H618 4核A53@1.5GHz 小电脑" -msgstr "" - -#: licheepi.html:276 -msgid "/lpi3h.html" -msgstr "" - -#: licheepi.html:288 licheepi.html:304 -msgid "迷你" -msgstr "" - -#: licheepi.html:288 licheepi.html:304 -msgid "开发板" -msgstr "" - -#: maix.html:5 -msgid "全新 Maix 生态" -msgstr "" - -#: maix.html:27 -msgid "经典 Maix 视觉系列" -msgstr "" - -#: maix.html:46 -msgid "Maix 系列产品参数对比" -msgstr "" - -#: maix.html:65 -msgid "双核" -msgstr "" - -#: maix.html:65 -msgid "位" -msgstr "" - -#: maix.html:80 maix.html:83 maix.html:85 -msgid "支持常用" -msgstr "" - -#: maix.html:80 maix.html:83 maix.html:86 -msgid "模型" -msgstr "" - -#: maix.html:80 maix.html:92 -msgid "支持" -msgstr "" - -#: maix.html:81 maix.html:82 -msgid "支持有限" -msgstr "" - -#: maix.html:81 maix.html:82 -msgid "算子" -msgstr "" - -#: maix.html:85 -msgid "和" -msgstr "" - -#: maix.html:91 maix.html:93 maix.html:94 maix.html:95 -msgid "或者" -msgstr "" - -#: maix.html:98 -msgid "软件支持" -msgstr "" - -#: maix.html:125 maix.html:126 maix.html:127 maix.html:128 maix.html:129 -msgid "支持度" -msgstr "" - -#: maix.html:125 -msgid "优" -msgstr "" - -#: maix.html:126 maix.html:128 -msgid "中" -msgstr "" - -#: maix.html:127 -msgid "良" -msgstr "" - -#: maix.html:140 -msgid "文档和易用性" -msgstr "" - -#: maix.html:160 -msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,多种尺寸高清电容触摸屏,完美支持全新 Maix 生态所有软件" -msgstr "" - -#: maix.html:168 tang.html:317 tang.html:625 -msgid "https://sipeed.taobao.com" -msgstr "" - -#: maix.html:177 -msgid "Python 语法,简易 API,快速落地 AI 视觉、听觉应用" -msgstr "" - -#: maix.html:184 maix.html:202 -msgid "源码" -msgstr "" - -#: maix.html:194 -msgid "C++ SDK, MaixPy 同款 API,稳定高效易上手" -msgstr "" - -#: maix.html:210 -msgid "IDE 和云平台" -msgstr "" - -#: maix.html:212 -msgid "代码编辑运行、图像实时预览,在线一键 AI 模型训练" -msgstr "" - -#: maix.html:234 -msgid "带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用" -msgstr "" - -#: maix.html:251 -msgid "硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配" -msgstr "" - -#: maix.html:258 -msgid "MaixPy3" -msgstr "" - -#: maix.html:272 -msgid "3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC" -msgstr "" - -#: maix.html:289 -msgid "10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持" -msgstr "" - -#: maix.html:297 -msgid "https://item.taobao.com/item.htm?id=744014549573" -msgstr "" - -#: maixsense.html:4 -msgid "MaixSense 传感器模组系列" -msgstr "" - -#: maixsense.html:37 -msgid "深度传感器模组" -msgstr "" - -#: maixsense.html:53 -msgid "深度摄像头模组" -msgstr "" - -#: others.html:24 -msgid "其它未列出的产品请进入" -msgstr "" - -#: others.html:24 -msgid "产品文档" -msgstr "" - -#: others.html:24 -msgid "在左侧目录查找" -msgstr "" - -#: others.html:35 -msgid "逻辑分析仪+CKLink+DAPLink+USB转串口 多合一指尖工具" -msgstr "" - -#: tang.html:5 tang.html:329 -msgid "Tang FPGA 系列" -msgstr "" - -#: tang.html:25 tang.html:349 -msgid "Tang 系列板卡参数对比" -msgstr "" - -#: tang.html:46 tang.html:370 -msgid "芯片" -msgstr "" - -#: tang.html:58 tang.html:382 -msgid "查找表(LUT)" -msgstr "" - -#: tang.html:70 tang.html:394 -msgid "寄存器(FF)" -msgstr "" - -#: tang.html:107 tang.html:108 tang.html:109 tang.html:111 tang.html:131 -#: tang.html:132 tang.html:133 tang.html:134 tang.html:135 tang.html:136 -#: tang.html:137 tang.html:138 tang.html:139 tang.html:431 tang.html:432 -#: tang.html:433 tang.html:435 tang.html:455 tang.html:456 tang.html:457 -#: tang.html:458 tang.html:459 tang.html:460 tang.html:461 tang.html:462 -#: tang.html:463 -msgid "板载_fpga" -msgstr "" - -#: tang.html:112 tang.html:113 tang.html:114 tang.html:115 tang.html:138 -#: tang.html:139 tang.html:436 tang.html:437 tang.html:438 tang.html:439 -#: tang.html:462 tang.html:463 -msgid "内含" -msgstr "" - -#: tang.html:118 tang.html:442 -msgid "内嵌处理器" -msgstr "" - -#: tang.html:142 tang.html:466 -msgid "其他特点" -msgstr "" - -#: tang.html:143 tang.html:467 -msgid "内含 12.5G Transceivers" -msgstr "" - -#: tang.html:143 tang.html:144 tang.html:467 tang.html:468 -msgid "支持 PCIe 3.0 通信" -msgstr "" - -#: tang.html:143 tang.html:467 -msgid "支持 SFP+ 数据传输" -msgstr "" - -#: tang.html:144 tang.html:468 -msgid "内含 8.0G Transceivers" -msgstr "" - -#: tang.html:144 tang.html:145 tang.html:468 tang.html:469 -msgid "支持 USB3 数据传输" -msgstr "" - -#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 -msgid "内含 6.6G Transceivers" -msgstr "" - -#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 -msgid "内含 2.5G MIPI C/DPHY RX/TX" -msgstr "" - -#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 -msgid "支持 PCIe 2.0 通信" -msgstr "" - -#: tang.html:146 tang.html:470 -msgid "内含 2.5G MIPI DPHY RX/TX" -msgstr "" - -#: tang.html:146 tang.html:470 -msgid "支持 PMOD, 64MByte SDRAM模块" -msgstr "" - -#: tang.html:146 tang.html:470 -msgid "支持 USB手柄" -msgstr "" - -#: tang.html:147 tang.html:471 -msgid "丰富外设,HDMI/以太网/USB" -msgstr "" - -#: tang.html:148 tang.html:472 -msgid "M.2 外形兼容" -msgstr "" - -#: tang.html:149 tang.html:473 -msgid "for RetroGame ~" -msgstr "" - -#: tang.html:150 tang.html:474 -msgid "for RISCV softcore" -msgstr "" - -#: tang.html:151 tang.html:475 -msgid "GOAI~" -msgstr "" - -#: tang.html:165 -msgid "预售中,敬请期待。。。" -msgstr "" - -#: tang.html:169 -msgid "/hardware/zh/tang/tang-console/mega-console.html" -msgstr "" - -#: tang.html:173 -msgid "https://sipeed.com/tangconsole" -msgstr "" - -#: tang.html:181 tang.html:489 -msgid "小体积的中等量 FPGA 开发板" -msgstr "" - -#: tang.html:185 tang.html:493 -msgid "/hardware/zh/tang/tang-mega-60k/mega-60k.html" -msgstr "" - -#: tang.html:189 tang.html:205 tang.html:497 tang.html:513 -msgid "https://item.taobao.com/item.htm?id=808924746746" -msgstr "" - -#: tang.html:197 tang.html:505 -msgid "小体积的大容量 FPGA 开发板" -msgstr "" - -#: tang.html:201 tang.html:509 -msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" -msgstr "" - -#: tang.html:213 tang.html:521 -msgid "可以高速通信的大容量 FPGA 开发板" -msgstr "" - -#: tang.html:217 tang.html:525 -msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" -msgstr "" - -#: tang.html:221 tang.html:529 -msgid "https://item.taobao.com/item.htm?id=740536508140" -msgstr "" - -#: tang.html:229 tang.html:537 -msgid "自由拓展的 FPGA 开发板" -msgstr "" - -#: tang.html:233 tang.html:541 -msgid "/hardware/zh/tang/tang-primer-25k/primer-25k.html" -msgstr "" - -#: tang.html:237 tang.html:545 -msgid "https://item.taobao.com/item.htm?id=746293292946" -msgstr "" - -#: tang.html:245 tang.html:553 -msgid "自带多种外设接口的 FPGA 开发板" -msgstr "" - -#: tang.html:249 tang.html:557 -msgid "/hardware/zh/tang/tang-primer-20k/primer-20k.html" -msgstr "" - -#: tang.html:253 tang.html:561 -msgid "https://item.taobao.com/item.htm?id=680099020807" -msgstr "" - -#: tang.html:261 tang.html:569 -msgid "适用于模拟复古游戏机的 FPGA 开发板" -msgstr "" - -#: tang.html:265 tang.html:573 -msgid "/hardware/zh/tang/tang-nano-20k/nano-20k.html" -msgstr "" - -#: tang.html:269 tang.html:577 -msgid "https://item.taobao.com/item.htm?id=717932028073" -msgstr "" - -#: tang.html:277 tang.html:585 -msgid "适合 RiscV 软核验证的 FPGA 开发板" -msgstr "" - -#: tang.html:281 tang.html:589 -msgid "/hardware/zh/tang/Tang-Nano-9K/Nano-9K.html" -msgstr "" - -#: tang.html:285 tang.html:593 -msgid "https://item.taobao.com/item.htm?id=666055424174" -msgstr "" - -#: tang.html:293 tang.html:601 -msgid "芯片内部含有 MCU 的 FPGA 开发板" -msgstr "" - -#: tang.html:297 tang.html:605 -msgid "/hardware/zh/tang/Tang-Nano-4K/Nano-4K.html" -msgstr "" - -#: tang.html:301 tang.html:609 -msgid "https://item.taobao.com/item.htm?id=661994055100" -msgstr "" - -#: tang.html:309 tang.html:617 -msgid "开发中,敬请期待。。。" -msgstr "" - -#: tang.html:313 tang.html:621 -msgid "/hardware/zh/tang/tang-primer-15k/primer-15k.html" -msgstr "" - -#~ msgid "/static/home/licheepi4a_post.jpg" -#~ msgstr "" - -#~ msgid "分享广场" -#~ msgstr "" - -#~ msgid "MaixHub 官网" -#~ msgstr "" - -#~ msgid "产品动态" -#~ msgstr "" - -#~ msgid "Maix AI 视觉" -#~ msgstr "" - -#~ msgid "MaixSense 传感器" -#~ msgstr "" - -#~ msgid "其它" -#~ msgstr "" - -#~ msgid "/static/home/licheepi4a_2.jpg" -#~ msgstr "" - -#~ msgid "预定" -#~ msgstr "" - -#~ msgid "带有高速通信接口的大容量 FPGA 开发板" -#~ msgstr "" - -#~ msgid "尽情期待" -#~ msgstr "" - -#~ msgid "Tang 系列主流板卡参数对比" -#~ msgstr "" - -#~ msgid "了解更多" -#~ msgstr "" - -#~ msgid "Linux SBC 系列" -#~ msgstr "" - -#~ msgid "lpi3h" -#~ msgstr "" - -#~ msgid "Linux ARM SBC 系列" -#~ msgstr "" - -#~ msgid "Lichee SBC 系列产品参数对比" -#~ msgstr "" - -#~ msgid "/static/home/ax650_presell.jpg" -#~ msgstr "" - -#~ msgid "/static/home/maixiii_axpi.jpg" -#~ msgstr "" - -#~ msgid "/licheerv-nano" -#~ msgstr "" - -#~ msgid "产品" -#~ msgstr "" - -#~ msgid "Maix AI 视觉系列" -#~ msgstr "" - -#~ msgid "全新 Maix 生态" -#~ msgstr "" - -#~ msgid "经典 Maix 系列" -#~ msgstr "" - -#~ msgid "全新 Maix AI 视觉系列" -#~ msgstr "" - -#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸553x368高清屏,玩美支持全新 Maix 生态所有软件" -#~ msgstr "" - -#~ msgid "和 MaixPy 同款 API,稳定高效易上手" -#~ msgstr "" - -#~ msgid "C++ SDK, 和 MaixPy 同款 API,稳定高效易上手" -#~ msgstr "" - -#~ msgid "Python 编程、代码运行、图像实时预览、应用打包等" -#~ msgstr "" - -#~ msgid "下载" -#~ msgstr "" - -#~ msgid "代码编辑运行、图像预览、在线 AI 模型训练" -#~ msgstr "" - -#~ msgid "代码编辑运行、图像实时预览
在线一键 AI 模型训练" -#~ msgstr "" - -#~ msgid "经典 Maix 视觉系列" -#~ msgstr "" - -#~ msgid "软件和云平台" -#~ msgstr "" - -#~ msgid "工具和云平台" -#~ msgstr "" - -#~ msgid "Python 语法,快速落地 AI 视觉、听觉应用" -#~ msgstr "" - -#~ msgid "文档丰富度" -#~ msgstr "" - -#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸553x368高清电容触摸屏,玩美支持全新 Maix 生态所有软件" -#~ msgstr "" - -#~ msgid "敬请期待。。。" -#~ msgstr "" - -#~ msgid "/static/home/banner_maixcam.jpg" -#~ msgstr "" - -#~ msgid "/maixcam" -#~ msgstr "" - -#~ msgid "/maixpy" -#~ msgstr "" - -#~ msgid "https://item.taobao.com/item.htm?id=784724795837" -#~ msgstr "" - -#~ msgid "/static/home/LicheeRV-Nano.jpg" -#~ msgstr "" - -#~ msgid "/static/home/LonganPi3H.jpg" -#~ msgstr "" - -#~ msgid "/static/home/console-4A.jpg" -#~ msgstr "" - -#~ msgid "支持 PCIE 通信" -#~ msgstr "" - -#~ msgid "Tang FPGA 系列" -#~ msgstr "" - -#~ msgid "Tang 系列板卡参数对比" -#~ msgstr "" - -#~ msgid "芯片" -#~ msgstr "" - -#~ msgid "查找表(LUT)" -#~ msgstr "" - -#~ msgid "寄存器(FF)" -#~ msgstr "" - -#~ msgid "板载_fpga" -#~ msgstr "" - -#~ msgid "内含" -#~ msgstr "" - -#~ msgid "内嵌处理器" -#~ msgstr "" - -#~ msgid "其他特点" -#~ msgstr "" - -#~ msgid "内含 6.6G Transceivers" -#~ msgstr "" - -#~ msgid "支持 PCIe 2.0 通信" -#~ msgstr "" - -#~ msgid "支持 USB3 数据传输" -#~ msgstr "" - -#~ msgid "内含 12.5G Transceivers" -#~ msgstr "" - -#~ msgid "支持 PCIe 3.0 通信" -#~ msgstr "" - -#~ msgid "支持 SFP+ 数据传输" -#~ msgstr "" - -#~ msgid "内含 2.5G MIPI C/DPHY RX/TX" -#~ msgstr "" - -#~ msgid "内含 2.5G MIPI DPHY RX/TX" -#~ msgstr "" - -#~ msgid "支持 PMOD, 64MByte SDRAM模块" -#~ msgstr "" - -#~ msgid "支持 USB手柄" -#~ msgstr "" - -#~ msgid "丰富外设,HDMI/以太网/USB" -#~ msgstr "" - -#~ msgid "M.2 外形兼容" -#~ msgstr "" - -#~ msgid "for RetroGame ~" -#~ msgstr "" - -#~ msgid "for RISCV softcore" -#~ msgstr "" - -#~ msgid "GOAI~" -#~ msgstr "" - -#~ msgid "小体积的大容量 FPGA 开发板" -#~ msgstr "" - -#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" -#~ msgstr "" - -#~ msgid "可以高速通信的大容量 FPGA 开发板" -#~ msgstr "" - -#~ msgid "自由拓展的 FPGA 开发板" -#~ msgstr "" - -#~ msgid "自带多种外设接口的 FPGA 开发板" -#~ msgstr "" - -#~ msgid "适用于模拟复古游戏机的 FPGA 开发板" -#~ msgstr "" - -#~ msgid "适合 RiscV 软核验证的 FPGA 开发板" -#~ msgstr "" - -#~ msgid "芯片内部含有 MCU 的 FPGA 开发板" -#~ msgstr "" - -#~ msgid "开发中,敬请期待。。。" -#~ msgstr "" - -#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" -#~ msgstr "" - -#~ msgid "https://item.taobao.com/item.htm?id=74053650814" -#~ msgstr "" - -#~ msgid "淘宝" -#~ msgstr "" - -#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸552x368高清电容触摸屏,完美支持全新 Maix 生态所有软件" -#~ msgstr "" - +# +msgid "" +msgstr "" + +#: home.html:93 +msgid "/static/home/banner_maixcam.jpg" +msgstr "" + +#: home.html:96 +msgid "硬件文档" +msgstr "" + +#: home.html:97 +msgid "/maixcam" +msgstr "" + +#: home.html:101 +msgid "/maixpy" +msgstr "" + +#: home.html:104 home.html:117 home.html:130 home.html:143 home.html:156 +#: home.html:169 home.html:182 home.html:195 home.html:208 licheepi.html:221 +#: licheepi.html:242 licheepi.html:258 licheepi.html:279 licheepi.html:295 +#: licheepi.html:311 maix.html:167 maix.html:241 maix.html:262 maix.html:279 +#: maix.html:296 maixsense.html:44 maixsense.html:60 others.html:42 +#: tang.html:172 tang.html:188 tang.html:204 tang.html:220 tang.html:236 +#: tang.html:252 tang.html:268 tang.html:284 tang.html:300 tang.html:316 +#: tang.html:496 tang.html:512 tang.html:528 tang.html:544 tang.html:560 +#: tang.html:576 tang.html:592 tang.html:608 tang.html:624 +msgid "购买" +msgstr "" + +#: home.html:105 +msgid "https://item.taobao.com/item.htm?id=784724795837" +msgstr "" + +#: home.html:110 +msgid "/static/home/banner_nanokvm_zh.jpg" +msgstr "" + +#: home.html:113 home.html:126 home.html:139 home.html:152 home.html:165 +#: home.html:178 home.html:191 home.html:204 licheepi.html:217 +#: licheepi.html:238 licheepi.html:254 licheepi.html:275 licheepi.html:291 +#: licheepi.html:307 maix.html:180 maix.html:197 maix.html:237 maix.html:254 +#: maix.html:275 maix.html:292 maixsense.html:40 maixsense.html:56 +#: others.html:38 tang.html:168 tang.html:184 tang.html:200 tang.html:216 +#: tang.html:232 tang.html:248 tang.html:264 tang.html:280 tang.html:296 +#: tang.html:312 tang.html:492 tang.html:508 tang.html:524 tang.html:540 +#: tang.html:556 tang.html:572 tang.html:588 tang.html:604 tang.html:620 +msgid "文档" +msgstr "" + +#: home.html:114 +msgid "/nanokvm" +msgstr "" + +#: home.html:118 +msgid "https://item.taobao.com/item.htm?id=811206560480" +msgstr "" + +#: home.html:123 +msgid "/static/home/LicheeRV-Nano.jpg" +msgstr "" + +#: home.html:131 licheepi.html:243 +msgid "https://item.taobao.com/item.htm?id=764939520376" +msgstr "" + +#: home.html:136 +msgid "/static/home/LonganPi3H.jpg" +msgstr "" + +#: home.html:144 licheepi.html:280 +msgid "https://item.taobao.com/item.htm?ft=t&id=758221950525" +msgstr "" + +#: home.html:149 +msgid "/static/home/console-4A.jpg" +msgstr "" + +#: home.html:196 home.html:209 others.html:43 +msgid "https://item.taobao.com/item.htm?id=737788586308" +msgstr "" + +#: home.html:218 +msgid "产品动态" +msgstr "" + +#: home.html:222 +msgid "Maix AI 视觉" +msgstr "" + +#: home.html:234 +msgid "MaixSense 传感器" +msgstr "" + +#: home.html:238 +msgid "其它" +msgstr "" + +#: licheepi.html:4 +msgid "Linux RISC-V SBC 系列" +msgstr "" + +#: licheepi.html:23 +msgid "Linux ARM SBC 系列" +msgstr "" + +#: licheepi.html:41 +msgid "RISC-V SBC 系列产品参数对比" +msgstr "" + +#: licheepi.html:49 licheepi.html:132 maix.html:53 tang.html:32 tang.html:356 +msgid "参数" +msgstr "" + +#: licheepi.html:57 licheepi.html:140 maix.html:63 +msgid "处理器" +msgstr "" + +#: licheepi.html:63 licheepi.html:146 maix.html:71 +msgid "内存" +msgstr "" + +#: licheepi.html:69 licheepi.html:152 maix.html:90 tang.html:130 tang.html:454 +msgid "储存" +msgstr "" + +#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 +#: licheepi.html:154 +msgid "预留" +msgstr "" + +#: licheepi.html:70 licheepi.html:71 licheepi.html:72 licheepi.html:153 +#: licheepi.html:154 licheepi.html:155 maix.html:91 maix.html:92 maix.html:93 +#: maix.html:94 maix.html:95 +msgid "卡" +msgstr "" + +#: licheepi.html:75 licheepi.html:158 +msgid "GPU和显示" +msgstr "" + +#: licheepi.html:81 licheepi.html:82 licheepi.html:108 licheepi.html:160 +#: licheepi.html:161 licheepi.html:185 licheepi.html:186 licheepi.html:187 +#: maix.html:129 maix.html:136 maix.html:137 +msgid "无" +msgstr "" + +#: licheepi.html:85 licheepi.html:164 +msgid "编解码器" +msgstr "" + +#: licheepi.html:88 licheepi.html:91 licheepi.html:94 licheepi.html:166 +#: licheepi.html:169 licheepi.html:173 licheepi.html:174 +msgid "解码" +msgstr "" + +#: licheepi.html:88 licheepi.html:91 licheepi.html:95 licheepi.html:166 +#: licheepi.html:170 licheepi.html:174 +msgid "编码" +msgstr "" + +#: licheepi.html:99 licheepi.html:178 maix.html:106 +msgid "操作系统" +msgstr "" + +#: licheepi.html:100 licheepi.html:101 licheepi.html:179 licheepi.html:181 +msgid "主线" +msgstr "" + +#: licheepi.html:111 licheepi.html:190 maix.html:114 +msgid "典型外设" +msgstr "" + +#: licheepi.html:126 +msgid "ARM SBC 系列产品参数对比" +msgstr "" + +#: licheepi.html:155 maix.html:92 maix.html:93 +msgid "板载" +msgstr "" + +#: licheepi.html:214 +msgid "高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑" +msgstr "" + +#: licheepi.html:222 +msgid "https://item.taobao.com/item.htm?id=715508771884" +msgstr "" + +#: licheepi.html:226 +msgid "更多" +msgstr "" + +#: licheepi.html:235 +msgid "高性价比迷你 RISC-V IPC/屏显开发板" +msgstr "" + +#: licheepi.html:251 +msgid "高集成度入门级 RISC-V Linux 开发板" +msgstr "" + +#: licheepi.html:272 +msgid "H618 4核A53@1.5GHz 小电脑" +msgstr "" + +#: licheepi.html:276 +msgid "/lpi3h.html" +msgstr "" + +#: licheepi.html:288 licheepi.html:304 +msgid "迷你" +msgstr "" + +#: licheepi.html:288 licheepi.html:304 +msgid "开发板" +msgstr "" + +#: maix.html:5 +msgid "全新 Maix 生态" +msgstr "" + +#: maix.html:27 +msgid "经典 Maix 视觉系列" +msgstr "" + +#: maix.html:46 +msgid "Maix 系列产品参数对比" +msgstr "" + +#: maix.html:65 +msgid "双核" +msgstr "" + +#: maix.html:65 +msgid "位" +msgstr "" + +#: maix.html:80 maix.html:83 maix.html:85 +msgid "支持常用" +msgstr "" + +#: maix.html:80 maix.html:83 maix.html:86 +msgid "模型" +msgstr "" + +#: maix.html:80 maix.html:92 +msgid "支持" +msgstr "" + +#: maix.html:81 maix.html:82 +msgid "支持有限" +msgstr "" + +#: maix.html:81 maix.html:82 +msgid "算子" +msgstr "" + +#: maix.html:85 +msgid "和" +msgstr "" + +#: maix.html:91 maix.html:93 maix.html:94 maix.html:95 +msgid "或者" +msgstr "" + +#: maix.html:98 +msgid "软件支持" +msgstr "" + +#: maix.html:125 maix.html:126 maix.html:127 maix.html:128 maix.html:129 +msgid "支持度" +msgstr "" + +#: maix.html:125 +msgid "优" +msgstr "" + +#: maix.html:126 maix.html:128 +msgid "中" +msgstr "" + +#: maix.html:127 +msgid "良" +msgstr "" + +#: maix.html:140 +msgid "文档和易用性" +msgstr "" + +#: maix.html:160 +msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,多种尺寸高清电容触摸屏,完美支持全新 Maix 生态所有软件" +msgstr "" + +#: maix.html:168 tang.html:317 tang.html:625 +msgid "https://sipeed.taobao.com" +msgstr "" + +#: maix.html:177 +msgid "Python 语法,简易 API,快速落地 AI 视觉、听觉应用" +msgstr "" + +#: maix.html:184 maix.html:202 +msgid "源码" +msgstr "" + +#: maix.html:194 +msgid "C++ SDK, MaixPy 同款 API,稳定高效易上手" +msgstr "" + +#: maix.html:210 +msgid "IDE 和云平台" +msgstr "" + +#: maix.html:212 +msgid "代码编辑运行、图像实时预览,在线一键 AI 模型训练" +msgstr "" + +#: maix.html:234 +msgid "带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用" +msgstr "" + +#: maix.html:251 +msgid "硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配" +msgstr "" + +#: maix.html:258 +msgid "MaixPy3" +msgstr "" + +#: maix.html:272 +msgid "3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC" +msgstr "" + +#: maix.html:289 +msgid "10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持" +msgstr "" + +#: maix.html:297 +msgid "https://item.taobao.com/item.htm?id=744014549573" +msgstr "" + +#: maixsense.html:4 +msgid "MaixSense 传感器模组系列" +msgstr "" + +#: maixsense.html:37 +msgid "深度传感器模组" +msgstr "" + +#: maixsense.html:53 +msgid "深度摄像头模组" +msgstr "" + +#: others.html:24 +msgid "其它未列出的产品请进入" +msgstr "" + +#: others.html:24 +msgid "产品文档" +msgstr "" + +#: others.html:24 +msgid "在左侧目录查找" +msgstr "" + +#: others.html:35 +msgid "逻辑分析仪+CKLink+DAPLink+USB转串口 多合一指尖工具" +msgstr "" + +#: tang.html:5 tang.html:329 +msgid "Tang FPGA 系列" +msgstr "" + +#: tang.html:25 tang.html:349 +msgid "Tang 系列板卡参数对比" +msgstr "" + +#: tang.html:46 tang.html:370 +msgid "芯片" +msgstr "" + +#: tang.html:58 tang.html:382 +msgid "查找表(LUT)" +msgstr "" + +#: tang.html:70 tang.html:394 +msgid "寄存器(FF)" +msgstr "" + +#: tang.html:107 tang.html:108 tang.html:109 tang.html:111 tang.html:131 +#: tang.html:132 tang.html:133 tang.html:134 tang.html:135 tang.html:136 +#: tang.html:137 tang.html:138 tang.html:139 tang.html:431 tang.html:432 +#: tang.html:433 tang.html:435 tang.html:455 tang.html:456 tang.html:457 +#: tang.html:458 tang.html:459 tang.html:460 tang.html:461 tang.html:462 +#: tang.html:463 +msgid "板载_fpga" +msgstr "" + +#: tang.html:112 tang.html:113 tang.html:114 tang.html:115 tang.html:138 +#: tang.html:139 tang.html:436 tang.html:437 tang.html:438 tang.html:439 +#: tang.html:462 tang.html:463 +msgid "内含" +msgstr "" + +#: tang.html:118 tang.html:442 +msgid "内嵌处理器" +msgstr "" + +#: tang.html:142 tang.html:466 +msgid "其他特点" +msgstr "" + +#: tang.html:143 tang.html:467 +msgid "内含 12.5G Transceivers" +msgstr "" + +#: tang.html:143 tang.html:144 tang.html:467 tang.html:468 +msgid "支持 PCIe 3.0 通信" +msgstr "" + +#: tang.html:143 tang.html:467 +msgid "支持 SFP+ 数据传输" +msgstr "" + +#: tang.html:144 tang.html:468 +msgid "内含 8.0G Transceivers" +msgstr "" + +#: tang.html:144 tang.html:145 tang.html:468 tang.html:469 +msgid "支持 USB3 数据传输" +msgstr "" + +#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 +msgid "内含 6.6G Transceivers" +msgstr "" + +#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 +msgid "内含 2.5G MIPI C/DPHY RX/TX" +msgstr "" + +#: tang.html:145 tang.html:148 tang.html:469 tang.html:472 +msgid "支持 PCIe 2.0 通信" +msgstr "" + +#: tang.html:146 tang.html:470 +msgid "内含 2.5G MIPI DPHY RX/TX" +msgstr "" + +#: tang.html:146 tang.html:470 +msgid "支持 PMOD, 64MByte SDRAM模块" +msgstr "" + +#: tang.html:146 tang.html:470 +msgid "支持 USB手柄" +msgstr "" + +#: tang.html:147 tang.html:471 +msgid "丰富外设,HDMI/以太网/USB" +msgstr "" + +#: tang.html:148 tang.html:472 +msgid "M.2 外形兼容" +msgstr "" + +#: tang.html:149 tang.html:473 +msgid "for RetroGame ~" +msgstr "" + +#: tang.html:150 tang.html:474 +msgid "for RISCV softcore" +msgstr "" + +#: tang.html:151 tang.html:475 +msgid "GOAI~" +msgstr "" + +#: tang.html:165 +msgid "预售中,敬请期待。。。" +msgstr "" + +#: tang.html:169 +msgid "/hardware/zh/tang/tang-console/mega-console.html" +msgstr "" + +#: tang.html:173 +msgid "https://sipeed.com/tangconsole" +msgstr "" + +#: tang.html:181 tang.html:489 +msgid "小体积的中等量 FPGA 开发板" +msgstr "" + +#: tang.html:185 tang.html:493 +msgid "/hardware/zh/tang/tang-mega-60k/mega-60k.html" +msgstr "" + +#: tang.html:189 tang.html:205 tang.html:497 tang.html:513 +msgid "https://item.taobao.com/item.htm?id=808924746746" +msgstr "" + +#: tang.html:197 tang.html:505 +msgid "小体积的大容量 FPGA 开发板" +msgstr "" + +#: tang.html:201 tang.html:509 +msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" +msgstr "" + +#: tang.html:213 tang.html:521 +msgid "可以高速通信的大容量 FPGA 开发板" +msgstr "" + +#: tang.html:217 tang.html:525 +msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" +msgstr "" + +#: tang.html:221 tang.html:529 +msgid "https://item.taobao.com/item.htm?id=740536508140" +msgstr "" + +#: tang.html:229 tang.html:537 +msgid "自由拓展的 FPGA 开发板" +msgstr "" + +#: tang.html:233 tang.html:541 +msgid "/hardware/zh/tang/tang-primer-25k/primer-25k.html" +msgstr "" + +#: tang.html:237 tang.html:545 +msgid "https://item.taobao.com/item.htm?id=746293292946" +msgstr "" + +#: tang.html:245 tang.html:553 +msgid "自带多种外设接口的 FPGA 开发板" +msgstr "" + +#: tang.html:249 tang.html:557 +msgid "/hardware/zh/tang/tang-primer-20k/primer-20k.html" +msgstr "" + +#: tang.html:253 tang.html:561 +msgid "https://item.taobao.com/item.htm?id=680099020807" +msgstr "" + +#: tang.html:261 tang.html:569 +msgid "适用于模拟复古游戏机的 FPGA 开发板" +msgstr "" + +#: tang.html:265 tang.html:573 +msgid "/hardware/zh/tang/tang-nano-20k/nano-20k.html" +msgstr "" + +#: tang.html:269 tang.html:577 +msgid "https://item.taobao.com/item.htm?id=717932028073" +msgstr "" + +#: tang.html:277 tang.html:585 +msgid "适合 RiscV 软核验证的 FPGA 开发板" +msgstr "" + +#: tang.html:281 tang.html:589 +msgid "/hardware/zh/tang/Tang-Nano-9K/Nano-9K.html" +msgstr "" + +#: tang.html:285 tang.html:593 +msgid "https://item.taobao.com/item.htm?id=666055424174" +msgstr "" + +#: tang.html:293 tang.html:601 +msgid "芯片内部含有 MCU 的 FPGA 开发板" +msgstr "" + +#: tang.html:297 tang.html:605 +msgid "/hardware/zh/tang/Tang-Nano-4K/Nano-4K.html" +msgstr "" + +#: tang.html:301 tang.html:609 +msgid "https://item.taobao.com/item.htm?id=661994055100" +msgstr "" + +#: tang.html:309 tang.html:617 +msgid "开发中,敬请期待。。。" +msgstr "" + +#: tang.html:313 tang.html:621 +msgid "/hardware/zh/tang/tang-primer-15k/primer-15k.html" +msgstr "" + +#~ msgid "/static/home/licheepi4a_post.jpg" +#~ msgstr "" + +#~ msgid "分享广场" +#~ msgstr "" + +#~ msgid "MaixHub 官网" +#~ msgstr "" + +#~ msgid "产品动态" +#~ msgstr "" + +#~ msgid "Maix AI 视觉" +#~ msgstr "" + +#~ msgid "MaixSense 传感器" +#~ msgstr "" + +#~ msgid "其它" +#~ msgstr "" + +#~ msgid "/static/home/licheepi4a_2.jpg" +#~ msgstr "" + +#~ msgid "预定" +#~ msgstr "" + +#~ msgid "带有高速通信接口的大容量 FPGA 开发板" +#~ msgstr "" + +#~ msgid "尽情期待" +#~ msgstr "" + +#~ msgid "Tang 系列主流板卡参数对比" +#~ msgstr "" + +#~ msgid "了解更多" +#~ msgstr "" + +#~ msgid "Linux SBC 系列" +#~ msgstr "" + +#~ msgid "lpi3h" +#~ msgstr "" + +#~ msgid "Linux ARM SBC 系列" +#~ msgstr "" + +#~ msgid "Lichee SBC 系列产品参数对比" +#~ msgstr "" + +#~ msgid "/static/home/ax650_presell.jpg" +#~ msgstr "" + +#~ msgid "/static/home/maixiii_axpi.jpg" +#~ msgstr "" + +#~ msgid "/licheerv-nano" +#~ msgstr "" + +#~ msgid "产品" +#~ msgstr "" + +#~ msgid "Maix AI 视觉系列" +#~ msgstr "" + +#~ msgid "全新 Maix 生态" +#~ msgstr "" + +#~ msgid "经典 Maix 系列" +#~ msgstr "" + +#~ msgid "全新 Maix AI 视觉系列" +#~ msgstr "" + +#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸553x368高清屏,玩美支持全新 Maix 生态所有软件" +#~ msgstr "" + +#~ msgid "和 MaixPy 同款 API,稳定高效易上手" +#~ msgstr "" + +#~ msgid "C++ SDK, 和 MaixPy 同款 API,稳定高效易上手" +#~ msgstr "" + +#~ msgid "Python 编程、代码运行、图像实时预览、应用打包等" +#~ msgstr "" + +#~ msgid "下载" +#~ msgstr "" + +#~ msgid "代码编辑运行、图像预览、在线 AI 模型训练" +#~ msgstr "" + +#~ msgid "代码编辑运行、图像实时预览
在线一键 AI 模型训练" +#~ msgstr "" + +#~ msgid "经典 Maix 视觉系列" +#~ msgstr "" + +#~ msgid "软件和云平台" +#~ msgstr "" + +#~ msgid "工具和云平台" +#~ msgstr "" + +#~ msgid "Python 语法,快速落地 AI 视觉、听觉应用" +#~ msgstr "" + +#~ msgid "文档丰富度" +#~ msgstr "" + +#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸553x368高清电容触摸屏,玩美支持全新 Maix 生态所有软件" +#~ msgstr "" + +#~ msgid "敬请期待。。。" +#~ msgstr "" + +#~ msgid "/static/home/banner_maixcam.jpg" +#~ msgstr "" + +#~ msgid "/maixcam" +#~ msgstr "" + +#~ msgid "/maixpy" +#~ msgstr "" + +#~ msgid "https://item.taobao.com/item.htm?id=784724795837" +#~ msgstr "" + +#~ msgid "/static/home/LicheeRV-Nano.jpg" +#~ msgstr "" + +#~ msgid "/static/home/LonganPi3H.jpg" +#~ msgstr "" + +#~ msgid "/static/home/console-4A.jpg" +#~ msgstr "" + +#~ msgid "支持 PCIE 通信" +#~ msgstr "" + +#~ msgid "Tang FPGA 系列" +#~ msgstr "" + +#~ msgid "Tang 系列板卡参数对比" +#~ msgstr "" + +#~ msgid "芯片" +#~ msgstr "" + +#~ msgid "查找表(LUT)" +#~ msgstr "" + +#~ msgid "寄存器(FF)" +#~ msgstr "" + +#~ msgid "板载_fpga" +#~ msgstr "" + +#~ msgid "内含" +#~ msgstr "" + +#~ msgid "内嵌处理器" +#~ msgstr "" + +#~ msgid "其他特点" +#~ msgstr "" + +#~ msgid "内含 6.6G Transceivers" +#~ msgstr "" + +#~ msgid "支持 PCIe 2.0 通信" +#~ msgstr "" + +#~ msgid "支持 USB3 数据传输" +#~ msgstr "" + +#~ msgid "内含 12.5G Transceivers" +#~ msgstr "" + +#~ msgid "支持 PCIe 3.0 通信" +#~ msgstr "" + +#~ msgid "支持 SFP+ 数据传输" +#~ msgstr "" + +#~ msgid "内含 2.5G MIPI C/DPHY RX/TX" +#~ msgstr "" + +#~ msgid "内含 2.5G MIPI DPHY RX/TX" +#~ msgstr "" + +#~ msgid "支持 PMOD, 64MByte SDRAM模块" +#~ msgstr "" + +#~ msgid "支持 USB手柄" +#~ msgstr "" + +#~ msgid "丰富外设,HDMI/以太网/USB" +#~ msgstr "" + +#~ msgid "M.2 外形兼容" +#~ msgstr "" + +#~ msgid "for RetroGame ~" +#~ msgstr "" + +#~ msgid "for RISCV softcore" +#~ msgstr "" + +#~ msgid "GOAI~" +#~ msgstr "" + +#~ msgid "小体积的大容量 FPGA 开发板" +#~ msgstr "" + +#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k.html" +#~ msgstr "" + +#~ msgid "可以高速通信的大容量 FPGA 开发板" +#~ msgstr "" + +#~ msgid "自由拓展的 FPGA 开发板" +#~ msgstr "" + +#~ msgid "自带多种外设接口的 FPGA 开发板" +#~ msgstr "" + +#~ msgid "适用于模拟复古游戏机的 FPGA 开发板" +#~ msgstr "" + +#~ msgid "适合 RiscV 软核验证的 FPGA 开发板" +#~ msgstr "" + +#~ msgid "芯片内部含有 MCU 的 FPGA 开发板" +#~ msgstr "" + +#~ msgid "开发中,敬请期待。。。" +#~ msgstr "" + +#~ msgid "/hardware/zh/tang/tang-mega-138k/mega-138k-pro.html" +#~ msgstr "" + +#~ msgid "https://item.taobao.com/item.htm?id=74053650814" +#~ msgstr "" + +#~ msgid "淘宝" +#~ msgstr "" + +#~ msgid "RISC-V 1GHz + 1Tops NPU, 4M高清摄像头,2.3寸552x368高清电容触摸屏,完美支持全新 Maix 生态所有软件" +#~ msgstr "" +