[英]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.