Почему cv2.imencode('jpg', ...) похоже, меняет цвет изображения?Python

Программы на Python
Ответить
Anonymous
 Почему cv2.imencode('jpg', ...) похоже, меняет цвет изображения?

Сообщение Anonymous »

Я создаю и просматриваю случайное изображение. Затем это изображение кодируется в файл jpg с помощью opencv. Однако после расшифровки этого изображения цвета немного изменились. Такое поведение не наблюдается при использовании PNG для кодирования. Может ли кто-нибудь объяснить, почему это происходит? Это отрицательный результат сжатия JPEG? Я делаю что-то не так? Пример кода ниже, чтобы воссоздать это.

Код: Выделить всё

import cv2
import numpy as np

random_image = np.random.randint(255, size=(4,4,3), dtype=np.uint8)
cv2.imshow('Image', random_image)
cv2.waitKey()

_, img_encoded = cv2.imencode('.jpg', random_image)
img_string = img_encoded.tostring()
npimg = np.fromstring(img_string, dtype=np.uint8)
img = cv2.imdecode(npimg, 1)
cv2.imshow('Image', img)
cv2.waitKey()

# Does not happen with png
_, img_encoded = cv2.imencode('.png', random_image)
img_string = img_encoded.tostring()
npimg = np.fromstring(img_string, dtype=np.uint8)
img = cv2.imdecode(npimg, 1)
cv2.imshow('Image', img)
cv2.waitKey()

Отредактировано, добавлено несколько изображений размером 4 x 4.
Исходное:
Изображение

JPG
Изображение

PNG

Повторно отредактировано с использованием изображений 512x512
Оригинал 512x512
JPG 512x512
PNG 512x512

Подробнее здесь: https://stackoverflow.com/questions/643 ... f-an-image
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»