def test_resize(self):
        self.assertRaises(ValueError, imageIO.createResizeImageUDF, [1, 2, 3])

        make_smaller = imageIO.createResizeImageUDF([4, 5]).func
        imgAsRow = imageIO.imageArrayToStruct(array)
        smallerImg = make_smaller(imgAsRow)
        self.assertEqual(smallerImg.height, 4)
        self.assertEqual(smallerImg.width, 5)

        # Compare to PIL resizing
        imgAsPIL = PIL.Image.fromarray(obj=imageIO._reverseChannels(array)).resize((5, 4))
        smallerAry = imageIO._reverseChannels(np.asarray(imgAsPIL))
        np.testing.assert_array_equal(smallerAry, imageIO.imageStructToArray(smallerImg))
        # Test that resize with the same size is a no-op
        sameImage = imageIO.createResizeImageUDF((imgAsRow.height, imgAsRow.width)).func(imgAsRow)
        self.assertEqual(imgAsRow, sameImage)
        # Test that we have a valid image schema (all fields are in)
        for n in ImageSchema.imageSchema['image'].dataType.names:
            smallerImg[n]
    def test_resize(self):
        self.assertRaises(ValueError, imageIO.createResizeImageUDF, [1, 2, 3])

        make_smaller = imageIO.createResizeImageUDF([4, 5]).func
        imgAsRow = imageIO.imageArrayToStruct(array)
        smallerImg = make_smaller(imgAsRow)
        self.assertEqual(smallerImg.height, 4)
        self.assertEqual(smallerImg.width, 5)

        # Compare to PIL resizing
        imgAsPIL = PIL.Image.fromarray(
            obj=imageIO._reverseChannels(array)).resize((5, 4))
        smallerAry = imageIO._reverseChannels(np.asarray(imgAsPIL))
        np.testing.assert_array_equal(smallerAry,
                                      imageIO.imageStructToArray(smallerImg))
        # Test that resize with the same size is a no-op
        sameImage = imageIO.createResizeImageUDF(
            (imgAsRow.height, imgAsRow.width)).func(imgAsRow)
        self.assertEqual(imgAsRow, sameImage)
        # Test that we have a valid image schema (all fields are in)
        for n in ImageSchema.imageSchema['image'].dataType.names:
            smallerImg[n]
Example #3
0
 def _transform(self, dataset):
     modelGraphSpec = _buildTFGraphForName(self.getModelName(), self.getFeaturize())
     inputCol = self.getInputCol()
     resizedCol = "__sdl_imagesResized"
     tfTransformer = TFImageTransformer(
         channelOrder='BGR',
         inputCol=resizedCol,
         outputCol=self.getOutputCol(),
         graph=modelGraphSpec["graph"],
         inputTensor=modelGraphSpec["inputTensorName"],
         outputTensor=modelGraphSpec["outputTensorName"],
         outputMode=modelGraphSpec["outputMode"])
     resizeUdf = createResizeImageUDF(modelGraphSpec["inputTensorSize"])
     result = tfTransformer.transform(dataset.withColumn(resizedCol, resizeUdf(inputCol)))
     return result.drop(resizedCol)
 def _transform(self, dataset):
     modelGraphSpec = _buildTFGraphForName(self.getModelName(), self.getFeaturize())
     inputCol = self.getInputCol()
     resizedCol = "__sdl_imagesResized"
     tfTransformer = TFImageTransformer(
         channelOrder='BGR',
         inputCol=resizedCol,
         outputCol=self.getOutputCol(),
         graph=modelGraphSpec["graph"],
         inputTensor=modelGraphSpec["inputTensorName"],
         outputTensor=modelGraphSpec["outputTensorName"],
         outputMode=modelGraphSpec["outputMode"])
     resizeUdf = createResizeImageUDF(modelGraphSpec["inputTensorSize"])
     result = tfTransformer.transform(dataset.withColumn(resizedCol, resizeUdf(inputCol)))
     return result.drop(resizedCol)