【问题标题】:OpenCv does not save images as it was constructed?OpenCv 在构建时不保存图像?
【发布时间】:2018-12-14 19:19:51
【问题描述】:

我正在尝试从像素数组 (numpy.ndarray) 中保存图像。假设我的像素数组是 myArray。当我在 Python 解释器中键入 myArray 时,它的值显示为:

array([[[154, 161, 156],
    [154, 161, 156],
    [154, 160, 156],
    ...,
    [152, 157, 156],
    [151, 156, 155],
    [150, 155, 154]],

   [[155, 161, 156],
    [155, 161, 156],
    [155, 161, 156],
    ...,
    [152, 157, 156],
    [151, 156, 155],
    [150, 155, 154]],

   [[155, 161, 156],
    [155, 161, 156],
    [155, 161, 156],
    ...,
    [152, 157, 156],
    [151, 156, 155],
    [150, 155, 154]],

   ...,

   [[187, 193, 188],
    [187, 193, 188],
    [187, 193, 188],
    ...,
    [189, 194, 193],
    [189, 194, 193],
    [189, 194, 193]],

   [[188, 194, 189],
    [188, 194, 189],
    [188, 194, 189],
    ...,
    [189, 194, 193],
    [189, 194, 193],
    [189, 194, 193]],

   [[188, 194, 189],
    [188, 194, 189],
    [188, 194, 189],
    ...,
    [189, 194, 193],
    [189, 194, 193],
    [189, 194, 193]]], dtype=uint8)

但是,当我使用cv2.imwrite('abc.jpg',myArray) 从这个数组创建一个新图像,然后使用cv2.imread('abc.jpg') 读取这个图像时,新数组看起来不同。它看起来像这样:

array([[[155, 161, 156],
    [155, 161, 156],
    [155, 161, 156],
    ...,
    [152, 157, 156],
    [151, 156, 155],
    [150, 155, 154]],

   [[155, 161, 156],
    [155, 161, 156],
    [155, 161, 156],
    ...,
    [152, 157, 156],
    [151, 156, 155],
    [150, 155, 154]],

   [[155, 161, 156],
    [155, 161, 156],
    [155, 161, 156],
    ...,
    [152, 157, 156],
    [151, 156, 155],
    [150, 155, 154]],

   ...,

   [[187, 193, 188],
    [187, 193, 188],
    [187, 193, 188],
    ...,
    [189, 194, 193],
    [189, 194, 193],
    [189, 194, 193]],

   [[188, 194, 189],
    [188, 194, 189],
    [188, 194, 189],
    ...,
    [189, 194, 193],
    [189, 194, 193],
    [189, 194, 193]],

   [[188, 194, 189],
    [188, 194, 189],
    [188, 194, 189],
    ...,
    [189, 194, 193],
    [189, 194, 193],
    [189, 194, 193]]], dtype=uint8)

知道为什么会这样吗?

【问题讨论】:

    标签: opencv image-processing pixel numpy-ndarray opencv-python


    【解决方案1】:

    这是因为 jpeg 数据压缩时的数据丢失。如果要无损保存,请将其保存为无损 png。

    JPEG (/ˈdʒeɪpɛɡ/ JAY-peg) 是一种常用的数字图像有损压缩方法,特别是对于那些由数码摄影产生的图像。

    【讨论】:

    • 谢谢。这就是我要找的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多