我想在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在哪里?
答案 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%确定语法是否正确。
此外,一步一步地测试你的假设是一个好主意:
imread
),如果是,请将其显示在屏幕上?dst
是否正确显示像素?