当imdecode图像Python时,OpenCV剥离sRGB配置文件

时间:2018-05-25 11:40:35

标签: python-3.x opencv image-processing libpng srgb

我正在阅读我从互联网上获取的图像,然后立即在python中读入OpenCV,如下所示:

# 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

如何在imread之前删除sRGB配置文件?人们建议在阅读之前通过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)

我收到同样的警告

1 个答案:

答案 0 :(得分:2)

使用 lists.stream().reduce((a, b) -> a.size()>b.size()? a:b).ifPresent((a)-> System.out.println(a.size()));

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

如果您使用OpenCV import cv2 from skimage import io image = io.imread('https://i.imgur.com/QMPkIkZ.png') image = cv2.cvtColor(image, cv2.COLOR_RGBA2BGRA) 获得奇怪的显示,请记住OpenCV不显示Alpha通道。