21xrx.com
2024-09-19 09:03:11 Thursday
登录
文章检索 我的文章 写文章
OpenCV绘制五星图:浅灰底,实心红色
2024-05-17 17:59:14 深夜i     --     --
OpenCV 五星图 绘制 浅灰底 实心红色

OpenCV是一个强大的开源计算机视觉库,可以在图像和视频处理中提供丰富的功能。本文将介绍如何使用OpenCV绘制一个五星图,使用浅灰底和实心红色。

首先,我们需要导入OpenCV库。在Python中,可以使用以下代码导入库:


import cv2

import numpy as np

接下来,我们创建一个空白的图像,并设置其尺寸为400x400像素,背景颜色为浅灰色。我们可以使用以下代码实现:


image = np.zeros((400, 400, 3), dtype=np.uint8)

image.fill(220)

然后,我们需要计算五个顶点的坐标。五星图的每个顶点与其相邻的两个顶点之间是72度。我们可以通过以下代码计算出五个顶点的坐标:


center_x, center_y = 200, 200 # 五角星中心点的坐标

radius = 100 # 五角星的外接圆半径

vertices = []

for i in range(5):

  angle = np.radians(i * 72 - 90) # 将角度转换为弧度,并从负y轴开始

  x = center_x + int(radius * np.cos(angle))

  y = center_y + int(radius * np.sin(angle))

  vertices.append((x, y))

接着,我们可以使用OpenCV的`polylines`函数绘制五角星的轮廓。我们需要将顶点坐标传递给函数,并设置绘制的线条为红色实线,线条宽度为3像素。以下是实现的代码:


cv2.polylines(image, [np.array(vertices)], True, (0, 0, 255), 3)

最后,我们可以使用OpenCV的`fillPoly`函数填充五星图的内部。我们需要将顶点坐标传递给函数,并设置填充的颜色为红色。以下是实现的代码:


cv2.fillPoly(image, [np.array(vertices)], (0, 0, 255))

最后,我们使用OpenCV的`imshow`函数显示绘制好的五星图。以下是完整的代码:


import cv2

import numpy as np

image = np.zeros((400, 400, 3), dtype=np.uint8)

image.fill(220)

center_x, center_y = 200, 200

radius = 100

vertices = []

for i in range(5):

  angle = np.radians(i * 72 - 90)

  x = center_x + int(radius * np.cos(angle))

  y = center_y + int(radius * np.sin(angle))

  vertices.append((x, y))

cv2.polylines(image, [np.array(vertices)], True, (0, 0, 255), 3)

cv2.fillPoly(image, [np.array(vertices)], (0, 0, 255))

cv2.imshow("Five Star", image)

cv2.waitKey(0)

cv2.destroyAllWindows()

当我们运行完整的代码时,将会显示一个带有浅灰底和实心红色的五星图。这是使用OpenCV库绘制五星图的一种简单方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复