gpt4 book ai didi

opencv - JavaCV 为 SIFT 关键点计算 ORB 描述符

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:08 25 4
gpt4 key购买 nike

我在为 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());
}
}

有人知道问题出在哪里吗?会很棒:)

最佳答案

好吧,如果我将关键点的 Octave 设置为 0,它似乎可以工作。我还不知道这是否是个好主意,但我倾向于拒绝。因为对于某些描述符来说,在其中发现特征的尺度空间 Octave 音阶的信息是至关重要的。

for(int i = 0; i < keypoints.capacity(); i++) {
KeyPoint kp = keypoints.position(i);
kp.octave(0);
}
keypoints.position(0);

关于opencv - JavaCV 为 SIFT 关键点计算 ORB 描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11634551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com