![机器视觉与人工智能应用开发技术](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=1739252473-XKassDZIl3tcgDX2VuganymmDxdKnBcr-0-fc22adfce868e46a6d59dfba35cc489c)
前端应用JS(js\index.js)的处理示例如下:
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_49_1.jpg?sign=1739252473-Yyw3LpHQ0IFd5Mdv633FRo1JRznyjfXV-0-74edf2c0f960da2052c06bcbe093df08)
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=1739252473-S0G8tskqhg9GyPcXggfGhdbIjYNlJGoO-0-c14cf534785d011527349b6b5d5d4ccd)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_51_1.jpg?sign=1739252473-DR1lFlWPV8yXJBXKKlKXAs2yRGTYjZOU-0-d234df41d152271c4f41ce94ce260bc3)
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=1739252473-JrILtjXcJo6s3DGtxZXRai6mq6hkRUKC-0-4eda9701ccca9978882e79319b7591fa)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_52_1.jpg?sign=1739252473-439rhvPilN8yLSvVGCpTqbnFtYYIqGXc-0-0e591b523074e07c65960a61b54156da)
3)绘制多边形
通过OpenCV在画布上绘制多边形的算法文件如下(algorithm\image_polygon\image_polygon.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_52_2.jpg?sign=1739252473-4B01k2em4tx3HFN1xWNyS3CuV3AbhKEq-0-6fe75a3e1cd536f07d31582fda91b8f1)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_53_1.jpg?sign=1739252473-PAkbe33IgI4kKbR2568gexYCFW4DeyqS-0-9470e1bbf0bc641984bb2d25c7a7eaf4)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_54_1.jpg?sign=1739252473-jP04o7Wzmb1JfXlgiTkvXCfsR3IsAQHP-0-f0961048469bc3bcb4a8296bb93c74d9)
4)显示文字
通过OpenCV在画布上显示文字的算法文件如下(algorithm\image_display_text\image_display_text.py):
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_54_2.jpg?sign=1739252473-B7ciX5MgeQ23SnLnTj1sqUtuJwHAU1JC-0-0f63520d0926343b169a891cb509fe3b)
![](https://epubservercos.yuewen.com/3B3414/29436032103210506/epubprivate/OEBPS/Images/47396_55_1.jpg?sign=1739252473-yghjxRIAFfefA7COjywK7nPjnGqx5YZN-0-8290c9d4f622daeaa9aaada0d672a9a2)