图像解码时 OpenCV 剥离 sRGB 配置文件 Python
OpenCV strip sRGB profile when imdecode image Python
我正在阅读从互联网上获取的图像,然后立即在 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 配置文件?人们建议在阅读 png 文件之前通过 imagemagick 来执行此操作,但这对我来说是不可能的。有没有办法直接在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)
我收到同样的警告
使用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 不显示 alpha 通道。
我正在阅读从互联网上获取的图像,然后立即在 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 配置文件?人们建议在阅读 png 文件之前通过 imagemagick 来执行此操作,但这对我来说是不可能的。有没有办法直接在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)
我收到同样的警告
使用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 不显示 alpha 通道。