我正在尝试检测圆心。我尝试使用cvHoughCircle做到这一点。但是我似乎无法使它正常工作。
唯一可以改变的是圆的大小。
我尝试通过执行以下操作来检测圆圈:
circle = cvHoughCircles(imgThreshold, storage, CV_HOUGH_GRADIENT, 1,
(double)imgThreshold.height()/20, 200, 20, 0, 0);
imgThreshold是您可以在此处看到的黑白图像。图像的分辨率实际上是1280 * 1024。
谁能告诉我我在做什么错。
最佳答案
除了使用cvHoughCircle,还可以通过一点数学来解决此问题:
CvMoments moments = new CvMoments();
cvMoments(imgThreshold, moments, 1);
double moment10 = cvGetSpatialMoment(moments, 1, 0);
double moment01 = cvGetSpatialMoment(moments,0,1);
double area = cvGetCentralMoment(moments, 0, 0);
int posX = 0;
int posY = 0;
int lastX = posX;
int lastY = posY;
posX = (int) (moment10/area);
posY = (int) (moment01/area);
cvCircle(iplRgbImage, new CvPoint(posX,posY), 3, CvScalar.GREEN, -1, 8, 0);
来源= http://aishack.in/tutorials/tracking-colored-objects-in-opencv/