Преобразование метода C ++ (opencv) в метод java (javacv)

У меня есть проект opencv, пишущий на c ++, который я бы преобразовал в java с помощью javacv

учитывая этот метод, написанный на C ++:

void extractBOWDescriptor(const path& basepath, Mat& descriptors, Mat& labels) {
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;
extractBOWDescriptor(entry.path(), descriptors, labels);
} 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 bowDescriptor;
bowDE.compute(img, keypoints, bowDescriptor);
descriptors.push_back(bowDescriptor);
float label=atof(entryPath.filename().c_str());
labels.push_back(label);
}
} else {
cerr << "Warning: Could not read image: "<< entryPath.string() << endl;
}
}
}
}

}

Нет документации по javacv, и я не разработчик C ++, поэтому я стараюсь внимательно следовать некоторым примерам javacv, и это результат, который я получил;

        public void extractBOWDescriptor (String baseurl , CvMat descriptors , CvMat labels)

{
File dir = new File(baseurl);

for (File child : dir.listFiles())
{
if (child.isDirectory())
{
System.out.println("Processing directory"+child.getAbsolutePath());

extractBOWDescriptor(child.getName(), descriptors, labels);
}else
{
if (child.getName().contains(".jpg"))
{
System.out.println("Processing file" + child.getName());

final CvMat image = cvLoadImageM(child.getName());

if (!image.empty())
{

KeyPoint keypoints = new KeyPoint(); // a verifier
featureDetector.detect(image, keypoints, null);

if (keypoints.isNull())
{
System.out.println("Warning: Could not find key points in image: "+

child.getName()
);
}

else
{
CvMat BoWdescriptors = new CvMat() ; //
bDescriptorExtractor.compute(image, keypoints, BoWdescriptors, null, null);

descriptors.put(descriptors);
float label=Float.parseFloat(child.getName());
labels.put(label);

}
}

else
{
System.out.println("Warning: Could not read image: "+ child.getName());
}

}
}
}

}

Является ли преобразование правильным? Особенно меня интересуют строки:

        Mat bowDescriptor; --> CvMat BoWdescriptors = new CvMat() ;

а также

     float label=atof(entryPath.filename().c_str());--> float label=Float.parseFloat(child.getName());

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]