【发布时间】:2018-08-26 00:03:42
【问题描述】:
我是一位经验丰富的 Python 程序员,拥有丰富的图像处理和计算机视觉经验。我非常熟悉所有标准工具,例如PIL、Pillow、opencv、numpy 和 scikit-image。
如果我只有标准库可以使用,我将如何将图像读入 Python 数据格式,如嵌套列表、字节数组或类似格式?
我意识到不同的图像格式有不同的规格。我的问题是我什至如何开始构建一个读取任何给定格式的函数。
注意 Python 2.6 在标准库中有一个jpeg 模块,该模块已被弃用。我们不讨论这个,因为它不受支持。
【问题讨论】:
-
看看 PIL 是如何实现它的......你可能会发现只需要读取原始字节,通过幻数识别类型(通常是前几个字节,并且有一个查找表为整个网络),然后使用它决定如何使文件中的内容/元数据可用。 (此时您已经编写了一个大大简化的 PIL 版本......)......我会首先查看这些库的来源并从那里重用想法。
-
1) 我担心
opencv、PIL之类的东西依赖了多少纯 C 代码。 OpenCV 几乎使用纯 C 绑定。 PIL 有一些 C. 2) 理解这非常困难:github.com/python-pillow/Pillow/blob/… -
是的...您可能必须使用 C 代码作为基础并熟悉使用
struct来模拟对结构/打包数据的操作...以及所有您可能希望能够执行的任何操作的细微差别/图像格式规范文档......除了花时间查看现有解决方案的建议......这非常“接近一本书来解释” -稍微细读一下源代码和技术规格……信息就在你需要的地方。