【发布时间】:2012-06-17 22:57:07
【问题描述】:
我有一个小问题,当我拍摄图像的轮廓时,我得到了这个数字:
如您所见,我可以提取轮廓,但一旦我提取路径,它就会留下这些奇怪的割线,它们会穿过图像,因为曲线上有 2 个不连续区域。我想知道是否有办法断开不连续的行,还是我的路径提取代码错误
import matplotlib.pyplot as plt
import numpy as np
def contourPath(img, width, height):
x = np.arange(0,width)
y = np.arange(height,0,-1)
X, Y = np.meshgrid(x,y)
plot = plt.contour(X,Y,img, [0])
pathList = plot.collections[0].get_paths()
x, y = [], []
for i in range(0, len(pathList)):
iterPath = pathList[i].iter_segments()
for point in iterPath:
pt = np.rint(point[0])
x.append(pt[0])
y.append(pt[1])
X = np.hstack(x)
Y = np.hstack(y)
return np.dstack((X,Y))[0]
感谢您的宝贵时间
对于用户 545424 我猜这里。 Matplotlib 轮廓函数工作正常,因为图像上有两个不连续的点导致了这个小事件的发生。
我了解到这些割线是由 scypi 引起的,但它引发了另一个关于库如何与轮廓点交互的问题
哦,好吧,我相信可以通过找到路径并对其进行插值来掩盖问题。但是,我喜欢避免重新寻找路径,因为旅行推销员问题在我的计算机上并不好。
你有什么建议吗?
【问题讨论】:
-
从您的编辑来看,尚不清楚您是否还有问题。而且,顺便问一下,这是视网膜吗?
-
我知道,但是重新查找路径违背了路径对象的目的。哦,好吧,我想我可能已经解决了。转换为极坐标,用户 argsort() 获取索引和插值图像更简单。
-
-heltonbiker 它是视网膜的背面
标签: python numpy matplotlib scipy