Как исправить исключение NullPointerException в opencv

1

Я хотел реализовать 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, чтобы знать, где он был нулевым, но не мог.

Как я могу исправить это, пожалуйста, или даже знать, где находится нуль?

Теги:
opencv
nullpointerexception

1 ответ

2
Лучший ответ

Я не вижу объявления 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% уверен, что синтаксис верен.

Кроме того, это хорошая идея пойти шаг за шагом и проверить свои предположения:

  1. Правильно ли загружено изображение (с imread), если это так, отображать его на экране?
  2. Является ли dst корректным отображением пикселей после преобразования шкалы серого?
  3. Наконец, source_f отображает ожидаемый результат после преобразования?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню