0

OpenCV 2.4.6 と Visual C++ 2010 を使用しています。BoundingRect の輪郭の重心を見つけようとしています。以下は私のコードです。ここでは、適切な位置に長方形を取得しています。しかし、私が各 Rectangle の重心に向けようとしている円は、左上に向かってシフトしています。長方形の重心でこれらの円の点を取得するにはどうすればよいですか?

    int x = cvFindContours(imgThresh,storage,&contours,sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0));
    //printf("%d\n",contours->total);
    for (; contours != 0; contours = contours->h_next)
    {
        rect = cvBoundingRect(contours); //extract bounding box for current contour
        //drawing rectangle
        printf("%d   %d  %d  %d\n",rect.x, rect.y,rect.width,rect.height);
        if(rect.width*rect.height<1400 && (rect.width*rect.height)>700)
        {
            cvRectangle(mCVImageColor,cvPoint(rect.x, rect.y),cvPoint(rect.x+rect.width, rect.y+rect.height),cvScalar(0, 0, 255),2, 8, 0); 
            CvPoint centroid[1];
            centroid[0].x = ((rect.x+rect.width)/2);
            centroid[0].y = ((rect.y+rect.height)/2);
            cvCircle( mCVImageColor, centroid[0], 5, CV_RGB(255, 0, 0),-1,0,0);
        }
    }

ここに画像の説明を入力

4

1 に答える 1