OpenCV 3.1でiOSのオプティカルフローを実装しようとしています。OpenCV goodFeaturesToTrackのステータスは0です。
次のコードのように、私は基本的なものを構築し、私はgoodFeaturesToTrack
から機能ポイントを得るかが、事はない点がを追跡されていない、とstatus
結果は常にゼロ(成功裏に追跡されていない)されています。
cv::Mat gray; // current gray-level image
cv::Mat gray_prev;
std::vector<cv::Point2f> features; // detected features
std::vector<cv::Point2f> newFeatures;
std::vector<uchar> status; // status of tracked features
std::vector<float> err; // error in tracking
cv::TermCriteria _termcrit = cv::TermCriteria(cv::TermCriteria::COUNT|cv::TermCriteria::EPS,20,0.03);
-(void)processImage:(cv::Mat&)image {
//-------------------- Optical Flow ---------------------
cv::cvtColor(image, gray, CV_BGR2GRAY);
if(gray_prev.empty()) {
gray.copyTo(gray_prev);
}
cv::goodFeaturesToTrack(gray, features, 20, 0.01, 10);
cv::calcOpticalFlowPyrLK(gray_prev, gray, features, newFeatures, status, err, cv::Size(10, 10), 3, _termcrit, 0, 0.001);
// draw circles for features points
for (int i = 0; i < features.size(); i++) {
circle(image, features[i], 10, cv::Scalar(250,250,250));
}
for (int y = 0; y < status.size(); y++) {
NSLog(@"Status: %d", status[y]); // always zero
}
std::swap(newFeatures, features);
cv::swap(gray_prev, gray);
}
品質レベルのパラメータを変更しようとしましたか? – Pierre
@Pierreはい、何も変更されていません。 – user3607093