【问题标题】:How can I normalise an image with CV2 between two values?如何在两个值之间使用 CV2 标准化图像?
【发布时间】:2021-02-15 11:34:43
【问题描述】:

我目前正在尝试使用 cv2 对从深度相机接收到的深度图像进行归一化。

我已经尝试了以下方法:我使用这行代码将收到的图像标准化为 0 和 1 之间的值:

 cv2.normalize(depth_array, depth_array, 0, 1, cv2.NORM_MINMAX)

这种归一化的问题是我的深度图像没有在两个设定值之间归一化,而是在我的 depth_array 的最大值和最小值之间归一化,这导致最近的物体总是黑色的。

我想改变它在两个设定值之间的标准化,例如 [0 8] -> [0 1]。 谷歌搜索时,我没有找到任何可以做我想做的事情。 有没有办法在两个设定值之间对图像进行归一化?

【问题讨论】:

标签: python opencv


【解决方案1】:

重构通常具有这种结构:

# linear reframe [min1, max1] -> [min2, max2]
def reframe(value, min1, max1, min2, max2):
    value -= min1;
    value /= (max1 - min1);
    value *= (max2 - min2);
    value += min2;
    return value;

使用它,我们可以看到我们需要对整个图像执行哪些操作才能使其正常工作。 假设我们从 [low, high] -> [0, 1] 出发,我们可以看到我们只需要从整个图像中减去“low”,然后将其全部除以 (high - low)。这种类型的重构也会外推。

import cv2
import numpy as np

# load images
img = cv2.imread("one.png");

# convert type to float
img = img.astype(np.float32);

# reframe
low = 100;
high = 200;
img -= low;
img /= (high - low);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多