【问题标题】:detecting image keypoints --javaCV --EXCEPTION_ACCESS_VIOLATION检测图像关键点 --javaCV --EXCEPTION_ACCESS_VIOLATION
【发布时间】:2014-06-22 10:30:55
【问题描述】:

我是 java 开发人员。我的目标是使用 javaCV 检测图像关键点

这是我的代码:

      final CvMat image1 = cvLoadImageM("im1.png" , 0);

      final CvMat image2 = cvLoadImageM("im2.png", 0);

      SIFT  sift = new SIFT();

  FeatureDetector featureDetector =sift.getFeatureDetector();


      KeyPoint keypoint1 = new KeyPoint();

  KeyPoint keypoint2 = new KeyPoint() ;

  featureDetector.detect(image1, keypoint1 , null);


      featureDetector.detect(image2,keypoint2, null);

但是当我运行这段代码时,我遇到了访问冲突异常

     A fatal error has been detected by the Java Runtime Environment:

     EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7795e3be, pid=128, tid=2348


     JRE version: Java(TM) SE Runtime Environment (7.0_45-b18) (build 1.7.0_45-b18)

     Java VM: Java HotSpot(TM) Client VM (24.45-b08 mixed mode, sharing windows-x86 )

     Problematic frame:

     C  [ntdll.dll+0x2e3be]

我看不出问题出在哪里?

【问题讨论】:

  • 请回复?

标签: java image opencv javacv keypoint


【解决方案1】:

我没有使用 Java CV,但在 C++ OpenCV 中,关键点是一个关键点的结构,而检测器需要获取关键点的向量。 您必须在 Java 中使用 std::vector(在 C++ 中使用)的类似物,例如数组或类似的东西。

【讨论】:

    【解决方案2】:

    您的代码对我有用;我唯一改变的是:

    final CvMat image1 = cvLoadImageM("C:/temp/316.jpg" , 0);
    final CvMat image2 = cvLoadImageM("C:/temp/330.jpg", 0);
    

    检查你的图片路径:

    import com.googlecode.javacv.cpp.opencv_core.CvMat;
    import com.googlecode.javacv.cpp.opencv_features2d.FeatureDetector;
    import com.googlecode.javacv.cpp.opencv_features2d.KeyPoint;
    import com.googlecode.javacv.cpp.opencv_nonfree.SIFT;
    
    import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImageM;
    public class any {
    public static void main(String args[])
    {
    final CvMat image1 = cvLoadImageM("C:/temp/316.jpg" , 0);
    
        final CvMat image2 = cvLoadImageM("C:/temp/330.jpg", 0);
        if(image1==null)
        System.out.println("image is null");
    if(image2==null)
        System.out.println("image is null");
    
    SIFT  sift = new SIFT();
    FeatureDetector featureDetector =sift.getFeatureDetector();
    KeyPoint keypoint1 = new KeyPoint();
    KeyPoint keypoint2 = new KeyPoint() ;
    featureDetector.detect(image1, keypoint1 , null);
    featureDetector.detect(image2,keypoint2, null);
    System.out.println(keypoint1);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      相关资源
      最近更新 更多