0

Javacvを使用してWebカメラを使用して画像をキャプチャする次のコードがありました。問題なく動作していましたが、NullPointerException.

コード:

public class ClientTest {

    public static void main(String[] args) {
         takeImage();

    }

    public static ImageIcon takeImage() {
        FrameGrabber grabber = null;
        IplImage img = null;
        ImageIcon image = null;
        try {
            grabber = FrameGrabber.createDefault(0);
        } catch (com.googlecode.javacv.FrameGrabber.Exception e1) {
            e1.printStackTrace();
        }
        int i = 0;
        try {
            grabber.start();

            img = grabber.grab();
            if (img != null) {
                cvFlip(img, img, 1);
            }
            // Save image
            image = new ImageIcon(img.getBufferedImage());

            grabber.flush();
            grabber.stop();
        } catch (Exception e) {
            Client.showMessage("Error taking image!");
            e.printStackTrace();

        }
        return image;
    }
}

エラー:

Exception in thread "main" java.lang.NullPointerException
    at com.googlecode.javacv.FrameGrabber.create(FrameGrabber.java:95)
    at com.googlecode.javacv.FrameGrabber.createDefault(FrameGrabber.java:118)
    at Main.ClientTest.takeImage(ClientTest.java:33)
    at Main.ClientTest.main(ClientTest.java:24)

誰かが光を当てることができれば、私はそれを大いに感謝します.それは月曜日に予定されている私の最終年度のプロジェクトの一部であるため、緊急の問題です...

4

2 に答える 2

1

FrameGrabber のソース コードを見て、自分で組み立てられるかどうかを確認してください: https://code.google.com/p/javacv/source/browse/src/main/java/com/googlecode/javacv/ FrameGrabber.java?r=5bbb841a1d9b03328ad0c3dbc723ad6903220d62

エラーを見ると、takeImage が FrameGrabber.createDefault() を呼び出したとき、および FrameGrabber.createDefault() が create() を呼び出したときにエラーが発生していることが示されています。これらの 2 つのメソッドは 99 行目と 123 行目にあり、getDefault() メソッドは 62 行目にあります。これらを一通り見て、どの入力が問題を引き起こしたのかを突き止めてください。

私の推測では、getDefault() メソッドが null を返しているため (おそらく FrameGrabber を拡張するクラスがないため)、c が null であるため、c.getConstructor() を呼び出すと create() メソッドが null ポインター例外をスローします。

幸運を!

于 2013-05-24T13:30:52.883 に答える
0

すべての .jar インポートを削除して、再インポートしました。すべてが機能するようになりました!

于 2013-05-24T17:16:02.807 に答える