我正在尝试检测圆心。我尝试使用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/

10-07 13:26