【发布时间】:2017-02-10 09:07:19
【问题描述】:
我正在编写一个解构图像的脚本,其中一个关键组件是使脚本尽可能轻量级。所以我尝试使用尽可能少的导入:
import sys, os, re ,fnmatch
import numpy as np
import cv2
import matplotlib.pyplot as plt
就是这样。问题是,我正在测试的其中一张图片是 GIF:
OpenCV 不支持,尽管搜索了一段时间,但我似乎找不到在纯 python 中读取 GIF(或将它们转换为 png)的方法。
我能找到的每个解决方案都使用 Pillow 或 PIL,这两者都非常大,而且实际上,甚至 OpenCV 也在推动它。 GIF 是静止图像。这里有简单的解决方案吗?
【问题讨论】:
-
Pillow/PIL 是最流行的图像模块 - 所以它更容易解决。
-
那不是吗?
-
您可以尝试自己编写加载程序。我在 C++ 中的 gif 解码器略小于 50 KB 的源代码。看看这个:How to find where does Image Block start in GIF images? 在 3MF 链接中你会找到你需要的所有信息
-
我不知道该怎么做。为什么我不能直接使用 PIL 的做法?
-
@Rich 如果您不知道如何编码,那么您只能使用第 3 方库。您可以使用任何东西,但正如您所提到的,您需要一些轻量级的东西,我向您提供了 GIF 需要多少源代码的信息(包括编码器/解码器)。我不知道有任何轻量级的 GIF 加载器,而且我接触到的那些对于我的口味来说太麻烦了。 (即使现在浏览器也存在 GIF 问题,例如没有变通方法的动画不会在其中循环播放)
标签: python python-2.7 opencv image-processing gif