使用OpenCV无法将bool型np.array转为uint8并正常保存图像
问题原因与解决办法
- 问题本质:将图像转为
bool类型时,原图像中所有非0像素都会被转为True(对应数值1),0像素转为False(对应数值0)。当转回uint8类型后,1这个值在0-255的像素取值范围内几乎等同于纯黑,所以保存后的图像显示为全黑。 - 修复方案:转回
uint8类型后,将代表True的1值放大为255(这是uint8类型中白色的对应值),才能正确还原原图像的黑白对比。
修正后的代码:
import cv2 R = cv2.imread('R.png') R = R.astype(dtype=bool) # 将布尔值映射为uint8的黑白像素值 R = R.astype(dtype='uint8') * 255 cv2.imwrite('rr.png', R)
内容的提问来源于stack exchange,提问作者InterestingPenguin80
相关产品推荐
相关产品推荐

