The pixel values of jpeg and jpg changes even when I simply load an image and just save it.
The values kept on changing on consecutive runs.
This is not the case when I do the same to a png image.
I have demonstrated it using opencv and imageio.
import cv2
import imageio
import numpy as np
# Using opencv
im = cv2.imread("img.jpeg")
cv2.imwrite("img_save1.jpeg", im)
im2 = cv2.imread("img_save1.jpeg")
cv2.imwrite("img_save2.jpeg", im2)
im3 = cv2.imread("img_save2.jpeg")
print("Opencv ", np.sum(np.abs(im - im2)), np.sum(np.abs(im - im3)), np.sum(np.abs(im2 - im3)), sep=', ')
# Using imageio
im = imageio.imread("img.jpeg")
imageio.imwrite("img_save1.jpeg", im)
im2 = imageio.imread("img_save1.jpeg")
imageio.imwrite("img_save2.jpeg", im2)
im3 = imageio.imread("img_save2.jpeg")
print("Imageio ", np.sum(np.abs(im - im2)), np.sum(np.abs(im - im3)), np.sum(np.abs(im2 - im3)), sep=', ')
Output:
Opencv , 3960369, 4185747, 947042
Imageio , 10047893, 10064129, 280428
For png file
# Using opencv
im = cv2.imread("ig.png")
cv2.imwrite("ig_save1.png", im)
im2 = cv2.imread("ig_save1.png")
print("Opencv: ", np.sum(np.abs(im - im2)))
# Using imageio
im = imageio.imread("ig.png")
imageio.imwrite("ig_save1.png", im)
im2 = imageio.imread("ig_save1.png")
print("imageio: ", np.sum(np.abs(im - im2)))
Output:
Opencv: 0
Imageio: 0