Пример #1
0
 def getEdges(self, scale, thresholdFactor):
     laplacianOfGaussian = ndimage.gaussian_laplace(self._image, scale)  # ish 0.57 seconds
     zeroCrossings = _findZeroCrossings(laplacianOfGaussian, thresholdFactor)  # ish 0.25 sec
     result = PointCloud()
     for x, y in zip(zeroCrossings[0], zeroCrossings[1]):
         result.addXY(float(x), float(y))
     return result
Пример #2
0
 def test_simple(self):
     encoder = PointCloudJsonEncoder()
     cloud = PointCloud()
     cloud.addXY(0.0, 1.0)
     cloud.addXY(2.0, 3.0)
     jsonDict = encoder.default(cloud)
     self.assertEqual(jsonDict, {'__type__': 'PointCloud',
                                 'points': [{'x': 0.0, 'y': 1.0}, {'x': 2.0, 'y': 3.0}]})
Пример #3
0
    def dict_to_object(self, d):
        if "__type__" not in d:
            return d

        if d["__type__"] == "PointCloud":
            result = PointCloud()
            for point in d["points"]:
                result.addXY(point["x"], point["y"])
            return result

        return d
Пример #4
0
    def test_AddPoints(self):
        c = PointCloud()
        c.addPoint([1.0, 2.0])
        c.addXY(3.0, 4.0)

        points = [p for p in c]
        self.assertEquals(points[0][0], 1.0)
        self.assertEquals(points[0][1], 2.0)
        self.assertEquals(points[1][0], 3.0)
        self.assertEquals(points[1][1], 4.0)
        self.assertEquals(c.max(), (3.0, 4.0))
        self.assertEquals(c.min(), (1.0, 2.0))
        self.assertEquals(c.mean(), (2.0, 3.0))
Пример #5
0
    def test_SimpleImage(self):
        simpleImage = np.zeros((12, 12))
        simpleImage[1, 1] = 255

        expectedPointCloud = PointCloud()
        expectedPointCloud.addXY(0.5, 0.0)
        expectedPointCloud.addXY(1.5, 2.0)
        expectedPointCloud.addXY(0.0, 0.5)
        expectedPointCloud.addXY(2.0, 1.5)

        e = EdgeDetector(simpleImage)
        pointCloud = e.getEdges(1.0, 17.0)

        for point, expectedPoint in zip(pointCloud, expectedPointCloud):
            self.assertEqual(point[0], expectedPoint[0])
            self.assertEqual(point[1], expectedPoint[1])
Пример #6
0
    def test_ToRgb(self):
        c = PointCloud()
        image = PointCloudToRgbImage(c, 0)
        rows, cols, channels = image.shape
        self.assertEquals(channels, 3)
        for element in np.nditer(image):
            self.assertEquals(element, 0.0)

        c.addXY(0.0, 0.0)
        c.addXY(10.0, 10.0)
        image = PointCloudToRgbImage(c, 0)
        rows, cols, channels = image.shape
        self.assertEquals(rows, 11)
        self.assertEquals(cols, 11)
        self.assertEquals(image[0, 0, 0], 255)
        self.assertEquals(image[0, 0, 1], 0)
        self.assertEquals(image[0, 0, 2], 0)
        self.assertEquals(image[10, 10, 0], 255)
        self.assertEquals(image[10, 10, 1], 0)
        self.assertEquals(image[10, 10, 2], 0)
        self.assertEquals(np.sum(image), 510)
Пример #7
0
class KeepInsideRadiusStage:
    def __init__(self, radius):
        self._radius = radius
        self._executionResult = None

    def execute(self, pointCloud):
        mean = pointCloud.mean()
        self._executionResult = PointCloud()
        radiusSquare = self._radius**2
        for x, y in pointCloud:
            squareDistanceFromMean = float((x - mean[0])**2 + (y - mean[1])**2)
            if squareDistanceFromMean <= radiusSquare:
                self._executionResult.addXY(float(x), float(y))
        return self._executionResult

    def getImageRepresentation(self):
        return PointCloudToRgbImage(self._executionResult, 0)

    def __ne__(self, other):
        if type(self) != type(other):
            return True
        return self._radius != other._radius
Пример #8
0
    def test_SimpleWrite(self):
        cloud = PointCloud()
        cloud.addXY(0.0, 0.0)
        cloud.addXY(1.0, 2.0)

        writeable = self.StringStorer()
        PointCloudHandler.savePointCloudToWriteable(cloud, writeable)

        oneString = "".join(writeable.strings)
        expectedString = '{\n'\
                         '  "__type__": "PointCloud",\n'\
                         '  "points": [\n'\
                         '    {\n'\
                         '      "x": 0.0,\n'\
                         '      "y": 0.0\n'\
                         '    },\n'\
                         '    {\n'\
                         '      "x": 1.0,\n'\
                         '      "y": 2.0\n'\
                         '    }\n'\
                         '  ]\n'\
                         '}'
        self.assertEquals(oneString, expectedString)
Пример #9
0
 def test_AddNonFloatXY(self):
     c = PointCloud()
     with self.assertRaises(ValueError):
         c.addXY(2.0, "not float")