我正在开发一个 android 应用程序,可以从任何捕获的图像中提取词袋,我将在本教程之后使用 opencv 库
现在我有一个 C++ 方法:
void extractTrainingVocabulary(const path& basepath) {...}
我在我的 android 活动中需要它
void extractTrainingVocabulary(const path& basepath) {
for (directory_iterator iter = directory_iterator(basepath); iter
!= directory_iterator(); iter++) {
directory_entry entry = *iter;
if (is_directory(entry.path())) {
cout << "Processing directory " << entry.path().string() << endl;
extractTrainingVocabulary(entry.path());
} else {
path entryPath = entry.path();
if (entryPath.extension() == ".jpg") {
cout << "Processing file " << entryPath.string() << endl;
Mat img = imread(entryPath.string());
if (!img.empty()) {
vector<KeyPoint> keypoints;
detector->detect(img, keypoints);
if (keypoints.empty()) {
cerr << "Warning: Could not find key points in image: "
<< entryPath.string() << endl;
} else {
Mat features;
extractor->compute(img, keypoints, features);
bowTrainer.add(features);
}
} else {
cerr << "Warning: Could not read image: "
<< entryPath.string() << endl;
}
}
}
}
}
所以按照android NDK
教程我应该像这样声明这个方法: public native void extractTrainingVocabulary () ;
我的问题是如何处理 C++ 参数const path& basepath
?如何在java方法中传递这个参数
我希望我的问题对你来说很清楚谢谢