【问题标题】:How to convert power law transformed array to image?如何将幂律变换数组转换为图像?
【发布时间】:2021-05-16 05:00:41
【问题描述】:

我正在尝试将修改后的图像数组转换为实际图像(换句话说,将其写入/提取)。我在 stackoverflow 上搜索了很多,但找不到解决方案。

我正在使用 Python 3,带有 cv2

这是我尝试过的:

import cv2
import numpy as np
 
im = cv2.imread('Trendy_Funny_Saying_1.jpg')
im = im/255.0
im_power_law_transformation = cv2.pow(im, 1.6) # THIS ONE SHOULD BE WROTE TO A NEW IMAGE
npa = np.asarray(im_power_law_transformation, dtype=np.float32)
cv2.imwrite('modified.jpg', npa)

每次我得到的唯一结果是黑色图像,这不是我想要的,我的代码仍然有问题。

请帮忙,我将非常感激。

【问题讨论】:

    标签: python python-3.x opencv computer-vision


    【解决方案1】:

    如果您读取 JPEG,您将获得 0..255 范围内的整数,当您除以 255.0 时,这些整数将变为 0..1 范围内的浮点数

    如果你将它们提高到 1.6 次方,你的浮点数将在 0..1 范围内。

    您不能将浮点数写入 JPEG,因此您有两种选择:

    • 写入可以存储浮点数的 TIFF,即cv2.imwrite('result.tif', npa),或

    • 转换为 0..255 范围内的整数并保存为 JPEG,即cv2.imwrite('result.jpg', (npa*255).astype(np.uint8))

    一般来说,最好在写入之前检查dtype 和图像数据的范围,即

    print(npa.dtype, npa.min(), npa.max())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-21
      • 2023-03-17
      • 2011-04-17
      • 2010-09-27
      • 2011-12-07
      • 2021-08-08
      • 2011-06-01
      相关资源
      最近更新 更多