如何使用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或灰度格式时,带有布尔值的图像是没有意义的。

最紧凑的数据类型来存储二进制矩阵是uchardtype=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