mirror of
https://github.com/opencv/opencv_contrib.git
synced 2025-10-19 02:16:34 +08:00
A pythonic interface for surface_matching module
This commit is contained in:
32
modules/surface_matching/samples/ppf_load_match.py
Normal file
32
modules/surface_matching/samples/ppf_load_match.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import cv2 as cv
|
||||
|
||||
N = 2
|
||||
modelname = "parasaurolophus_6700"
|
||||
scenename = "rs1_normals"
|
||||
|
||||
detector = cv.ppf_match_3d_PPF3DDetector(0.025, 0.05)
|
||||
|
||||
print('Loading model...')
|
||||
pc = cv.ppf_match_3d.loadPLYSimple("data/%s.ply" % modelname, 1)
|
||||
|
||||
|
||||
print('Training...')
|
||||
detector.trainModel(pc)
|
||||
|
||||
print('Loading scene...')
|
||||
pcTest = cv.ppf_match_3d.loadPLYSimple("data/%s.ply" % scenename, 1)
|
||||
|
||||
print('Matching...')
|
||||
results = detector.match(pcTest, 1.0/40.0, 0.05)
|
||||
|
||||
print('Performing ICP...')
|
||||
icp = cv.ppf_match_3d_ICP(100)
|
||||
_, results = icp.registerModelToScene(pc, pcTest, results[:N])
|
||||
|
||||
print("Poses: ")
|
||||
for i, result in enumerate(results):
|
||||
#result.printPose()
|
||||
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(pc, result.pose)
|
||||
cv.ppf_match_3d.writePLY(pct, "%sPCTrans.ply" % modelname)
|
Reference in New Issue
Block a user