Цвет становится тусклым: opencv cv2.cv2 imread.imwrite

Я использую модуль OpenCV для чтения и записи изображения. вот код, а ниже изображение, которое я читаю, и второе изображение после сохранения его на диске с помощью cv2.imwrite ().

import cv2

img = cv2.imread('originalImage.jpg')
cv2.imwrite('test.jpg',img)

original image

image saved using opencv

заметно, что цвета на втором изображении тусклые. Есть ли обходной путь к этой проблеме, или мне не хватает каких-то параметров настройки..?

3 ответов


разница в том, что начальное изображение (слева на диаграмме) имеет прикрепленный ICC-профиль, а второе (справа) - нет.

enter image description here

я получил вышеуказанное изображение, запустив ImageMagick программа identify такой:

identify -verbose first.jpg    > 1.txt
identify -verbose second.jpg   > 2.txt

тогда я побежал блестящий opendiff инструмент (который является частью macOS) такой:

opendiff [12].txt

вы можете извлечь ICC профиль с первого изображения также с ImageMagick такой:

convert first.jpg profile.icc

Я провел небольшое исследование по вопросу @mark, поднятому о профиле ICC. Я придумал способ справиться с этим в модуле python PIL. вот код, который сработал для меня. Я также научился использовать формат файла PNG, а не JPEG для преобразования без потерь.

import Image
img = Image.open('originalImage.jpg')
img.save('test.jpg',icc_profile=img.info.get('icc_profile'))

Я надеюсь, что это поможет другим.


ваше первое входное изображение имеет некоторый icc-профиль, связанный с метаданными, который является необязательным атрибутом, и большинство устройств не могут вводить его в первую очередь. Профиль ICC в основном выполняет своего рода цветокоррекцию, и коэффициенты коррекции вычисляются для каждого уникального устройства во время калибровки.

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

но, к сожалению, OpenCV не считывает конфигурацию ICC из метаданных изображения для выполнения любой цветовой коррекции.