我在我的C ++代码中循环打开并处理一组图像。 其中之一就是 样本输入 http://i.stack.imgur.com/rUJnp.gif

imread无法打开这个特定的。 imread().dataNULL

FWIW,我在CentOS使用最新的opencv 2.4.8。 有没有什么办法解决这一问题? 如果不是最简单的方法是用另一个C ++图像库打开它并将其转换为cv::Mat

===============>>#1 票数:14 已采纳

从关于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

===============>>#2 票数:3

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

祝好运

===============>>#3 票数:1

正如其他人所说, 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 ++应该是微不足道的。

  ask by Mohammad Moghimi translate from so

未解决问题?本站智能推荐:

14回复

imread在Opencv中不起作用

我正在尝试使用imread函数。 我的代码非常简单。 之后,主机矩阵被零指针填充,即图像未加载。 如果我使用cvLoadImage那么一切正常。 该文件存在,我没有混合发布和调试库。 为什么imread不起作用?
4回复

C ++ OpenCV imread在Android中不起作用

我试图在我的C ++代码中读取图像 并获得以下输出: 该文件存在。 但奇怪的是,如果我尝试使用根文件浏览器预览图像,它只是黑色。 我手动复制了文件。 编辑: 该代码在Windows下以.png和.jpg格式正常工作。 我只是想将现有的Iris C ++ C ++
1回复

OpenCV imread()不起作用

我有这个简单的代码可以打开图像,但是在“视频”窗口中显示空白图像。 我已经检查过发行版并调试lib来确保。 它处于发布模式,而lib是发布lib。 图片在那里,我也尝试了完整的图片路径,但仍然无法正常工作。 还尝试了不同的图像格式:jpg,png,bmp。 它是OpenCV 3.4.1
1回复

为什么imread(pic_name [i],1)不起作用?

我最近使用这段代码来显示那里有多少行进点。 但这是行不通的。 我知道问题是我以担心的方式使用imread() 。 像这样: 但是,如果我尝试加载2个JPG图像的代码,它就可以工作。 像这样: 请帮我。 QwQ。 并且下面有完整的代码。 PS:PicName
4回复

OpenCV,Qt,imread,namedWindow,imshow不起作用

在.pro文件中: 在main.cpp : 当我点击运行时,没有错误,但它只显示一个名为qtcreator_process_stub.exe的黑色窗口。 为什么“我的图像”窗口没有显示出来并显示img.jpg? 我使用基于Qt 5.1.1的Qt creator 2.8.1
4回复

读入OpenCV

我发现这个问题在这里被问过很多次了,但是我没有找到任何解决方案或解决此问题的方法。 这是我的代码(从此处复制: http : //docs.opencv.org/doc/tutorials/introduction/display_image/display_image.html ):
2回复

OpenCV drawContours不起作用

我正在尝试使用C ++绘制图像的轮廓。 它给出了错误: cv :: cvarrTOMat中的错误参数(未知数组类型)。 所以我改用python,在那儿工作正常。 请帮助我弄清楚代码出了什么问题。
1回复

Kinect openCV openNI不起作用

我正在尝试将kinect与OpenNI结合使用,当我尝试构建任何程序时,它没有给出任何构建错误,但是我在命令行中得到了这些错误 我尝试构建OpenCV提供的(kinect_maps.cpp),仍然给出相同的错误。 我在Windows 7 64位上使用Windows的Kinect。
1回复

OpenCV轮廓区域()不起作用

我是OpenCV的新手,有一个小问题,可能很容易解决。 基本上,我正在做一些基本的图像处理,我试图找到的contourArea()<3000的轮廓。 问题是,尝试绘制轮廓和/或调用contourArea()函数时出现以下错误: 错误发生在cv:contourArea()行上,
1回复

opencv convertTo不起作用

我知道这个问题已被其他人问及回答。 但是我仍然不能解决我的问题。 我从视频中读取了一个帧,该视频的格式为unsigned char(CV_8U)。 我希望将其转换为双精度(CV_64F)。 我做如下: 但是结果显示图像仍然是未签名的字符。 我的代码有什么问题? 谢谢。