【问题标题】:Unable to Process an image transformed in OpenCV via scikit-image无法处理通过 scikit-image 在 OpenCV 中转换的图像
【发布时间】:2016-07-11 13:40:26
【问题描述】:

我想使用 scikit-image 模块对图像进行骨架化。此图像由 OpenCV 库进行预处理。给定一个图像“Feb_16-0.jpg”,我将其转换为灰度,执行打开图像的形态变换,然后使用 OpenCV 和 Python 应用高斯模糊和自适应阈值:

import cv2
import numpy as np
from matplotlib import pyplot as plt
from skimage.morphology import skeletonize
from skimage.viewer import ImageViewer
img = cv2.imread('Feb_16-0.jpg',0)
kernel = np.ones((1,1),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
blur = cv2.GaussianBlur(opening,(1,1),0)
ret3,th4 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

我现在想使用 scikit-image skimage.morphology.skeletonize 对图像进行骨架化。我尝试编写代码来执行腐蚀和膨胀,以使用 OpenCV 和 Python 手动骨架化图像。但是,这被证明是一个非常低效的处理,所以我决定在这一点上切换到 scikit-image 库。但是,当我使用代码将 OpenCV 预处理的 numpy 数组传递给 scikit-image 模块时:

skel = skeletonize(th4)

并尝试查看相同的结果,我最终得到错误:

Image contains values other than 0 and 1

我无法解释原因。谁能帮我解决这个数据类型错误?

【问题讨论】:

    标签: python image opencv preprocessor scikit-image


    【解决方案1】:

    skeletonize() 的输入矩阵需要以 0/1 或 True/False 作为条目的二进制。 cv2.threshold() 的输出是二进制的,但值为 0/255。要将 th4 矩阵转换为 0/1 形式,您可以执行以下操作:

    th4[th4 == 255] = 1

    【讨论】:

    • 您好,感谢您的友好建议。但是,我在二值化输入 th4 而不是 img 上得到了类似的错误。 th4 是阈值二值化图像。
    • 似乎 cv2.treshold() 返回一个数组,其中 255 为白色,0 为黑色。您可以转换 th4 矩阵。我会编辑我的帖子
    【解决方案2】:

    请看下面的代码是否有效。

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    from skimage.morphology import skeletonize
    from skimage.viewer import ImageViewer
    img = cv2.imread('Feb_16-0.jpg',0)
    kernel = np.ones((1,1),np.uint8)
    opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
    blur = cv2.GaussianBlur(opening,(1,1),0)
    ret3,th4 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    th4[th4 == 255] = 1
    skel = skeletonize(th4)
    viewer = ImageViewer(skel)
    viewer.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 2021-02-24
      相关资源
      最近更新 更多