SIFT 탐지기에서 찾은 키포인트에 대한 ORB 설명자를 계산할 때 큰 문제가 있습니다. 간단한 예제 프로그램을 실행하려고하면 전체 시스템이 멈추고 이유를 파악할 수 없습니다. 샘플 코드는 다음과 같습니다.JavaCV는 SIFT 키포인트에 대한 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());
}
}
누구에게 어떤 문제가 있습니까? 위대한 것입니다 :)