![机器视觉与人工智能应用开发技术](https://wfqqreader-1252317822.image.myqcloud.com/cover/827/50064827/b_50064827.jpg)
2.2.2 开发设计与实践
2.2.2.1 架构设计
本项目基于AiCam平台的开发框架(见图1.3)进行开发,开发流程如下:
(1)在aicam工程包的配置文件中添加摄像头(config\app.json),详细代码请参考2.1.2.1节。
(2)在aicam工程包中添加以下算法文件:
➲绘制直线与矩形:algorithm\image_lines_and_rectangles\image_lines_and_rectangles.py。
➲绘制圆和椭圆:algorithm\image_circle_and_ellipse\image_circle_and_ellipse.py。
➲绘制多边形:algorithm\image_polygon\image_polygon.py。
➲显示文字:algorithm\image_display_text\image_display_text.py。
(3)在aicam工程包中添加项目的前端应用static\image_marking。
(4)前端应用采用RESTFul获取处理后的视频流,返回base64编码的图像和结果数据。访问URL地址的格式如下(IP地址为边缘计算网关的地址):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_48_4.jpg?sign=1739697827-U2TzaX9tUEQGIp0Kj5AMt1KvdGEXAi51-0-0023631e0f791f38375fa08b94f81596)
前端应用JS(js\index.js)的处理示例如下:
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_49_1.jpg?sign=1739697827-sikCE0Dqbl3jf1BYqYktxo44CWKT8B0F-0-6378b019e718a00003222d24e61e044d)
2.2.2.2 功能与核心代码设计
1)绘制直线与矩形
通过OpenCV在画布上绘制直线与矩形的算法文件如下(algorithm\image_lines_and_rectangles\image_lines_and_rectangles.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_50_1.jpg?sign=1739697827-6OAXZPVxS5tpUMliWPn4a32dhNlNb3D1-0-fcc8e94cbe903c61468ff9774ab88dec)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_51_1.jpg?sign=1739697827-zCK7OWcGFMuVmLuJ93rtU85pbJ0qZuy7-0-f611eb85d910d50c5c4842ec49ba45ba)
2)绘制圆和椭圆
OpenCV提供了大量的图形绘制函数,可以满足多种场景的图形绘制需求,用户可以通过OpenCV在画布上绘制圆和椭圆,算法文件如下(algorithm\image_circle_and_ellipse\image_circle_and_ellipse.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_51_2.jpg?sign=1739697827-ZAKyX6g1eMheXdEAiMXAA7eWdxxWleMu-0-0891f449f2c95d243edce4ebcb5a6096)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_52_1.jpg?sign=1739697827-2YLOMm0gp8CRaFBlWhMwBa4LwygQ7Jie-0-34bcaf0699f32620bca3e419f84e537c)
3)绘制多边形
通过OpenCV在画布上绘制多边形的算法文件如下(algorithm\image_polygon\image_polygon.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_52_2.jpg?sign=1739697827-3UW0kdl5TaRlqsuxDD7TQLOu7ISMjEnF-0-c049f8687d906ff199dc5421178a37e0)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_53_1.jpg?sign=1739697827-tY7QbNLL5UPAu8knTTVik0OOIR0jYp08-0-983198f847f4f3831b1009f4acee7fb5)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_54_1.jpg?sign=1739697827-Zgr1R1dOZ0ZmRVzh1bswp5hnFdVQqiZK-0-df769a9cef8b4d396b535a1b718fd600)
4)显示文字
通过OpenCV在画布上显示文字的算法文件如下(algorithm\image_display_text\image_display_text.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_54_2.jpg?sign=1739697827-u1SWJg8RB9gTUoTyvaeLpqjpd7jaXmd2-0-c1642af9e6d8eef43fac2391b24661dc)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_55_1.jpg?sign=1739697827-frC647ELHuZmeQVoiyjv4MNjTHVibLkN-0-555a99b7447f305f73a0038a89498335)