Вы можете попытаться увеличить параметр качества сжатия, как показано на OpenCV Documentation of cv::imwrite:
cv::Mat img = cv::imread("dir/frogImage.jpg",-1);
std::vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);
cv::imwrite("dir/result.jpg",img, compression_params);
Без указания качества сжатия вручную, будет применяться качество 95%.
, но 1. вы не знаете, какое качество сжатия jpeg имело ваше исходное изображение (возможно, возможно, вы можете увеличить размер изображения) и 2. он (афайк) все еще вводит дополнительные незначительные артефакты, потому что в конце концов это метод сжатия с потерями.
UPDATE Ваша проблема, кажется, не из-за артефактов сжатия, а из-за изображения с Adobe RGB 1998
цветным форматом. OpenCV интерпретирует значения цвета как они есть, но вместо этого он должен масштабировать значения цветов, чтобы соответствовать «реальному» цветовому пространству RGB. Браузер и некоторые зрители изображений правильно применяют цветовой формат, а другие - нет (например, irfanView). Я использовал GIMP для проверки. Используя GIMP, вы можете принять решение о запуске, как интерпретировать значения цвета по формату, либо получить желаемое, либо ваше «вымытое» изображение. OpenCV определенно не заботится о таких вещах, поскольку это не библиотека редактирования фотографий, поэтому ни при чтении, ни при записи цветной формат не обрабатывается.
укажите код чтения и письма .. вероятно, вы пишете его как jpeg –
@HumamHelfawi Plz проверьте код. – zindarod
Добро пожаловать в отличие от сжатия с потерями и без потерь. Сохраните как '.png' или другую технологию сжатия без потерь, чтобы получить 100% идентичные данные изображения. – Micka