OpenCV drawCircle并在圆线上绘制矩形

时间:2019-01-05 19:45:36

标签: c++ opencv

我想绘制半径不同的圆,然后在此圆上绘制矩形。 它应该看起来像这样:

enter image description here]

我已经尝试过用圆的公式

router.get("/", function (req, res, next)
{
    User.find()
    .select('fname uname')
    .exec()
    .then(docs => {
        return res.send(setting.status("User details retrieval successfully", true, docs))
    .catch(err => {
        return res.send(setting.status("Error in retrieving user details",false, err))
    });
    });
});

})

但是这仅是圆圈的下部。对于上半部分,我需要此公式,但是在y_Circle = Center_Circle.y + sqrt(pow(Radius, 2) - pow(x_Circle - Center_Circle.x, 2)); 后带有“-”。 问题是,我没有在上图中的位置获得矩形。看起来像这样:enter image description here 在此图像中,我使用上述公式将矩形绘制在一个圆上。为了更好地理解,我用手画了两个圆圈来显示问题。 您会看到,矩形之间没有空间,而下部之间则没有空间。还有另一种可能性可以更轻松地做到这一点?可能是这样的:使用openCV绘制一个圆,访问该圆线的坐标并绘制该圆线的矩形。但是我不知道如何获取圆的坐标。

这是我的代码段:

Center_Circly.y

1 个答案:

答案 0 :(得分:1)

Boxes

尝试使用以下脚本获得以下结果:

import cv2, numpy as np, math
# Parameters for the window
hw = 789
# Parameters for the circle
circle_center = hw/2, hw/2
radius = hw/2.25
circle_thickness = 2
circle_color = (255,0,255)
# Parameters for the boxes
num_boxes = 50
box_size = 30
box_color = (0,255,0)
box_thickness = 2
# Create background image
bg = np.zeros((hw, hw, 3), np.uint8)
# Draw circle
cv2.circle(bg, tuple(np.array(circle_center, int)), int(radius), circle_color, circle_thickness)
# Time to draw some boxes!
for index in range(num_boxes):
    # Compute the angle around the circle
    angle = 2 * math.pi * index / num_boxes
    # Compute the center of the box
    x, y = circle_center[0] + math.sin(angle)*radius, circle_center[1] + math.cos(angle)*radius
    # Compute the corners of the
    pt1 = x-box_size/2, y-box_size/2
    pt2 = x+box_size/2, y+box_size/2
    # Draw Box
    cv2.rectangle(bg, tuple(np.array(pt1, int)),tuple(np.array(pt2, int)), box_color, box_thickness)

cv2.imshow('img', bg)
cv2.waitKey(0)
cv2.destroyAllWindows()