我有一个带有原生部分的Android应用。它将使用svm,所以我需要BOWImgDescriptorExtractor。我的问题是我在PC上使用bowDE.compute();
时无法使用bowDe.compute(Mat& img, vector<KeyPoint>& keypoints, Mat& descriptors);
。使用此参数的Android没有实现:void compute(const cv::Mat &, std::vector<cv::KeyPoint,std::allocator<cv::KeyPoint>> &, cv::Mat &, std::vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>> *, cv::Mat *)
我必须使用以下方法:
void compute( const Mat& image, vector<KeyPoint>& keypoints, Mat& imgDescriptor,
vector<vector<int> >* pointIdxsOfClusters=0, Mat* descriptors=0 );
// compute() is not constant because DescriptorMatcher::match is not constant
我不知道怎么做。
当我将鼠标悬停在BOWImgDescriptorExtracotr上时,我可以看到该课程。在那里我可以看到方法声明,如下所示:
Mat features;
vector<KeyPoint> keypoints;
detector->detect(matGray, keypoints);
KeyPointsFilter::retainBest(keypoints, 1500);
bowDE.compute(matGray, keypoints, features);
正如您所看到的,其他参数都有其默认值,但由于某种原因我仍然会收到无效参数的错误。虽然它应该的方法不同于类中给出的方法......出于某种原因..
我的代码如下:
SVMDetector.cpp:45:45: error: no matching function for call to 'cv::BOWImgDescriptorExtractor::compute(cv::Mat&, std::vector<cv::KeyPoint>&, const cv::Mat&)'
SVMDetector.cpp:45:45: note: candidate is:
OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/features2d/features2d.hpp:1592:10: note: void cv::BOWImgDescriptorExtractor::compute(const cv::Mat&, std::vector<cv::KeyPoint>&, cv::Mat&, std::vector<std::vector<int> >*, cv::Mat*)
OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/features2d/features2d.hpp:1592:10: note: no known conversion for argument 3 from 'const cv::Mat' to 'cv::Mat&'
make: *** [/<some path>/local/armeabi-v7a/objs/svm_detector/SVMDetector.o] Error 1
以下是尝试编译时的输出:
{{1}}
你能举个例子或解释吗?提前谢谢!
答案 0 :(得分:0)
我认为它可能是IDE(Eclipse Luna)的问题。今天我打开电脑并开始日食之后,没有任何错误。