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

Opencv 使用imwrite功能保存图像后,部分图像无法打开,opencv,computer-vision,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)

代码如下所示:

    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)
显著性映射是一个包含float32值的矩阵,因此我使用convertScaleAbs函数将矩阵转换为图像。但有些图像无法打开。
有人可以帮我。谢谢。

首先,使用np.zero实例化dst的行不会产生所需的结果,因为您传递的形状只是一个数字,而不是
(imgsize[1],imgsize[0])
事实上,根本不需要它(直接编写
dst=cv2.convertScaleAbs()
就可以了)

至于解决方案,您也可以用一行生成
uint8
矩阵。试试这个:


minv=np.min(显著性图)
maxv=np.max(显著性映射)
u_img=np.array((显著性映射-minv)/(最大最小值)*255,dtype=np.uint8)
cv2.imwrite('test.png',u_img)

谢谢。我用你的方法修复它。