上面代码发生了这个错误:错误使用 imbinarize I 应为以下类型之一: uint8, uint16, uint32, int8, int16, int32, single, double 但其类型为 logical。
时间: 2023-08-06 15:02:49 浏览: 429
这个错误的原因是 `imbinarize` 函数要求输入图像的数据类型必须是 `uint8`、`uint16`、`uint32`、`int8`、`int16`、`int32`、`single` 或 `double` 类型,而你输入的图像数据类型是逻辑型,也就是 `logical` 类型。
解决方案是将输入图像的数据类型转换为 `uint8`、`uint16``、`uint32`、`int8`、`int16`、`int32`、`single` 或 `double` 类型,比如可以使用下面的代码将逻辑型图像转换为 `uint8` 类型:
```
im = uint8(im); % 将逻辑型图像转换为 uint8 类型
bw = imbinarize(im); % 对 uint8 类型的图像进行二值化处理
```
或者使用 `logical` 类型的图像进行二值化处理,而不使用 `imbinarize` 函数:
```
bw = im > graythresh(im); % 对逻辑型图像进行二值化处理
```
相关问题
错误使用 imbinarize I 应为以下类型之一: uint8, uint16, uint32, int8, int16, int32, single, double 但其类型为 logical。
这个错误是因为 `imbinarize` 函数的输入图像必须是以下类型之一:`uint8`, `uint16`, `uint32`, `int8`, `int16`, `int32`, `single`, `double`。但是,您的输入图像是逻辑类型(`logical`),因此会出现此错误。
要解决此问题,您可以将逻辑类型的图像转换为 `uint8` 类型,然后再将其传递给 `imbinarize` 函数。可以使用 `uint8` 函数进行转换,如下所示:
```matlab
bw = imbinarize(uint8(gray));
```
这将逻辑类型的图像转换为 `uint8` 类型,并使 `imbinarize` 函数可以正确处理它。
错误使用 imbinarize 需要的 I 应为以下类型之一: uint8, uint16, uint32, int8, int16, int32, single, double 但其类型是 logical。
这个错误的意思是:在使用 imbinarize 函数时,需要输入的图像类型应该是 uint8、uint16、uint32、int8、int16、int32、single 或 double 类型的图像,但是你输入的图像类型是 logical 类型的图像。这是因为 imbinarize 函数只支持这些数据类型,如果你的图像类型不是这些类型之一,就会出现这个错误。你可以使用其他函数将 logical 类型的图像转换成支持的数据类型,然后再使用 imbinarize 函数。
阅读全文