你如何获得 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";
}
}
只要程序启动时有一些对象被跟踪即可。一旦相机视图中没有任何内容,应用程序就会崩溃。
我反复查阅了各种 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";
}
}
只要程序启动时有一些对象被跟踪即可。一旦相机视图中没有任何内容,应用程序就会崩溃。