如何在Java中使用opencv BowkmeanFilter?

如何在Java中使用opencv BowkmeanFilter?,opencv,feature-detection,Opencv,Feature Detection,我正在使用opencv 3.2 for Java(使用contrib模块构建源代码),并尝试使用SURF+BowKmeanFilter进行检测,但在运行时会抛出一个错误 我的代码: //read jpg to variable trainMats //... //train Mat allDesc = new Mat(); int clusterCount = 30; FeatureDetector detector = FeatureDetector.create(FeatureDetect

我正在使用opencv 3.2 for Java(使用contrib模块构建源代码),并尝试使用SURF+BowKmeanFilter进行检测,但在运行时会抛出一个错误

我的代码:

//read jpg to variable trainMats
//...

//train
Mat allDesc = new Mat();
int clusterCount = 30;
FeatureDetector detector = FeatureDetector.create(FeatureDetector.SURF);
DescriptorExtractor extractor = DescriptorExtractor.create(DescriptorExtractor.SURF);
BOWTrainer bowTrainer = new BOWKMeansTrainer(clusterCount);

for(int i = 0; i < trainMats.size(); i++) {
    Mat trainMat = trainMats.get(i);
    MatOfKeyPoint matOfKeyPoint = new MatOfKeyPoint();
    Mat desc = new Mat();
    detector.detect(trainMat, matOfKeyPoint);
    extractor.compute(trainMat, matOfKeyPoint, desc);
    allDesc.push_back(desc);
}

Mat dictionary = bowTrainer.cluster(allDesc);

//...
是由OpenCV版本提供的。 尝试使用2.4.11

Exception in thread "main" java.lang.Exception: unknown exception
    at org.opencv.features2d.BOWKMeansTrainer.cluster_1(Native Method)
    at org.opencv.features2d.BOWKMeansTrainer.cluster(BOWKMeansTrainer.java:62)