Хобрук: Ваш путь к мастерству в программировании

OpenCV imread не работает

У меня есть цикл в моем коде C++ для открытия и обработки набора изображений. Одним из них является sample inputhttps://i.stack.imgur.com/rUJnp..gif

imread не может открыть это конкретное.imread().data это NULL.

FWIW, я на CentOS и использую последнюю версию opencv 2.4.8. Есть ли способ исправить это? Если нет, то какой самый простой способ открыть его с помощью другой библиотеки изображений С++ и преобразовать в cv::Mat?

20.04.2014

  • какую ошибку вы получаете при открытии этого конкретного изображения? Если есть какие-либо проблемы, связанные с файловой системой (пример разрешения файла/не предоставление полного имени файла (включая расширение), никакая библиотека нам не поможет... 20.04.2014

Ответы:


1

Из документации OpenCV, касающейся imread

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

    Windows bitmaps - *.bmp, *.dib (always supported)
    JPEG files - *.jpeg, *.jpg, *.jpe (see the Notes section)
    JPEG 2000 files - *.jp2 (see the Notes section)
    Portable Network Graphics - *.png (see the Notes section)
    Portable image format - *.pbm, *.pgm, *.ppm (always supported)
    Sun rasters - *.sr, *.ras (always supported)
    TIFF files - *.tiff, *.tif (see the Notes section)

Таким образом, формат .gif не поддерживается OpenCV, поэтому imread возвращает NULL.

20.04.2014
  • Вот новые поддерживаемые форматы изображений для OpenCV 3.1.0: *.exr, *.hdr, *.pic, *.webp, *.pxm и *.pnm. 27.02.2016
  • См. ответ miguel.martin здесь, он также дает возможность прочитать его с помощью VideoCapture. stackoverflow.com/a/56252616/648298 22.05.2019

  • 2

    Насколько мне известно, OpenCV не поддерживает формат gif, который для чтения непосредственно в вашей программе требует некоторых внешних библиотек. Например, http://freeimage.sourceforge.net/.

    Удачи

    20.04.2014

    3

    Как утверждают другие, cv2.imread не позволяет читать GIF-файлы. Однако вместо этого вы можете использовать cv2.VideoCapture для читать гифки. Например (в Python):

    def read_video(video_path):
        video = cv2.VideoCapture(str(video_path))
        while video.isOpened():
            ok, frame = video.read()
    
            if not ok:
                break
    
            yield frame
        video.release()
    
    # yes, it works with the URL (wow!)
    plane_seats = list(read_video('https://i.stack.imgur.com/rUJnp.gif'))[0]
    animated_gif = list(read_video('https://i.stack.imgur.com/rUJnp.gif'))
    

    Преобразование этого в C++ должно быть тривиальным.

    22.05.2019
    Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..