0
我想擴展this question,以便以多線程友好的方式查找輪廓區域。Python:使用多線程友好代碼計算輪廓包圍的區域
我試過下面的代碼:
c = cntr.Cntr(Z, X_, radial)
# Trace a contour at calc_levels
for loop in range(len(calc_levels)):
res = c.trace(calc_levels[loop])
# result is a list of arrays of vertices and path codes
# (see docs for matplotlib.path.Path)
nseg = len(res) // 2
segments = res[:nseg]
area = PolyArea(segments[0][:,0], segments[0][:,1])
def PolyArea(x,y):
return 0.5*np.abs(np.dot(x,np.roll(y,1))-np.dot(y,np.roll(x,1)))
在這我試着適應代碼here何爲PolyArea代碼來自this question但是1)面積的計算不是很正確和2)它減慢我的多線程代碼。
我說該區域不正確,因爲使用下面的代碼,我花了很長時間檢查,我得到完全不同的答案。然而,這段代碼是絕對不會多線程兼容,導致整個代碼停頓下來
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
cs = ax1.contour(Z,X_,radial, levels = calc_levels,colors='k')
for loop in range(len(calc_levels)):
vs = None
contour_ = None
contour_ = cs.collections[loop]
vs = contour_.get_paths()[0].vertices
# Compute area enclosed by vertices
features['Radial_Area_' + mystr + str(int(thisLevels[loop]*100))] = area(vs)
有沒有人能幫助我或者調試的代碼的第一部分,或寫不同的東西,這將更好地工作?
感謝
如果你能程度上,這給[MCVE],你可以將這件事,因爲它可能是爲別人有用。如果您決定不生成最簡單的示例,則可以將其刪除,因爲它沒有多大幫助。 – ImportanceOfBeingErnest