java - 如何修复 opencv 中的 NullPointerException

标签 java opencv nullpointerexception

我想在 eclipse 环境下用 opencv 在 java 中实现 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 在哪里?

最佳答案

我在您发布的片段中没有看到 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 是否显示转换后的预期输出?

关于java - 如何修复 opencv 中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436834/

相关文章:

java - 从 onPostExecute 中的另一个类调用方法导致 nullPointerException

java - 一列布局不使用整个窗口宽度

java - 在 eclipse 中构建项目,但不是从终端/jenkins - 使用 Ant

Java数独正确数字输入

opencv - Breif 错误,Brisk 描述符 opencv

java - 空指针异常、EJB、JPA Web 应用程序

java - 在 Java 中使用 OOP 实现 CQRS

c - 如何在 OpenCV 中获得平滑的透视变形

c++ - 使用 opencv 数据结构进行图像平滑

java - 交互 LinkedList 时的 Null 检查抛出 NullPointerException