少し問題があります。画像の輪郭を取得すると、次の図が表示されます。
ご覧のとおり、輪郭を抽出できますが、パスを抽出するとすぐに、曲線上に 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]
お時間をいただきありがとうございます
user545424 の場合 ここで推測します。この小さなイベントが発生する原因となった画像に 2 つの不連続なスポットがあるため、Matplotlib の輪郭関数は適切に機能しています。
これらの割線は scypi が原因であることがわかりましたが、ライブラリが輪郭点とどのように相互作用するかについて別の問題が発生します
まあ、パスを見つけて補間することで問題を隠すことができると思います。しかし、巡回セールスマンの問題は私のコンピューターではうまくいかないので、パスを再検索することは避けたいと思っています。
何か提案はありますか?