我想在 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% 确定语法是否正确。
此外,一步一步来检验您的假设也是个好主意:
- 图像是否正确加载(使用
imread
),如果是,将其显示在屏幕上? dst
是否正确显示灰度转换后的像素?- 最后,source_f 是否显示转换后的预期输出?
关于java - 如何修复 opencv 中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436834/