擅长:python、mysql、java
<p>错误的异常消息是错误的</p>
<p><code>cv2.imshow</code>不处理二进制数组。根据<a href="https://stackoverflow.com/a/48333272/3220135">this</a>答案,可接受的类型为<code>uint8</code>、<code>uint16</code>、<code>int</code>、<code>float</code>和<code>double</code></p>
<p>您应该能够使用以下命令将数组转换为<code>uint8</code>:</p>
<pre><code>skeleton.astype('u1')
</code></pre>
<p>这将给您留下介于0和1之间的值,这些值都非常暗。如果将数组乘以255,则颜色应为预期的黑色和白色:</p>
<pre><code>skeleton.astype('u1') * 255
</code></pre>
<p>来自skimage的数据图像的完整示例:</p>
<pre><code>from cv2 import cv2
from skimage.filters import threshold_otsu
from skimage.morphology import skeletonize
from skimage.util import invert
from skimage.data import camera
img = camera()
binary = img > threshold_otsu(img)
skeleton = skeletonize(invert(binary))
cv2.imshow('original', img)
cv2.imshow('skeleton', skeleton.astype('u1')*255)
cv2.waitKey(0)
cv2.destroyAllWindows()
</code></pre>