本帖最后由 sanji 于 2019-4-23 21:24 编辑
我跟著官網的python教程寫了一個surface matching的sample code
跑出了結果但是與官網的答案不同,不知道問題在哪
這是我的程式:
def Match(modelname, surfacename, resultname):
N = 2
detector = cv.ppf_match_3d_PPF3DDetector(0.025, 0.05)
model = cv.ppf_match_3d.loadPLYSimple(modelname, 1)
detector.trainModel(model)
pcTest = cv.ppf_match_3d.loadPLYSimple(surfacename, 1)
results = detector.match(pcTest, 1.0 / 40.0, 0.05)
icp = cv.ppf_match_3d_ICP(100)
_, results = icp.registerModelToScene(model, pcTest, results[:N])
print("Poses: ")
for i, result in enumerate(results):
print("\n-- Pose to Model Index %d: NumVotes = %d, Residual = %f\n%s\n" % (
result.modelIndex, result.numVotes, result.residual, result.pose))
if i == 0:
pct = cv.ppf_match_3d.transformPCPose(model, result.pose)
cv.ppf_match_3d.writePLY(pct, resultname)
使用的模型還有場景是官網內的這兩個
parasaurolophus_6700.ply
rs1_normals.ply
以及我的結果:
链接:
pan.baidu.com/s/1vNomShFt1UeFkVWsWDf0zQ 提取码: dwz5
链接:
pan.baidu.com/s/1ou7K4zmTnPc3KurrHZ9mrA 提取码: aeu1
肯定是我的結果錯了,但不知道問題在哪,有沒有大神給個指點,感謝
|