如何从图像中提取模糊线条(木纹)

2024-06-10 21:08:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我正在处理的扫描图像original image。其想法是只提取木纹作为暗线,而其他所有东西都将成为图像中的白色背景

我试着使用OpenCV,但结果远不理想。如何提取这些行

original

在这里,我标记了图像,以说明我正在寻找的线条:

result

以下是我尝试的步骤:

1-将图像转换为灰度:

grayImage = cv2.cvtColor(crop_image, cv2.COLOR_BGR2GRAY)

grayscale

2-将灰度图像转换为黑白:

 (thresh, blackAndWhiteImage) = cv2.threshold(grayImage, 160, 255, cv2.THRESH_BINARY)

black and white

3-黑白图像看起来不太好。所以我做了一个扩张器:

 kernel = np.ones((5,5),np.uint8)
 dilation = cv2.dilate(blackAndWhiteImage,kernel,iterations = 1)

dilated

我也尝试了不同的阈值,但它们并没有让事情变得更好。使用ADAPTIVE_THRESH_MEAN_CADAPTIVE_THRESH_GAUSSIAN_C会使情况更糟

更新:我现在有了一个想法。我想我需要编写代码,根据放大的图像“画线”。仅使用现有库(如OpenCV)并不能完全满足我的要求。如果我错了,请告诉我。非常感谢


Tags: 图像imagenpcv2kernelopencv灰度original