Проблемы с сохранением изображений в Python
Я экспериментирую со слиянием изображений Астрофотографии в Python. В настоящее время у меня есть проблема, что при экспорте изображения из разных библиотек изображение имеет другой цветовой тон, чем оригинал. Импортированное изображение в формате.nef.
Код:
import matplotlib.pyplot as plt
import numpy as np
import cv2
from scipy import misc
import rawpy
from PIL import Image
import imageio
raw=rawpy.imread("DSC_5817.NEF")
#raw=rawpy.imread("images/1/slika1.cr2")
rgb=raw.postprocess(no_auto_bright=True)
outfn=".tif"
img=Image.fromarray(rgb)
img.convert("RGB")
img.save("probaPIL"+outfn)
#
cv2.imwrite("progaCV2"+outfn, rgb)
misc.imsave("probaSCipi"+outfn, rgb)
#
imageio.imsave("probaIMAGEIO"+outfn, rgb)
plt.imsave("probaPLT.tif",rgb )
slika=plt.imread("probaPIL.tif")
Скриншот вывода (верхнее среднее изображение - оригинальный файл nef)
1 ответ
OpenCV (cv2
) ожидает другого порядка каналов (BGR), поэтому цвета в этом отключены по сравнению с остальными.
В общем, нет единого способа постобработки изображения с камеры RAW, и результат часто зависит от личных предпочтений, например, баланса белого, регулировки яркости и т. Д. То, что вы называете "оригиналом" в верхней средней колонке, - это просто еще один вариант постобработки, созданный, вероятно, каким-то драйвером Nikon, который больше знает об определенных метаданных в файле изображения RAW и пытается дать вам то, что вы "ожидаете". rawpy
(или, скорее, основной libraw
библиотека) не воспроизводит точное поведение постобработки производителя, потому что это более или менее коммерческая тайна.
Для астрофотографии вы, вероятно, в любом случае хороши с полутоновым изображением, но это действительно зависит от вашего варианта использования и того, чего вы хотите достичь.