![机器视觉与人工智能应用开发技术](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=1739682259-HNJF3wHOXm0AdejV2PKpV0uw4NcF83p9-0-adbd2a7e43c7acfbcefe00a05365759a)
前端应用JS(js\index.js)的处理示例如下:
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_49_1.jpg?sign=1739682259-DN57eewN9qrwlgkX8c7sg6VYsvnayJgF-0-787bbf8bcf1f8a341c503311b943a49a)
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=1739682259-nuyTBC6w5QoEgQYi2JkdQb6IqoBZfBld-0-5559094983490d89f525f3a04df0fe66)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_51_1.jpg?sign=1739682259-HD7lBYFm7XyVdtE6P7Bjp9pew227FHOA-0-295c4e9c7c6fa05cfe78b5aa1d9ea774)
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=1739682259-SSoktSNBtjLanSpal0zEVXSO0O0im9nE-0-c1f0eeb0073ef9db5f7482c2696b5ce3)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_52_1.jpg?sign=1739682259-RS5LWizo6n8CkGCO1MQ5azOfFCsyQ7H5-0-85ec7a478b7fe049139a11c698ca71a7)
3)绘制多边形
通过OpenCV在画布上绘制多边形的算法文件如下(algorithm\image_polygon\image_polygon.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_52_2.jpg?sign=1739682259-xOXHaOnSLW4h9zjAlUYWLkey0x5pz6nw-0-b651df5975ace942a1342ac0aa6c1a50)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_53_1.jpg?sign=1739682259-uajlA2FHB8K6QmMzzdlrc0MJspSs3FC6-0-f06df816c7581843c7fd174a71590494)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_54_1.jpg?sign=1739682259-d6R40fXtr79NJNxDhet1jQBTuB6ChijA-0-23797e342489ea717209916f3f0f391d)
4)显示文字
通过OpenCV在画布上显示文字的算法文件如下(algorithm\image_display_text\image_display_text.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_54_2.jpg?sign=1739682259-mhoOUJIbUdX9MPvQJJEjzJ2Sc0jMfXcg-0-5eeb87e44ffc49bbfb902f5f2428a294)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_55_1.jpg?sign=1739682259-xxpMpagug0EhjbK7PwMMOF6NJs4mDoPf-0-be4d6afd0a14a6d388f75f4125e55eea)