问题标签 [scikit-image]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
16597 浏览

python - 如何将图像从 scikit-image 转换为 opencv2 和其他库?

我试图在使用 scikit-image 创建的骨架化图像中使用 cv2 python 库查找轮廓,但出现此错误:

我的问题是:我必须做什么才能转换为 cv2,反之亦然?

我知道 opencv 使用 numpy.uint8 类型来表示二进制图像而不是 scikit-image numpy.float64

我还使用了 mahotas (numpy.bool) 和 pymorph 库。如何从 scikit-image 转换为这些库,反之亦然?

0 投票
1 回答
2911 浏览

python - scikit-image 将图像保存到字节串

我正在使用scikit-image读取图像:

在对 进行一些操作后img,我想将其保存到内存文件(a la StringIO)以传递给另一个函数,但它看起来skimage.io.imsave需要文件名,而不是文件句柄。

如果可能的话,我想避免碰到磁盘(imsave然后从另一个映像库中读取)。有没有一种很好的方法来使用imsave(或其他一些对 scikit-image 友好的功能)StringIO

0 投票
2 回答
2308 浏览

python - 用于检测 scikit-image 中分支点和端点的命中和未命中变换

我有 2 个函数使用 mahotas python 库来检测图像中的分支点和端点。

2个功能:

有没有办法用 Scikit-image 库获得这些功能? scikit 图像的形态部分没有进行命中和丢失转换。

0 投票
3 回答
2646 浏览

python - 如何在python中删除骨架图像中的最大轮廓?

我想删除这个轮骨架标志的圆周(标志的最外周),除了里面的东西。我考虑一个函数 findcontours() 并删除我找到的最大轮廓

这是输入图像:

原始图像

骨架化:

骨架图像

但不幸的是,这是我的输出图像:

没有最大轮廓的骨架图像

为什么它不只保留 2 个交叉段,而一个段由很多点组成

更新解决方案(和新问题):

如果我在这行代码之后制作了骨架化的 img 的深层副本: img = img.astype(np.uint8) #after 骨架化过程

我可以将 find_contour 与复制的图像一起使用,并将 draw_contour 应用于原始图像,仅此而已!

我的问题是:

为什么找到轮廓编辑我的图像而我被迫使用临时图像?为什么 matplotlib 向我显示正确的结果而 cv2 imshow 不显示(它向我显示黑色图像)?

代码的新部分:

matplotlib 中的正确结果

更新洪水文件+扩张:

Floodfill-dilate 程序是否正确?哪里错了?

不幸的是,我得到了这个:

充盈+扩张

0 投票
1 回答
2503 浏览

python - 如何在 scikit 图像骨架化后检测点?

我有二进制骨架图像,我使用 python 库 mahotas 来提取端点和分支点。

我不喜欢 mahotas函数(有太多的小分支),所以我选择了 scikit-image骨架化函数。

现在麻烦开始了:在某些图像中,它不再提取分支点。为什么?

Scikit 图像函数接受布尔值和整数值(mahotas 使用布尔值)。

未检测到分支点的图像

检测到分支点的图像

0 投票
1 回答
764 浏览

python-2.7 - 将栅格图层上点的位置转换为 NumPy 数组中点的位置

我第一次使用 scikit-image 包的MCP类来查找成本栅格上两点之间的最小成本路径,该成本栅格使用RasterToNumPyArray工具从 ArcGIS 转换为 NumPy 数组。但是,为此必需的部分 MCP 类属性是开始和结束索引。
我不知道如何获取一组点(具有经纬度坐标的 ArcGIS shapefile)并将其转换为从具有空间数据的栅格生成的 NumPy 数组上的位置索引。我知道我可以将栅格单元 OID 分配给 ArcGIS 中的点,但我不确定如何将其转移到 NumPy 数组上的索引。有谁知道这是否可能?

0 投票
1 回答
1230 浏览

python - Python 路径:为什么 pip 看不到最新版本的 numpy

在 virtualenv 中工作,我正在尝试安装 scikit-image,但它失败了,告诉我我需要更新(或任何)版本的 numpy。

我不明白这一点,因为从 Python 开始,numpy 1.7 已经在我的路上了。

怎么回事 - 为什么安装 scikit-image 的系统看不到最新版本的 numpy?我该如何解决这个问题?

numpy 的路径似乎已经在我的~/.bash_profile

更新:

numpy 1.7 版也在su路径中:

0 投票
1 回答
1998 浏览

python - 我怎么知道python中某些坐标(存储在列表中)的二进制图像中是否有白色像素?

我在元组列表中有一个numpy 数组二进制(黑白)图像和坐标,例如:

或作为:

如何使用该坐标列表检查图像中是否有“白色”像素?我还想检查距离该坐标列表远的大约 3 个像素范围内的白色像素。

IE:

我想到了“哪里”功能。

更新

我尝试使用形状 (128, 128) 而不是 (128, 128, 3) 因为我的图像具有以下形状: (a,b) 但现在它找不到白色像素!为什么它会以这种方式找到任何东西?

输出:

0 投票
1 回答
3244 浏览

python - python中图像的几何扭曲

我想使用 python 对图像执行几何变换,沿给定曲线“拉直”或校正图像。scikit-image 似乎ProjectiveTransform()对此warp()非常有用,但文档很少。我按照此处的文档进行操作,但是对于示例案例,我无法使其正常工作。

下面是一个例子:我将创建一个带有两个同心圆的图像,目标是矫正这些圆的四分之一,使生成的图像是两条平行线。这是示例数据:

这可以绘制出来,例如:

在此处输入图像描述

所以我的目标是纠正红色控制点给出的象限中的图像。(在这种情况下,这与笛卡尔到极坐标的转换相同。)使用文档示例中的 scikit 图像,我已经完成了:

我期待这张warped图片显示两条平行线,但我得到了: 在此处输入图像描述

我在这里做错了什么?

请注意,虽然在这种情况下它是笛卡尔到极坐标的变换,但在最一般的情况下,我正在寻找来自任意曲线的变换。如果有人知道使用其他软件包的更好方法,请告诉我。ndimage.map_coordinates我可以通过使用一堆径向线来解决这个问题,但我正在寻找更优雅的东西。

0 投票
2 回答
4282 浏览

python - 为什么 skimage.transform.rotate 比 PIL 的 Image.rotate 慢很多?

我正在将一些基于 PIL 的代码转换为 NumPy,但我发现该skimage.transform.rotate函数PIL 的Image.rotate.

作为粗略的比较,使用skimage' 旋转在 ~1000x1000 像素的图像上需要 ~2.2 秒,而Image.rotate需要 ~0.1 秒:

和输出:

(这些数字在多次运行中或多或少是一致的;我不认为这是没有运行足够测试的产物)

所以!那是怎么回事?有什么方法可以加快 skimage 的速度rotate吗?

版本信息:

  • 皮尔:1.1.7
  • skimage:0.14.1
  • 麻木:1.7.1
  • 蟒蛇:2.7.2

可能还值得注意:

  • 如果BICUBIC不使用过滤,则该im.rotate操作只需 ~0.01 秒,而设置order=0为使用最近邻过滤,skimage.rotate则需要 ~0.6 秒。