With the robotics set up we use opencv for the images. However in the cnn I use tf.io.decode_jpg to open the images. These two methods slighty alter the image and makes it such that the same image, but opened in the different methods can’t be classified on the cnn.
I found the differences in this blog: https://towardsdatascience.com/image-read-and-resize-with-opencv-tensorflow-and-pil-3e0f29b992be
which states that two things needs to be changed to ensure that the two files are the same
- dct_method=’INTEGER_ACCURATE’ needs to be added to the decode
- half_pixel_centers=True to the resize method and also force it to be bilinear.
However the half_pixel_centers keyword is not found
This stackoverflow states that it is added in tf2.0 with a link to their github showing it has indeed been added: https://github.com/tensorflow/tensorflow/commit/3ae2c6691b7c6e0986d97b150c9283e5cc52c15f
About my code I map the dataset to a function that reads the file path
img = tf.io.read_file(file_path)
img = tf.io.decode_jpeg(img, channels=3, dct_method=’INTEGER_ACCURATE’)
resized img = tf.image.resize(img, (28,28), method=tf.image.ResizeMethod.BILINEAR, preserve_aspect_ratio=False, antialias=False, name=None, half_pixel_center=True)
I also tried it on an other machine with tf2.7 and it gives the same error.Could someone point out what I am doing wrong or perhaps there is a better way in general?