Сумма массива изображений отличается от суммы того же массива изображений после записи и чтения

#python #opencv #python-imaging-library

Вопрос:

Я прочитал изображение, используя

img1 = cv2.imread('xxx.jpg')

и подсчитал сумму массива

sum1 = img1.sum()

Затем я сохранил массив изображений и прочитал его еще раз, как

 cv2.imwrite('test2.jpg', img1) img2 = cv2.imread('test2.jpg')  

и подсчитал сумму, как

 sum2 = img2.sum()  

Я ожидал , что sum1 == sum2 это True так, но на самом деле это не так.

Почему?

Комментарии:

1. Вы читаете растровое изображение из файла .jpg, затем сохраняете растровое изображение в формате .jpg, а затем считываете растровое изображение из полученного файла .jpg — но .jpg-формат с потерями, поэтому я ожидаю, что это будет причиной.

2. Как сказал Грисмар, .jpg-это формат с потерями. Если вы хотите сохранить оригинал, imwrite он будет сохранен в формате .png или .bmp.

Ответ №1:

Ответ содержится в комментариях.

Вы читаете растровое изображение из файла .jpg, затем сохраняете растровое изображение в формате .jpg, а затем считываете растровое изображение из полученного файла .jpg — но .jpg-формат с потерями, поэтому я ожидаю, что это будет причиной.