如何使用cv2保存二进制图像(使用dtype = bool)?
问题描述:
我在Python中使用opencv,并且想要保存一个二进制图像(dtype = bool)。如果我只是用我cv2.imwrite得到以下错误:如何使用cv2保存二进制图像(使用dtype = bool)?
TypeError: image data type = 0 is not supported
有人可以帮助我?该图像基本上应该稍后用作掩码。
答
否OpenCV
不期望二进制图像格式为布尔ndarray。 OpenCV
仅支持np.uint8
,np.float32
,np.float64
,由于OpenCV更像是一个图像操作库,因此当您想到RGB
或灰度格式时,带有布尔值的图像是没有意义的。
最紧凑的数据类型来存储二进制矩阵是uchar
或dtype=np.uint8
,所以你需要,而不是使用这个数据类型的np.bool
。
答
将二进制图像转换为'uint8'数据类型。
试试这个:
>>> binary_image.dtype='uint8'
>>> cv2.imwrite('image.png', binary_image)
答
ndarray.astype('bool')
看到这个页面可以帮助:
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.astype.html