小编dpe*_*ini的帖子

将带符号的float转换为uint8图像opencv

我有一个来自cv2.matchTemplate的图像,其浮动范围为-1,1:

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
Run Code Online (Sandbox Code Playgroud)

res的值例如:[[0.00730964 -0.00275442 -0.02477949 ... -0.16014284 -0.13686109 -0.13015044]

我可以看到模式匹配的graycale图:

cv2.imshow("Match", res)
Run Code Online (Sandbox Code Playgroud)

但是我想在颜色图中使用:

resC = cv2.applyColorMap(res, cv2.COLORMAP_JET)
Run Code Online (Sandbox Code Playgroud)

使用此方法,我立即遇到类似问题:“ cv :: ColorMap在函数'operator()'中仅支持CV_8UC1或CV_8UC3类型的源图像”

所以我尝试skimage转换:

from skimage import img_as_ubyte
res = img_as_ubyte(res)
Run Code Online (Sandbox Code Playgroud)

要么

from skimage import exposure
res = exposure.rescale_intensity(res, out_range=(0, 255))
Run Code Online (Sandbox Code Playgroud)

有了它们,我得到如下输出:[[48 46 42 ... 14 19 20] [52 56 54 ... 22 28 30]

现在更好,整数。但是,出了点问题,因为我只得到了(蓝色)单色色图,而不是cv2.COLORMAP_JET范围中的漂亮色图。似乎有所改变。

关于如何正确地从-1,1转换为0,255的任何提示?

opencv numpy scikit-image

1
推荐指数
1
解决办法
4335
查看次数

标签 统计

numpy ×1

opencv ×1

scikit-image ×1