我正在研究計算機視覺,我的影像如下所示:

我想識別紙巾上的黑線。我試過下面的代碼
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)
上面的代碼行給出:

如我們所見,現有模式占主導地位,難以識別線。如何丟棄真實模式并識別例外。
我確實在stackoverflow中嘗試了其他答案,但似乎沒有任何效果
uj5u.com熱心網友回復:
關于評論,我建議應用全域閾值cv2.threshold():
代碼:
img = cv2.imread(r'C:\Users\524316\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)
結果:

請注意突出顯示的黑線,而沒有其他模式受到影響。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479042.html
標籤:Python python-3.x opencv 计算机视觉 数学形态学
上一篇:如何根據類更改抓取蒙版中的顏色
