Большинство функций OpenCV работают только с изображениями BGR, а не с RGB, например, imshow или imwrite.OpenCV сделает всю работу за вас, чтобы правильно поставить его и сохранить как изображение JPG, которое может быть загружено ЛЮБОМ другим приложением.Если у вас есть другой заказ, то функция не узнает об этом и сохранит его с неправильным порядком.
Удаление этой строки:
img = cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2RGB)
должно выполнить эту работу за вас.
Я предполагаю, что это также не в правильном формате (np.uint8), так как вы используете его в строке, которую я только что сказал вам удалить.Поэтому вы также должны изменить часть сохранения на:
cv2.imwrite(
'./saveImage/img' + str(i) + ': ' + 'True: ' + str(cls_true[i]) + ', Pred:' +
str(cls_pred[i]) + '.JPEG', img.astype(np.uint8))
Теперь все должно работать.Эти изображения могут быть загружены в другой момент с PIL и любой другой библиотекой, и вы получите почти идентичные изображения (JPG - сжатие с потерями), если вы хотите идентичные, попробуйте сохранить их в другом формате, который имеет сжатие без потерь.