【发布时间】:2019-01-09 14:05:54
【问题描述】:
我有一个来自 cv2.matchTemplate 的图像,它是浮点范围 -1,1:
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
res 的值如下: [[ 0.00730964 -0.00275442 -0.02477949 ... -0.16014284 -0.13686109 -0.13015044]
我可以看到模式匹配的灰度图:
cv2.imshow("Match", res)
但是我想在颜色图中看到,使用:
resC = cv2.applyColorMap(res, cv2.COLORMAP_JET)
使用它我会立即遇到以下问题: "cv::ColorMap 在函数'operator()'中只支持CV_8UC1或CV_8UC3类型的源图像"
所以我尝试了 skimage 转换:
from skimage import img_as_ubyte
res = img_as_ubyte(res)
或
from skimage import exposure
res = exposure.rescale_intensity(res, out_range=(0, 255))
有了它们,我得到如下输出: [[48 46 42 ... 14 19 20] [52 56 54 ... 22 28 30]
现在更好了,整数。但是,有些地方是错误的,因为我只得到(蓝色)单色颜色图,而不是来自 cv2.COLORMAP_JET 范围的漂亮颜色图。它似乎以某种方式发生了变化。
关于如何正确地将 -1,1 转换为 0,255 的任何提示?
【问题讨论】:
标签: numpy opencv scikit-image