Matplotlib показывает мое изображение, но cv2.imwrite() просто сохраняет черноту ⇐ Python
-
Гость
Matplotlib показывает мое изображение, но cv2.imwrite() просто сохраняет черноту
После преобразования исходного файла *.jpg с использованием метода «эталонного белого цвета» (идея взята отсюда)
def whitepatch_balancing(image, from_row, from_column, row_width, columns_width): рис, топор = plt.subplots(1,2, figsize=(10,5)) топор[0].imshow(изображение) ax[0].add_patch(Круг((from_column, from_row), ширина линии = 3, Edgecolor='r', facecolor='none')); ax[0].set_title('Исходное изображение') image_patch = изображение[from_row:from_row+row_width, from_column:from_column+column_width] image_max = (image*1.0 / image_patch.max(axis=(0, 1))).clip(0, 1) топор [1].imshow(image_max); ax[1].set_title('Изображение со балансом белого с МАКСИМАЛЬНЫМ значением белого') plt.show() вернуть изображение_макс если __name__ == '__main__': изображение = imread('img.jpg') Balance_img = whitepatch_balancing (изображение, 60, 1230, 20, 20) если бы исходное изображение (в формате RGB) выглядело так: [[[131 152 205], [120 143 195], ..., [135 150 191]]]
тогда результирующий массив после преобразования выглядит примерно так: [[[0.99242424 0.98701299 1. ], [0.90909091 0.92857143 1. ], ..., [0.84090909 0.64285714 0.21025641]]]
используя matplotlib.pyplot в качестве plt, вы можете отобразить картинку и увидеть, что произошла цветокоррекция исходного и преобразованного изображения
но если попытаться сохранить преобразованный массив в файл *.jpeg или *.png - получим просто черную картинку (все значения пикселей меньше единицы)
как можно правильно сохранить полученный результат (преобразованное изображение) в файл?
После преобразования исходного файла *.jpg с использованием метода «эталонного белого цвета» (идея взята отсюда)
def whitepatch_balancing(image, from_row, from_column, row_width, columns_width): рис, топор = plt.subplots(1,2, figsize=(10,5)) топор[0].imshow(изображение) ax[0].add_patch(Круг((from_column, from_row), ширина линии = 3, Edgecolor='r', facecolor='none')); ax[0].set_title('Исходное изображение') image_patch = изображение[from_row:from_row+row_width, from_column:from_column+column_width] image_max = (image*1.0 / image_patch.max(axis=(0, 1))).clip(0, 1) топор [1].imshow(image_max); ax[1].set_title('Изображение со балансом белого с МАКСИМАЛЬНЫМ значением белого') plt.show() вернуть изображение_макс если __name__ == '__main__': изображение = imread('img.jpg') Balance_img = whitepatch_balancing (изображение, 60, 1230, 20, 20) если бы исходное изображение (в формате RGB) выглядело так: [[[131 152 205], [120 143 195], ..., [135 150 191]]]
тогда результирующий массив после преобразования выглядит примерно так: [[[0.99242424 0.98701299 1. ], [0.90909091 0.92857143 1. ], ..., [0.84090909 0.64285714 0.21025641]]]
используя matplotlib.pyplot в качестве plt, вы можете отобразить картинку и увидеть, что произошла цветокоррекция исходного и преобразованного изображения
но если попытаться сохранить преобразованный массив в файл *.jpeg или *.png - получим просто черную картинку (все значения пикселей меньше единицы)
как можно правильно сохранить полученный результат (преобразованное изображение) в файл?
Мобильная версия