使用opencv绘图函数,绘制五星图:1)白底,黄线,不填充 2)浅灰底,实心红色
时间: 2024-10-16 19:06:14 浏览: 43
OpenCV 图像轮廓查找与绘制全攻略:从函数使用到实战应用详解
在OpenCV中,绘制五星图通常需要结合基本的图形绘制功能。这里是一个简化的示例,展示如何按照你的需求绘制五星图案:
1. 白底,黄线,不填充五星图:
```python
import cv2
import numpy as np
# 创建一个白色背景的图像
img = np.zeros((500, 500, 3), dtype=np.uint8)
img[:] = (255, 255, 255)
# 黄色线条绘制五角星轮廓,cv2.line不需要填充颜色
line_color = (0, 255, 255) # 黄色 BGR值
start_point = (25, 25)
end_point = (475, 475)
for i in range(5):
angle = (i * 180 / 5) + 90
x = int(start_point[0] + end_point[0] / 2 - start_point[0] * np.cos(np.radians(angle)))
y = int(start_point[1] + end_point[1] / 2 - start_point[1] * np.sin(np.radians(angle)))
cv2.line(img, start_point, (x, y), line_color, thickness=2, lineType=cv2.LINE_AA)
cv2.imshow("White Background with Yellow Outline", img)
```
2. 浅灰色底,实心红色五星图:
```python
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将白色图片转为浅灰色
red_color = (0, 0, 255) # 红色 BGR值
# 由于你提到不填充,我们可以先创建一个红色掩码,然后将掩码区域内的像素设置为浅灰色
mask = np.ones(img.shape[:2], dtype=np.uint8) * red_color
cv2.fillConvexPoly(mask, np.array([(25, 25), (475, 25), (475, 475), (25, 475)], dtype=np.int32), color=(0, 0, 0)) # 绘制五边形
gray_img[mask != red_color] = (128, 128, 128) # 设置红色区域为浅灰色
cv2.imshow("Light Gray Background with Solid Red Star", gray_img)
cv2.waitKey(0)
```
阅读全文