2015-08-31 3 views
2

Я пытаюсь прочитать изображение с использованием Метод Highgui.imread в открытом CV/Java, но он возвращает пустую матрицу, хотя я уверен, что путь к изображению верен.Java - Highgui.imread возвращает пустую матрицу

public static void main(String[] args) { 
      // TODO Auto-generated method stub 
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 

      File fileName1 = new File("learning_image.jpeg"); 
      File fileName2 = new File("test_image.jpeg"); 

      Mat learningImage = Highgui.imread(fileName1.getAbsolutePath(),Highgui.CV_LOAD_IMAGE_GRAYSCALE); 
      Mat testImage = Highgui.imread(fileName2.getAbsolutePath(),Highgui.CV_LOAD_IMAGE_GRAYSCALE); 

      System.out.println("learningImage size (cols,rows) "+learningImage.size()); 
      System.out.println("testImage size (cols,rows) "+testImage.size()); 
      } 

Выход составляет: -

learningImage размера (смещ_по_столбцы, строка) 0x0

testImage размера (смещ_по_столбцы, строка) 0x0

ответ

1

«Функции imread загружает изображение из указаннога файл и возвращает его. Если изображение не может быть прочитано (из-за отсутствия файла, неправильных разрешений, неподдерживаемого или недопустимого формата), функция возвращает пустую матрицу (Mat :: data == NULL). "

Поскольку поддерживается jpeg, я проверял бы на наличие прав доступа, отсутствующий или поврежденный файл.

См: http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html

+0

Путь изображения имеет пустое пространство "C: \ Users \ Имя пользователя \ Documents \ Затмения \ JavaTestOpenCV \ learning_image.jpeg" ....... Может это вызвать проблемы ? – Anonymous

+0

У вас была опечатка в вашем файле? Здесь я не вижу пробелов в вашем примере. Опечатка объяснила бы ваш результат, хотя - поскольку это недостающий файл для читателя. – ozborn

+0

Я предполагаю, что вы на Windows? Нет, вы должны иметь возможность открыть файл с пробелом. Я предполагаю, что вы неправильно ссылаетесь на файл - зачем вы передаете fileName1.getAbsolutePath() в своей функции? Каково имя вашего каталога программ и вашего каталога файлов? Поместите все в один каталог (если возможно) и избавитесь от getAbsolutePath(), и он, вероятно, сработает. – ozborn

Смежные вопросы