问题标签 [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.
python - 如何将图像从 scikit-image 转换为 opencv2 和其他库?
我试图在使用 scikit-image 创建的骨架化图像中使用 cv2 python 库查找轮廓,但出现此错误:
我的问题是:我必须做什么才能转换为 cv2,反之亦然?
我知道 opencv 使用 numpy.uint8 类型来表示二进制图像而不是 scikit-image numpy.float64
我还使用了 mahotas (numpy.bool) 和 pymorph 库。如何从 scikit-image 转换为这些库,反之亦然?
python - scikit-image 将图像保存到字节串
我正在使用scikit-image读取图像:
在对 进行一些操作后img
,我想将其保存到内存文件(a la StringIO
)以传递给另一个函数,但它看起来skimage.io.imsave
需要文件名,而不是文件句柄。
如果可能的话,我想避免碰到磁盘(imsave
然后从另一个映像库中读取)。有没有一种很好的方法来使用imsave
(或其他一些对 scikit-image 友好的功能)StringIO
?
python - 用于检测 scikit-image 中分支点和端点的命中和未命中变换
我有 2 个函数使用 mahotas python 库来检测图像中的分支点和端点。
2个功能:
有没有办法用 Scikit-image 库获得这些功能? scikit 图像的形态部分没有进行命中和丢失转换。
python - 如何在python中删除骨架图像中的最大轮廓?
我想删除这个轮骨架标志的圆周(标志的最外周),除了里面的东西。我考虑一个函数 findcontours() 并删除我找到的最大轮廓
这是输入图像:
骨架化:
但不幸的是,这是我的输出图像:
为什么它不只保留 2 个交叉段,而一个段由很多点组成
更新解决方案(和新问题):
如果我在这行代码之后制作了骨架化的 img 的深层副本: img = img.astype(np.uint8) #after 骨架化过程
我可以将 find_contour 与复制的图像一起使用,并将 draw_contour 应用于原始图像,仅此而已!
我的问题是:
为什么找到轮廓编辑我的图像而我被迫使用临时图像?为什么 matplotlib 向我显示正确的结果而 cv2 imshow 不显示(它向我显示黑色图像)?
代码的新部分:
更新洪水文件+扩张:
Floodfill-dilate 程序是否正确?哪里错了?
不幸的是,我得到了这个:
python - 如何在 scikit 图像骨架化后检测点?
我有二进制骨架图像,我使用 python 库 mahotas 来提取端点和分支点。
我不喜欢 mahotas瘦函数(有太多的小分支),所以我选择了 scikit-image骨架化函数。
现在麻烦开始了:在某些图像中,它不再提取分支点。为什么?
Scikit 图像函数接受布尔值和整数值(mahotas 使用布尔值)。
python-2.7 - 将栅格图层上点的位置转换为 NumPy 数组中点的位置
我第一次使用 scikit-image 包的MCP类来查找成本栅格上两点之间的最小成本路径,该成本栅格使用RasterToNumPyArray工具从 ArcGIS 转换为 NumPy 数组。但是,为此必需的部分 MCP 类属性是开始和结束索引。
我不知道如何获取一组点(具有经纬度坐标的 ArcGIS shapefile)并将其转换为从具有空间数据的栅格生成的 NumPy 数组上的位置索引。我知道我可以将栅格单元 OID 分配给 ArcGIS 中的点,但我不确定如何将其转移到 NumPy 数组上的索引。有谁知道这是否可能?
python - Python 路径:为什么 pip 看不到最新版本的 numpy
在 virtualenv 中工作,我正在尝试安装 scikit-image,但它失败了,告诉我我需要更新(或任何)版本的 numpy。
我不明白这一点,因为从 Python 开始,numpy 1.7 已经在我的路上了。
怎么回事 - 为什么安装 scikit-image 的系统看不到最新版本的 numpy?我该如何解决这个问题?
numpy 的路径似乎已经在我的~/.bash_profile
:
更新:
numpy 1.7 版也在su
路径中:
python - 我怎么知道python中某些坐标(存储在列表中)的二进制图像中是否有白色像素?
我在元组列表中有一个numpy 数组二进制(黑白)图像和坐标,例如:
或作为:
如何使用该坐标列表检查图像中是否有“白色”像素?我还想检查距离该坐标列表远的大约 3 个像素范围内的白色像素。
IE:
我想到了“哪里”功能。
更新。
我尝试使用形状 (128, 128) 而不是 (128, 128, 3) 因为我的图像具有以下形状: (a,b) 但现在它找不到白色像素!为什么它会以这种方式找到任何东西?
输出:
python - python中图像的几何扭曲
我想使用 python 对图像执行几何变换,沿给定曲线“拉直”或校正图像。scikit-image 似乎ProjectiveTransform()
对此warp()
非常有用,但文档很少。我按照此处的文档进行操作,但是对于示例案例,我无法使其正常工作。
下面是一个例子:我将创建一个带有两个同心圆的图像,目标是矫正这些圆的四分之一,使生成的图像是两条平行线。这是示例数据:
这可以绘制出来,例如:
所以我的目标是纠正红色控制点给出的象限中的图像。(在这种情况下,这与笛卡尔到极坐标的转换相同。)使用文档示例中的 scikit 图像,我已经完成了:
我期待这张warped
图片显示两条平行线,但我得到了:
我在这里做错了什么?
请注意,虽然在这种情况下它是笛卡尔到极坐标的变换,但在最一般的情况下,我正在寻找来自任意曲线的变换。如果有人知道使用其他软件包的更好方法,请告诉我。ndimage.map_coordinates
我可以通过使用一堆径向线来解决这个问题,但我正在寻找更优雅的东西。
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 秒。