簡體   English   中英

OpenCV imread不起作用

[英]OpenCV imread doesn't work

我在我的C ++代碼中循環打開並處理一組圖像。 其中之一就是 樣本輸入 http://i.stack.imgur.com/rUJnp.gif

imread無法打開這個特定的。 imread().dataNULL

FWIW,我在CentOS使用最新的opencv 2.4.8。 有沒有什么辦法解決這一問題? 如果不是最簡單的方法是用另一個C ++圖像庫打開它並將其轉換為cv::Mat

從關於imread OpenCV文檔

函數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)

因此OpenCV不支持.gif格式,因此imread返回NULL

據我所知,OpenCV不支持gif格式,要直接在程序中讀取,需要一些外部庫。 例如http://freeimage.sourceforge.net/

祝好運

正如其他人所說, cv2.imread不允許您閱讀GIF。 但是,您可以使用cv2.VideoCapture來讀取GIF。 例如(在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 ++應該是微不足道的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM