在丢弃图案的白色图像上识别 lines/dots
Identify lines/dots on white image discarding the patterns
我正在研究计算机视觉,我有一张如下图所示的图像:
我想识别纸巾上的黑线。我试过下面的代码
import cv2
img = cv2.imread('image.png')
# convert img to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# do morphology gradient
kernel = cv2.getStructuringElement(cv2.MORPH_RECT , (3,3))
morph = cv2.morphologyEx(gray, cv2.MORPH_GRADIENT, kernel)
# apply gain
morph = cv2.multiply(morph, 10)
morph=cv2.resize(morph, (1000, 552))
imgStack = stackImages(0.5, ([img ], [morph]))
cv2.imshow('Stacked Images', imgStack)
cv2.waitKey(0)
以上代码行给出:
正如我们所见,现有模式占主导地位,很难识别这条线。如何丢弃真实模式并识别异常。
我确实尝试了 Whosebug 中的其他答案,但似乎没有任何效果
参考评论,我建议应用全局阈值 cv2.threshold()
:
代码:
img = cv2.imread(r'C:\Users4316\Desktop\Stack\tissue.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
threshold_value = 20
th = cv2.threshold(gray, threshold_value, 255, cv2.THRESH_BINARY_INV)[1]
cv2.imshow(cv2.hconcat([gray, th]))
cv2.waitKey(0)
结果:
注意黑线突出显示,而没有其他图案受到影响。
我正在研究计算机视觉,我有一张如下图所示的图像:
我想识别纸巾上的黑线。我试过下面的代码
import cv2
img = cv2.imread('image.png')
# convert img to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# do morphology gradient
kernel = cv2.getStructuringElement(cv2.MORPH_RECT , (3,3))
morph = cv2.morphologyEx(gray, cv2.MORPH_GRADIENT, kernel)
# apply gain
morph = cv2.multiply(morph, 10)
morph=cv2.resize(morph, (1000, 552))
imgStack = stackImages(0.5, ([img ], [morph]))
cv2.imshow('Stacked Images', imgStack)
cv2.waitKey(0)
以上代码行给出:
正如我们所见,现有模式占主导地位,很难识别这条线。如何丢弃真实模式并识别异常。
我确实尝试了 Whosebug 中的其他答案,但似乎没有任何效果
参考评论,我建议应用全局阈值 cv2.threshold()
:
代码:
img = cv2.imread(r'C:\Users4316\Desktop\Stack\tissue.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
threshold_value = 20
th = cv2.threshold(gray, threshold_value, 255, cv2.THRESH_BINARY_INV)[1]
cv2.imshow(cv2.hconcat([gray, th]))
cv2.waitKey(0)
结果:
注意黑线突出显示,而没有其他图案受到影响。