OpenCV удаляет профиль sRGB при имдекодировании изображения Python

Я читаю изображения, которые я извлекаю из Интернета, а затем сразу же читаю в OpenCV на python, как показано ниже:

# read in image as bytes from page
image = page.raw_stream.read()
frame = cv2.imdecode(np.asarray(bytearray(image)), 0)

и я получаю предупреждение libpng:

libpng warning: iCCP: known incorrect sRGB profile

Как я могу удалить профиль sRGB перед imread? Люди предлагают сделать это с помощью imagemagick в файлах png, прежде чем читать их, но для меня это невозможно. Нет ли способа сделать это напрямую в python?

РЕДАКТИРОВАТЬ:

Я не могу получить код в ответе ниже, чтобы решить мою проблему, если я запускаю его с файлом по адресу https://uploadfiles.io/m1w2l и используйте код:

import cv2
import numpy as np

with open('data/47.png', 'rb') as test:
   image = np.asarray(bytearray(test.read()), dtype="uint8")
   image = cv2.imdecode(image, cv2.IMREAD_COLOR)

получаю такое же предупреждение


person kabeersvohra    schedule 25.05.2018    source источник
comment
Можете ли вы загрузить один из этих файлов на диск, а затем прочитать его с помощью cv2.imread? Также опубликуйте ссылку на один из этих файлов.   -  person zindarod    schedule 25.05.2018
comment
Я делал это раньше, но это значительно замедляло код, который должен был сохранять и читать из файла с объемом изображений, которые я обрабатывал, вот один из файлов: imgur.com/a/3w21Mrh   -  person kabeersvohra    schedule 25.05.2018


Ответы (1)


Использование urllib:

import cv2
import urllib

resp = urllib.request.urlopen('https://i.imgur.com/QMPkIkZ.png')
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)

Использование skimage:

import cv2
from skimage import io

image = io.imread('https://i.imgur.com/QMPkIkZ.png')
image = cv2.cvtColor(image, cv2.COLOR_RGBA2BGRA)

Если вы получаете странное отображение с помощью OpenCV cv2.imshow, имейте в виду, что OpenCV не отображает альфа-каналы.

person zindarod    schedule 25.05.2018
comment
Спасибо за вашу помощь, однако я думаю, что imgur действительно исправляет sRGB на своем сервере. Не могли бы вы использовать этот файл для тестирования и код, которым я обновил вопрос: uploadfiles.io/m1w2l Спасибо! - person kabeersvohra; 25.05.2018