1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
import os.path
import pickle
import shutil
import tempfile
import unittest
import pcl
import numpy as np
# _data = [(i, 2 * i, 3 * i + 0.2) for i in range(500)]
import random
_data = [(random.random(), random.random(), random.random())
for i in range(500)]
# sample_consensus
### RandomSampleConsensus ###
class TestRandomSampleConsensus(unittest.TestCase):
def setUp(self):
self.p = pcl.PointCloud(_data)
# def test_SampleConsensusModel(self):
# model = pcl.SampleConsensusModel(self.p)
# ransac = pcl.RandomSampleConsensus (model)
# ransac.set_DistanceThreshold (.01)
# ransac.computeModel()
# inliers = ransac.get_Inliers()
#
# # print(str(len(inliers)))
# self.assertNotEqual(len(inliers), 0)
# def test_SampleConsensusModelCylinder(self):
# model_cy = pcl.SampleConsensusModelCylinder(self.p)
# ransac = pcl.RandomSampleConsensus (model_cy)
# ransac.set_DistanceThreshold (.01)
# ransac.computeModel()
# inliers = ransac.get_Inliers()
#
# # print(str(len(inliers)))
# self.assertNotEqual(len(inliers), 0)
def test_SampleConsensusModelLine(self):
model_line = pcl.SampleConsensusModelLine(self.p)
ransac = pcl.RandomSampleConsensus(model_line)
ransac.set_DistanceThreshold(.01)
ransac.computeModel()
inliers = ransac.get_Inliers()
# print(str(len(inliers)))
self.assertNotEqual(len(inliers), 0)
def test_ModelPlane(self):
model_p = pcl.SampleConsensusModelPlane(self.p)
ransac = pcl.RandomSampleConsensus(model_p)
ransac.set_DistanceThreshold(.01)
ransac.computeModel()
inliers = ransac.get_Inliers()
# print(str(len(inliers)))
self.assertNotEqual(len(inliers), 0)
final = pcl.PointCloud()
if len(inliers) != 0:
finalpoints = np.zeros((len(inliers), 3), dtype=np.float32)
for i in range(0, len(inliers)):
finalpoints[i][0] = self.p[inliers[i]][0]
finalpoints[i][1] = self.p[inliers[i]][1]
finalpoints[i][2] = self.p[inliers[i]][2]
final.from_array(finalpoints)
self.assertNotEqual(final.size, 0)
pass
# def test_SampleConsensusModelRegistration(self):
# model_reg = pcl.SampleConsensusModelRegistration(self.p)
# ransac = pcl.RandomSampleConsensus (model_reg)
# ransac.set_DistanceThreshold (.01)
# ransac.computeModel()
# inliers = ransac.get_Inliers()
#
# # print(str(len(inliers)))
# self.assertNotEqual(len(inliers), 0)
def test_ModelSphere(self):
model_s = pcl.SampleConsensusModelSphere(self.p)
ransac = pcl.RandomSampleConsensus(model_s)
ransac.set_DistanceThreshold(.01)
ransac.computeModel()
inliers = ransac.get_Inliers()
# print(str(len(inliers)))
self.assertNotEqual(len(inliers), 0)
final = pcl.PointCloud()
if len(inliers) != 0:
finalpoints = np.zeros((len(inliers), 3), dtype=np.float32)
for i in range(0, len(inliers)):
finalpoints[i][0] = self.p[inliers[i]][0]
finalpoints[i][1] = self.p[inliers[i]][1]
finalpoints[i][2] = self.p[inliers[i]][2]
final.from_array(finalpoints)
self.assertNotEqual(final.size, 0)
pass
def test_SampleConsensusModelStick(self):
model_st = pcl.SampleConsensusModelStick(self.p)
ransac = pcl.RandomSampleConsensus(model_st)
ransac.set_DistanceThreshold(.01)
ransac.computeModel()
inliers = ransac.get_Inliers()
# print(str(len(inliers)))
self.assertNotEqual(len(inliers), 0)
# def testException(self):
# self.assertRaises(TypeError, pcl.RandomSampleConsensus)
# pass
def suite():
suite = unittest.TestSuite()
# Sampleconsensus
suite.addTests(unittest.makeSuite(TestRandomSampleConsensus))
return suite
if __name__ == '__main__':
testSuite = suite()
unittest.TextTestRunner().run(testSuite)
|