void cv::minEnclosingCircle( InputArray _points,
Point2f& _center,
float& _radius )
求散点的最小外包圆,看了一下opencv算法
先啰嗦一下,如何打印C(n,3)这个组合数呢?
void print_combinatorial_n_3(int size) {
for (auto i=0; i<size; ++i) {
for (auto j=i+1; j<size; ++j) {
for (auto k=j+1; k<size; ++k) {
std::cout<<i<<","<<j<<","<<k<<","<<std::endl;
}
}
}
}
为何要说这个呢,因为opencv 的cv::minEnclosingCircle就是穷举组合数,只不过排除了明显错误的值
上伪代码
void minEnclosingCircle(...) {
Circle c(getPoint(0),getPoint(1));//先随机取两个点构造一个圆
for (auto i=0; i<size; ++i) {//穷举组合数,排除明