我在計算SIFT檢測器找到的關鍵點的ORB描述符時遇到很大問題。如果我嘗試運行一個簡單的示例程序,整個系統都會凍結,我無法弄清楚原因。示例代碼如下:用於SIFT關鍵點的JavaCV計算ORB描述符
import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImageM;
import com.googlecode.javacv.cpp.opencv_core.CvMat;
import com.googlecode.javacv.cpp.opencv_features2d.DescriptorExtractor;
import com.googlecode.javacv.cpp.opencv_features2d.FeatureDetector;
import com.googlecode.javacv.cpp.opencv_features2d.KeyPoint;
import com.googlecode.javacv.cpp.opencv_features2d.ORB;
import com.googlecode.javacv.cpp.opencv_nonfree.SIFT;
public class DescriptorTest {
public static void main(String[] args) {
SIFT sift = new SIFT(0, 3, 0.04, 10, 1.6);
FeatureDetector detector = sift.getFeatureDetector();
ORB orb_descriptor = new ORB(500, 1.2f, 8, 31, 0, 2, 0, 31);
DescriptorExtractor descriptor = orb_descriptor.getDescriptorExtractor();
CvMat image = cvLoadImageM("res/dvd_009_ref.jpg");
KeyPoint keypoints = new KeyPoint();
CvMat descriptors = new CvMat(null);
detector.detect(image, keypoints, null);
System.out.println("Keypoints found: "+ keypoints.capacity());
descriptor.compute(image, keypoints, descriptors);
System.out.println("Descriptors calculated: "+descriptors.rows());
}
}
有沒有人有一個想法是什麼問題?將是偉大的:)