在opencv绘制圆角矩形
时间: 2024-10-11 08:13:30 浏览: 60
在OpenCV中,绘制带圆角的矩形通常通过`cv2.rectangle()`函数结合一些数学计算来实现。标准的矩形函数默认是没有圆角的,但是你可以通过先画四个带有部分圆角的小矩形,然后合并它们来模拟出圆角矩形的效果。以下是一个简单的步骤说明:
1. **创建四个小矩形**:
- 计算圆角半径:r = corner_radius * min(rect_width, rect_height) / 2。
- 确定每个小矩形的位置和尺寸:top-left (x1, y1), top-right (x2, y1), bottom-right (x2, y2), bottom-left (x1, y2),其中(x1,y1)为中心点,(x2,y2)是右下角。
2. **绘制小矩形**:
- 对于每个小矩形,使用`cv2.rectangle()`,传入对应的位置和大小,以及颜色和线型。
```python
import cv2
import numpy as np
# 假设你已经有了一个图像和矩形的坐标及尺寸信息
img = ... # 你的图像
rect = (x, y, width, height) # 矩形左上角坐标和宽度、高度
corner_radius = ... # 圆角半径
# 计算小矩形的尺寸
dx = dy = corner_radius * 2
tl_x, tl_y = x, y
tr_x, tr_y = x + width - dx, y
br_x, br_y = x + width, y + height - dy
bl_x, bl_y = x, y + height
# 绘制四个小矩形
cv2.rectangle(img, (tl_x, tl_y), (tr_x, tr_y), color, thickness=-1) # 不填色
cv2.rectangle(img, (tr_x, tr_y), (br_x, br_y), color, thickness=-1)
cv2.rectangle(img, (br_x, br_y), (bl_x, bl_y), color, thickness=-1)
cv2.rectangle(img, (tl_x, tl_y), (bl_x, bl_y), color, thickness=-1)
# 显示结果
cv2.imshow("Rounded Rectangle", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文