大家好,
我正在开发一个程序,它可以从照片中确定酵母的平均菌落大小,并且在我测试的.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加载器
这是什么意思,我该如何适应它?
答案 0 :(得分:2)
我会看pylibtiff,它有一个纯粹的python tiff阅读器。
对于捆绑,你最好的选择可能是py2exe和py2app。
答案 1 :(得分:2)
py2exe是打包应用程序的方法。
关于16比特的tiff问题:
此示例http://ubuntuforums.org/showthread.php?t=1483265显示了如何使用PIL转换显示。
现在来看未解决的部分问题:在进行图像分析时,您希望在图像处理中尽可能长时间地保持最高动态范围 - 这样就会丢失更少的信息。您可能或可能不知道,PIL为您提供了许多滤镜/变换,可以增强图像的对比度,甚至可以提高光照水平,或执行边缘检测。您可能要考虑的未来方向是显示原始图像(当然缩放到8位)和已经过边缘检测处理的缩放图像。
查看http://code.google.com/p/pyimp/wiki/screenshots以获取更多示例和示例代码。
答案 2 :(得分:1)