簡體   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