使用imwrite功能保存图像后,部分图像无法打开

时间:2017-06-08 16:19:47

标签: opencv computer-vision

代码如下所示:

    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函数将矩阵转换为图像。但有些图像无法打开。 有人可以帮助我。感谢。

1 个答案:

答案 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)