
大家好,
我正在开发一个程序,它可以从照片中确定酵母的平均菌落大小,它可以很好地处理我测试过的.bmp图像。该程序使用pygame,并可能在以后使用PIL。
然而,我们在实验室中使用的相机/软件组合只能保存16位灰度tiff,而pygame似乎无法识别16位tiff,只能识别8位。我在过去的几个小时里一直在阅读解决这个问题的简单方法,但即使是Python image Library似乎也不能与16位的.tiff一起工作,我已经尝试过了,我得到了"IOError:无法识别图像文件“。
import Image
img = Image.open("01 WT mm.tif")我的最终目标是让这个程序对用户友好且易于安装,所以我尽量避免添加额外的模块或要求人们安装ImageMagick或其他东西。
有没有人知道使用免费软件或纯python解决这个问题的简单方法?我对图像了解不多:位深度操作超出了我的范围。但我相当确定我不需要所有的16位,而且可能只有8位实际上有真实的数据。事实上,我曾经使用ImageMagick来尝试转换它们,这导致了一个全白的图像:我后来读到我应该使用命令"-auto-levels“,因为数据实际上并不包含16位范围。
我非常感谢你的帮助,并为我缺乏知识而道歉。
附言:对于如何让非程序员轻松安装我的Python程序,有人有什么建议吗?例如,有没有办法将它与Python和pygame捆绑在一起,这样只需安装一次?Windows和Mac都能做到这一点吗?谢谢。
编辑:我尝试在GIMP中打开它,得到3个错误:
1)字段"DateTime“的计数不正确(27,应为20);标记已修剪2)抱歉,无法处理12位样本的图像3)不支持的布局,没有RGBA加载器
这意味着什么?我如何适应它?
发布于 2011-04-24 22:39:39
如果你在windows系统上,py2exe是打包你的应用程序的好方法。
关于16位tiff问题:
这个示例http://ubuntuforums.org/showthread.php?t=1483265展示了如何使用PIL转换为显示。
现在是未问部分的问题:在进行图像分析时,您希望在图像操作中尽可能长时间地保持最高动态范围-这样可以减少丢失的信息。您可能知道,也可能不知道,PIL为您提供了许多滤镜/变换,使您可以增强图像的对比度,甚至光线水平,或执行边缘检测。未来你可能想要考虑的一个方向是将原始图像(当然缩放到8位)与经过边缘检测处理的缩放图像一起显示。
有关更多示例和样例代码,请查看http://code.google.com/p/pyimp/wiki/screenshots。
发布于 2011-04-24 20:33:35
我会看看pylibtiff,它有一个纯python tiff阅读器。
对于捆绑,您最好的选择可能是py2exe和py2app。
发布于 2011-04-24 20:40:54
这实际上是一个两部分的问题:
1) Python -I的16位图像数据处理通常使用GDAL + Numpy。这可能对你的需求来说有点太多了,你可以使用PIL + Numpy。
2)发布工程Python应用程序可能会变得混乱。根据你的应用程序的复杂程度,你可以使用py2deb、py2app和py2exe。学习distutils也会有所帮助。
https://stackoverflow.com/questions/5768714
复制相似问题