gpt4 book ai didi

python - scikit-image:使用 imsave 将 ndarray 写入图像,使用 imread 读回,数据不匹配

转载 作者:太空狗 更新时间:2023-10-30 00:34:15 24 4
gpt4 key购买 nike

这是最小的工作示例:

import numpy as np
from skimage.io import imsave, imread

image = np.array([[[109, 232, 173],
[ 55, 35, 144]],
[[ 43, 124, 185],
[234, 127, 246]]], dtype=np.uint8)

imsave("test.jpg", image)
rb_image = imread("test.jpg")
print("original image")
print(image)
print("read back image")
print(rb_image)

运行后结果是,从文件中读回的ndarray不匹配

original image
[[[109 232 173]
[ 55 35 144]]

[[ 43 124 185]
[234 127 246]]]
read back image
[[[111 208 255]
[ 42 61 138]]

[[ 72 140 201]
[141 131 218]]]

有人可以给我一些建议吗?

最佳答案

jpeg 是一种有损图像压缩算法,旨在通过去除人眼不易察觉的信息来减小文件大小。这意味着保存为 jpg 将节省一些磁盘空间,但会更改阵列的像素值。

您可以通过保存为无损 png 格式来避免该问题。以下代码段对我有用

import numpy as np
from skimage.io import imsave, imread

image = np.array([[[109, 232, 173],
[ 55, 35, 144]],
[[ 43, 124, 185],
[234, 127, 246]]], dtype=np.uint8)

imsave("test.png", image)
rb_image = imread("test.png")
print("original image")
print(image)
print("read back image")
print(rb_image)

这是结果

original image
[[[109 232 173]
[ 55 35 144]]

[[ 43 124 185]
[234 127 246]]]
read back image
[[[109 232 173]
[ 55 35 144]]

[[ 43 124 185]
[234 127 246]]]

关于python - scikit-image:使用 imsave 将 ndarray 写入图像,使用 imread 读回,数据不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47361966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com