如何在opencv中修复NullPointerException

时间:2014-03-16 12:28:46

标签: java opencv nullpointerexception

我想在eclipse环境中用java中的opencv实现Gabor Filter:

  public static void main( String[] args ) throws IOException
       {

        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        Mat mat = Highgui.imread("./img/lena.jpg");

        Mat dst =new Mat();

        Imgproc.cvtColor(mat, dst, Imgproc.COLOR_RGB2GRAY);

        dst.convertTo(source_f, CvType.CV_64F, (1.0/255) , 0.0);
.
.
.
}

但是当它使用convertTo函数时,它会显示错误:

Exception in thread "main" java.lang.NullPointerException
at org.opencv.core.Mat.convertTo(Mat.java:959)
at testOpenCV.GaborFilter.main(GaborFilter.java:175)

我搜索了那个并尝试显示Mat对象以知道它在哪里为null但是不能。

我如何解决它,请甚至知道null在哪里?

1 个答案:

答案 0 :(得分:2)

我在您发布的代码段中未看到source_f的声明。您可能希望在使用convertTo指向它之前初始化source_f,可能类似于:

Mat dst = new Mat();
Mat source_f = new Mat();
Imgproc.cvtColor(mat, dst, Imgproc.COLOR_RGB2GRAY);
dst.convertTo(source_f, CvType.CV_64F, (1.0/255) , 0.0);

不幸的是我还没有使用java api,所以不要100%确定语法是否正确。

此外,一步一步地测试你的假设是一个好主意:

  1. 图片是否正确加载(使用imread),如果是,请将其显示在屏幕上?
  2. 灰度转换后dst是否正确显示像素?
  3. 最后,source_f是否显示转换后的预期输出?