我在python中使用opencv并想保存一个二进制图像(dtype = bool)。如果仅使用cv2.imwrite,则会出现以下错误:
TypeError: image data type = 0 is not supported
Run Code Online (Sandbox Code Playgroud)
有人可以帮我弄这个吗?该图像基本上应该稍后用作遮罩。
您可以使用此:
cv2.imwrite('mask.png', maskimg * 255)
Run Code Online (Sandbox Code Playgroud)
因此,这会将其隐式转换为整数,为给出0,为给出False1 True,然后将其乘以255以在写入之前进行(位)掩码。OpenCV相当宽容,可以写入int648位深度的uint16图像(例如,具有16位深度的图像)。该操作未就地完成,因此您仍可以maskimg用于索引等。
NoOpenCV不期望布尔 ndarray 格式的二进制图像。OpenCV仅支持np.uint8, np.float32, np.float64, 由于 OpenCV 更多的是一个图像处理库,因此当您想到RGB或 灰度格式时,具有布尔值的图像没有任何意义。
存储二进制矩阵最紧凑的数据类型是ucharor dtype=np.uint8,因此您需要使用此数据类型而不是np.bool。
| 归档时间: |
|
| 查看次数: |
8125 次 |
| 最近记录: |