【发布时间】: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