繁体   English   中英

如何获得cv :: keypoint的x&y坐标和大小? 我不断遇到段错误

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

我已经遍历了各种cv :: KeyPoint资源,并且到目前为止,很多技巧都没有用。 cv :: KeyPoint类参考

// --- 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和大小值。 我几乎要工作的最接近的建议 (见下文)抛出了段错误。

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";
        }
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM