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)
谢谢。我用你的方法修复它。