0

私は 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]

問題がどこにあるのかわかりません。

4

2 に答える 2

0

あなたのコードはうまくいきました。私が変更した唯一のことは次のとおりです。

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);
}
}
于 2014-06-22T02:07:45.363 に答える