L L*_*iat 0 python opencv image-processing computer-vision scikit-image
我试图使该图像变薄,但它不断扭曲。
这是我应用细化的相关代码。我也尝试过“瘦”功能而不是“骨架化”,但结果相似。
from skimage.morphology import skeletonize, thin
new_im = cv2.imread(im_pth)
gray = cv2.cvtColor(new_im, cv2.COLOR_BGR2GRAY)
ske = (skeletonize(gray//255) * 255).astype(np.uint8)
cv2.imshow("image", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
我的目标是在细化后获得与此类似的形状:
我究竟做错了什么?我在网上读到,有时 jpg 文件会导致问题,但我没有该领域的经验来证实这一点。
我不确定您从输入图像到二进制的转换是否正确。这是一个使用 scikit-image 函数的版本,它似乎可以满足您的需求:
from skimage import img_as_float
from skimage import io, color, morphology
import matplotlib.pyplot as plt
image = img_as_float(color.rgb2gray(io.imread('char.png')))
image_binary = image < 0.5
out_skeletonize = morphology.skeletonize(image_binary)
out_thin = morphology.thin(image_binary)
f, (ax0, ax1, ax2) = plt.subplots(1, 3, figsize=(10, 3))
ax0.imshow(image, cmap='gray')
ax0.set_title('Input')
ax1.imshow(out_skeletonize, cmap='gray')
ax1.set_title('Skeletonize')
ax2.imshow(out_thin, cmap='gray')
ax2.set_title('Thin')
plt.savefig('/tmp/char_out.png')
plt.show()
Run Code Online (Sandbox Code Playgroud)