在 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 [Python] 中移动图像

为 Scikit-image 构建自定义 AWS Lambda 层

如何在python中使用scikit-image greycomatrix()函数?

从 ComputerVision 开始选择啥:Scikit-image 还是 OpenCV? [关闭]

scikit-image 中瘦与骨架化之间的区别

AI常用框架和工具丨6. 图像处理库Scikit-image