使用imwrite函数保存图片后,部分图片打不开
After using imwrite function to save image, some of images cannot open
代码如下:
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 函数将矩阵转换为图像。但是有些图片打不开。
有人可以帮助我。谢谢
首先,您使用 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)
代码如下:
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 函数将矩阵转换为图像。但是有些图片打不开。 有人可以帮助我。谢谢
首先,您使用 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)