Mae*_*all 2 python opencv numpy
我知道这个问题很简单,但我没有找到如何绕过这个问题:
我正在处理图像,输出像素是float32,值在范围内[-1; 1].问题是,当使用openCV保存时,所有负数据和浮点值都会丢失(我只获得0或1值的图像)
所以我需要将这些图像转换为[0; 255] (Int8)
我试过了
img * 255,但这样做对负值没有帮助. (img + 1) * 255,我正在删除负值,但我正在创建一个溢出有(干净的)方法吗?
我正在使用Python35,OpenCV2和Numpy,但我认为它更像是数学问题而不是库事物
正如您所发现的那样,img * 255为您提供结果范围 [-255:255],并(img + 1) * 255为您提供结果[0:510].你走在正确的轨道上.
你需要的是:int((img + 1) * 255 / 2)或round((img + 1) * 255 / 2).这从改变输入[-1:1]到[0:2]再乘以127.5得到[0.0:255.0].
使用int()将实际导致[0:254]
您可以使用 cv2.normalize()
考虑以下数组a:
a = np.array([[-0.12547205, -1. ],
[ 0.49696118, 0.91790167],
[ 0.81638017, 1. ]])
norm_image = cv2.normalize(image, None, alpha = 0, beta = 255, norm_type = cv2.NORM_MINMAX, dtype = cv2.CV_32F)
norm_image.astype(np.uint8)
Run Code Online (Sandbox Code Playgroud)
norm_image 返回以下数组:
array([[111, 0],
[190, 244],
[231, 255]], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)
在此示例中:
-1 将被映射到 01 将被mpmp到 255注意事项:
floatalpha和中beta。| 归档时间: |
|
| 查看次数: |
6026 次 |
| 最近记录: |