在 scikit-image 中打开 load_sift 的图像文件
Posted
技术标签:
【中文标题】在 scikit-image 中打开 load_sift 的图像文件【英文标题】:Opening image files for load_sift in scikit-image 【发布时间】:2016-12-14 05:47:46 【问题描述】:The documentation for load_sift
from skimage import io
img = open('g.png')
rv = io.load_sift(img)
此代码不起作用。看来这不是我应该打开图像文件的方式。我无法理解文档。
【问题讨论】:
那个函数写得很糟糕,文档几乎不存在。我建议你寻找替代品...... 我不确定你的意思,@Jalo:文档字符串清楚地指出该函数读取 SIFT 文件,以及这些文件来自哪里 (scikit-image.org/docs/dev/api/…)。 @StefanvanderWalt 您是否尝试过使用下面的方法处理任何示例图像,然后应用 OP 的 load_sift() 函数?因为我这样做了,它引发了编码错误。其实我一开始以为问题和你下面提到的一样,也试过类似的解决办法。 @StefanvanderWalt 此外,文档字符串没有“明确说明该函数读取 SIFT 文件”。它的字面意思是它读取一个字符串或打开的文件。我一直在看源代码,对我来说它很容易出错,所以我很难过它写得不好 我希望扩展的答案提供更多的清晰度;让我知道。 【参考方案1】:load_sift
例程不适用于对 numpy 数组或图像文件进行操作。正如f
参数所记录的那样,它指出:
Input file generated by the feature detectors from
http://people.cs.ubc.ca/~lowe/keypoints/ or
http://www.vision.ee.ethz.ch/~surf/
即,这些是特殊格式的文件,其 SIFT 特征已由在这些 URL 中找到的二进制文件提取。我们不计算 scikit-image 中的 SIFT 特征的原因是因为这些例程是受专利保护的,因此您必须使用外部实用程序或库来计算它们。
在 scikit-image 中,您读取图像如下:
from skimage import io
image = io.imread('g.png')
这将返回一个 numpy 数组,您可以按照自己的意愿进行操作。额外提取 SIFT 特征:
-
下载外部二进制文件
在您的图像上运行它
使用
load_sift
加载生成的文件
由于文档字符串存在不确定性,我有made a patch 澄清需要外部工具。
【讨论】:
正如@Jalo 提到的,这不适用于 load_sift() 函数。 我已经扩展了解决上述 cmets 的答案。 现在对我来说很清楚 ;) 但是,我还要在第一个 docstring 行中添加输入文件需要具有特殊格式... 我已经按照你的建议更新了补丁中的文档字符串,@Jalo以上是关于在 scikit-image 中打开 load_sift 的图像文件的主要内容,如果未能解决你的问题,请参考以下文章
为 Scikit-image 构建自定义 AWS Lambda 层
如何在python中使用scikit-image greycomatrix()函数?