你如何获得 cv::keypoint 的 xy 坐标和大小?我不断收到段错误

How do you get x&y coordinates and size of a cv::keypoint? I keep getting a segfault

我反复查阅了各种 cv::KeyPoint 资源,并遵循了许多提示,但到目前为止都无济于事。 cv::KeyPoint Class Reference

// --- BLOB DETECTION --- //
    // Storage for blobs
    vector<KeyPoint> keypoints;
    // Set up detector with params
    Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(params);  
    // Detect blobs
    detector->detect( camThresh, keypoints);
    // Draw keypoints
    drawKeypoints( camRaw, keypoints, camBlobs, Scalar(0,0,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS );

我很高兴我能做到这一点,但我真的需要获得这些关键点的 XY 和大小值。最近的 suggestion 我几乎开始工作(见下文)抛出一个段错误。

float x = keypoints[i].pt.x;

Point2f p = keypoints[i].pt;

让我得到同样的结果。建议中有人提到了同样的问题。有人有任何提示吗?谢谢!

我找到程序崩溃的原因了。 我根本没有检查是否有任何活动的关键点。 因此,如果程序在相机视图中没有任何内容的情况下启动,它就会崩溃。 使用是完全有效的,例如:

        if(keypoints.size()>0) {
        if((char)keyboard == 'c') {
            float x0 = keypoints[0].pt.x;
            float y0 = keypoints[0].pt.y;
            cout << "Point0 Xpos = " << x0 << "\n";
            cout << "Point0 Ypos = " << y0 << "\n";
        }
    }

只要程序启动时有一些对象被跟踪即可。一旦相机视图中没有任何内容,应用程序就会崩溃。