【发布时间】:2017-11-23 14:36:02
【问题描述】:
我正在使用cv::minEnclosingCircle(...) 来获得与我的轮廓完全一致的最小圆,但我得到的圆要大一点。
换句话说,我试图得到这样的东西:
但我得到了这个(圆圈):
注意圆圈比要包围的项目大一点。
我需要将我的对象围成一个圆圈,而不是一个椭圆。
提前谢谢你。
这是我的代码:
cv::vector<cv::Point> allPixels;
int columnas = img.cols, filas = img.rows;
cv::Point pt;
for(int col = 0; col < columnas; col++){
for(int row = 0; row < filas; row++){
int val = img.at<uchar>(row,col);
if(val == 255){
pt.x = col;
pt.y = row;
allPixels.push_back(pt);
}
}
}
cv::Mat dispImage = img.clone();
cv::Point2f center;
float radius;
cv::minEnclosingCircle(allPixels,center,radius);
cv::circle(dispImage,center,radius,cv::Scalar(128),1);
cv::circle(dispImage,center,1,cv::Scalar(128),1);
cv::imwrite("Enclosing_Result.png",dispImage);
使用 'img' 一个 cv::Mat,大小为 (760,760),格式为 CV_8UC1。最终结果(“Enclosure_Result.png”)是下一个:
我的目标如下(绘制):
【问题讨论】:
-
你应该展示你的代码。
-
有代码,谢谢