【发布时间】:2011-08-11 17:47:29
【问题描述】:
大家好,
我正在开发一个程序,该程序可以从照片中确定酵母的平均菌落大小,并且它与我测试过的 .bmp 图像配合得很好。该程序使用pygame,以后可能会使用PIL。
但是,我们在实验室中使用的相机/软件组合只能保存 16 位灰度 tiff,而 pygame 似乎无法识别 16 位 tiff,只能识别 8 位。在过去的几个小时里,我一直在阅读有关此问题的简单方法,但即使是 Python Imaging Library 似乎也无法使用 16 位 .tiff,我已经尝试过并且我得到“IOError:无法识别图像文件”。
import Image
img = Image.open("01 WT mm.tif")
我的最终目标是让这个程序对用户友好且易于安装,因此我试图避免添加额外的模块或要求人们安装 ImageMagick 或其他东西。
有没有人知道使用免费软件或纯 python 解决此问题的简单方法?我对图像了解不多:位深度操作超出了我的范围。但我相当确定我不需要所有 16 位,而且可能只有大约 8 位实际上有真实数据。事实上,我曾经使用 ImageMagick 尝试转换它们,这导致了一个全白的图像:我已经读过我应该使用命令“-auto-levels”,因为数据实际上并不包含 16-位范围。
非常感谢您的帮助,并对我缺乏知识表示歉意。
P.S.:有没有人有关于如何使我的 Python 程序易于非程序员安装的任何提示?例如,有没有办法以某种方式将它与 Python 和 pygame 捆绑在一起,所以它只是一个安装? Windows 和 Mac 都可以这样做吗?谢谢。
编辑:我尝试在 GIMP 中打开它,但出现 3 个错误:
1) 字段“DateTime”的计数不正确(27,预期为 20);标签修剪 2) 抱歉,无法处理 12 位样本的图像 3) 不支持的布局,没有 RGBA 加载器
这是什么意思,我该如何适应?
【问题讨论】:
-
您使用的是什么版本的 PIL? PIL 应该支持 16 位灰度图像(从 1.1.4 开始)。
-
就我个人而言,我会使用 scipy.misc.imread() 和标记的数组函数来查看 SciPy,它们似乎非常适合您正在做的事情。
-
我一直在使用 PIL 版本 1.1.7,所以可能不是位深度?我难住了!相机软件是否会对 .tiff 进行其他一些奇怪的格式化?
-
在相关但单独的说明中,您可能需要查看CellProfiler。它有一个用于菌落计数的示例管道,并处理多种格式的 16 位图像。
-
抱歉,愚蠢的问题:我可以在这个网站上上传我的示例图片吗?似乎stackoverflow将其转换为png。
标签: python python-imaging-library tiff pygame 16-bit