Я хотел реализовать Gabor Filter с opencv в java в среде eclipse:
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, чтобы знать, где он был нулевым, но не мог.
Как я могу исправить это, пожалуйста, или даже знать, где находится нуль?
Я не вижу объявления source_f
в опубликованном фрагменте. Возможно, вы захотите инициализировать source_f, прежде чем указывать на него с помощью convertTo
, возможно, что-то вроде:
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
корректным отображением пикселей после преобразования шкалы серого?