python - 如何在两个值之间使用 CV2 标准化图像?
问题描述
我目前正在尝试标准化我从带有 cv2 的深度相机接收到的深度图像。
我已经尝试了以下方法:我使用这行代码将收到的图像标准化为 0 和 1 之间的值:
cv2.normalize(depth_array, depth_array, 0, 1, cv2.NORM_MINMAX)
这种归一化的问题是我的深度图像没有在两个设定值之间归一化,而是在我的 depth_array 的最大值和最小值之间归一化,这导致最近的物体总是黑色的。
我想改变它在两个设定值之间的标准化,比如 [0 8] -> [0 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);
推荐阅读
- vb.net - 为修订表中的列设置列属性
- python - Conda 导出提供无用的 .yml 文件
- twitter - Twitter API 的 URL 参数丢失或无效
- python - docker容器中的python代码如何访问外部oracle数据库?
- javascript - React useEffect 中的间隔 - 将其存储在 useRef Hook 中以保留值超时警告
- c# - 如何从数据库中提取数据并显示在下拉列表中
- python - 如何计算具有相同索引的元素?
- php - 通过链接发送当前变量值
- python - 为什么我的 for 在 python 中循环索引没有给我正确的输出
- reactjs - 如何在 React 组件上正确初始化 jQuery 模块?