假设我有一个检测到的圆圈,其坐标为(center.x和center.y),使用此圆圈函数检测到:
GaussianBlur( dis, dis, Size(3, 3), 2, 2 );
vector<Vec3f> circles;
HoughCircles( dis, circles, CV_HOUGH_GRADIENT, 1, dis.rows/8, 200, 100);
for( size_t i = 0; i < circles.size(); i++ ){
Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
cout << "center" << center.x << ", " << center.y << endl;
// coordinates of center points
V.push_back(std::make_pair(center.x,center.y));
int radius = cvRound(circles[i][2]);
// circle center
circle( dis, center, 3, 1, -1, 8, 0 );
// circle outline
circle( dis, center, radius, 1, 3, 8, 0 );
}
如何在这个圆周围画一个矩形,圆圈的中心位于矩形的中间,中心和每边之间的距离是“半径+ x”?
我在图像处理方面是全新的,对不起这个简单的问题。 我将不胜感激任何帮助......
...............编辑代码..................
cv::rectangle( diatence, cvPoint((center.x)-(radius+10),(center.y)-(radius+10)), cvPoint((center.x)+(radius+10),(center.y)+(radius+10)), 1, 1, 8 );
答案 0 :(得分:1)
假设中心位于x,y,您需要绘制一个具有以下规格的矩形:
top left corner : x-(radius+a),y-(radius+a)
bottom right corner : x+(radius+a),y+(radius+a)
其中a是您要添加到半径的任意值。
更一般地说:
给定中心点x,y和矩形的已知大小LxH,您可以通过将左上角指定为x-(L/2),y-(H/2)
并将右下角指定为x+(L/2),y+(H/2)
来绘制矩形