利用openmv,画出三角形和三角形的外接圆,给出代码
时间: 2023-08-04 07:12:21 浏览: 100
以下是利用OpenMV画出三角形和三角形的外接圆的代码:
```python
import sensor, image, math
# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
# 画出三角形和三角形的外接圆
def draw_triangle(corners):
# 画出三角形的边
for i in range(len(corners)):
image.draw_line(corners[i][0], corners[i][1], corners[(i+1)%len(corners)][0], corners[(i+1)%len(corners)][1], color=(255, 0, 0))
# 计算三角形的外接圆半径和圆心坐标
a = math.sqrt((corners[1][0]-corners[0][0])**2 + (corners[1][1]-corners[0][1])**2)
b = math.sqrt((corners[2][0]-corners[1][0])**2 + (corners[2][1]-corners[1][1])**2)
c = math.sqrt((corners[0][0]-corners[2][0])**2 + (corners[0][1]-corners[2][1])**2)
s = (a + b + c) / 2
r = (a * b * c) / (4 * math.sqrt(s * (s-a) * (s-b) * (s-c)))
x = ((corners[0][0]**2 + corners[0][1]**2 - corners[1][0]**2 - corners[1][1]**2) * (corners[0][1]-corners[2][1]) - (corners[0][0]**2 + corners[0][1]**2 - corners[2][0]**2 - corners[2][1]**2) * (corners[0][1]-corners[1][1])) / (2 * ((corners[0][0]-corners[1][0]) * (corners[0][1]-corners[2][1]) - (corners[0][0]-corners[2][0]) * (corners[0][1]-corners[1][1])))
y = ((corners[0][0]**2 + corners[0][1]**2 - corners[1][0]**2 - corners[1][1]**2) * (corners[0][0]-corners[2][0]) - (corners[0][0]**2 + corners[0][1]**2 - corners[2][0]**2 - corners[2][1]**2) * (corners[0][0]-corners[1][0])) / (2 * ((corners[0][0]-corners[1][0]) * (corners[0][1]-corners[2][1]) - (corners[0][0]-corners[2][0]) * (corners[0][1]-corners[1][1])))
# 画出三角形的外接圆
image.draw_circle(int(x), int(y), int(r), color=(0, 255, 0))
while True:
# 获取图像
img = sensor.snapshot()
# 识别三角形
for c in img.find_triangles(threshold=10000):
draw_triangle(c.corners())
```
注:该代码需要OpenMV的支持,可以通过OpenMV IDE直接运行。同时需要注意将OpenMV与计算机连接,并且使用正确的摄像头模块。
阅读全文