先上代码
img*=250.0
img = img.astype(np.uint8)
一、问题描述
cv2.imshow()能显示图像,但cv2.imwrite()保存的图片是近乎全黑的imwrite()
print(img),部分截图如下
查看图片数组的 数据类型
。
print(img.dtype)
现在的格式是float32,本应该要是0-255的整数才行,使用cv2.imwrite()
保存能正常cv.imshow
的图像是近乎全黑的,然后我后面处理完的图像都错乱了,
找了好久也没找到合适的答案,可能是我太菜了,这种小问题没人在意。。。
最后看了uint8转float之后发现就是把0-255的整数转成1/255倍的0-1浮点数,于是我按照这种思路把代码改了一下,原代码在哪看的忘了,在一段代码里面发现的两行,懒得贴了。
二、解决方法
转换一下图片数组的数据类型就好了,float[0.0 - 1.0]
数据格式的图片img*255.0
,再转成uint8[0-255]
代码(python):
img*=250.0
img = img.astype(np.uint8)
看一下结果
//查看数据类型
print(img.dtype)
//图片是否是cv2格式
print("cv2? ",isinstance(img,np.ndarray))
后续的处理也正常了,最后正常显示处理结果。