代码如下所示:
minv = np.min(saliency_map)
maxv = np.max(saliency_map)
cscale = 255/(maxv-minv)
shift = -1*(minv)
dst = np.zeros(imgsize[1]*imgsize[0], dtype='uint8')
dst = cv2.convertScaleAbs(saliency_map,dst,cscale,shift/255.0)
cv2.imwrite(filename, dst)
Saliency_map是一个包含float32值的矩阵,所以我使用convertScaleAbs函数将矩阵转换为图像。但有些图像无法打开。 有人可以帮助我。感谢。
答案 0 :(得分:0)
首先,使用np.zeros实例化dst的行将不会产生所需的结果,因为您传递的形状只是一个数字,而不是(imgsize[1],imgsize[0])
事实上,它根本不需要(直接写dst = cv2.convertScaleAbs()
将起作用)
对于解决方案,您也可以使用一行生成uint8
矩阵。试试这个:
minv = np.min(saliency_map)
maxv = np.max(saliency_map)
u_img = np.array( (saliency_map-minv)/(maxv-minv)*255, dtype=np.uint8 )
cv2.imwrite('test.png', u_img)