0
我試圖使用dialation和ertion腐蝕和膨脹返回白色
例如,像這樣:
dialated = cv2.dilate(edgesCopy, cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3)), iterations = 1)
的輸入是僅具有在0和255值的UINT8圖像,出來的
threshold, thresholdedEdges = cv2.threshold(edges, 220, 255, cv2.THRESH_BINARY_INV);
然而,輸出只是一個白色的圖像。我不明白原因。
整個代碼是
imageSize = img.shape
if len(imageSize) != 2:#color
print "got a color image - quitting"
return
cv2.imshow("im1", img)
cv2.moveWindow("im1", 60, 50)
gaussianBlur = cv2.GaussianBlur(img, (5, 5), 0)
# cv2.imshow("gaussianBlur", gaussianBlur)
# cv2.moveWindow("gaussianBlur", 260, 50)
medianBlur = cv2.medianBlur(gaussianBlur, 5)
# cv2.imshow("medianBlur", medianBlur)
# cv2.moveWindow("medianBlur", 460, 50)
minGradientValueThreshold = 225
maxGradientValueThreshold = 150
edges = cv2.Canny(medianBlur, minGradientValueThreshold, maxGradientValueThreshold)
cv2.imshow("edges", edges)
cv2.moveWindow("edges", 660, 50)
# Threshold.
# Set values equal to or above 220 to 0.
# Set values below 220 to 255.
threshold, thresholdedEdges = cv2.threshold(edges, 220, 1, cv2.THRESH_BINARY_INV);
edgesCopy = thresholdedEdges.copy()
#close the edges before floodfilling, to avoid filing the background
# closing = cv2.morphologyEx(floodFilledImage, cv2.MORPH_CLOSE, cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))) DOESN'T WORK
dialated = cv2.dilate(edgesCopy, cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3)), iterations = 1)
cv2.imshow("dialated", dialated)
cv2.moveWindow("dialated", 60, 250)
eroded = cv2.erode(dialated, cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3)), iterations = 1)
closing = eroded
cv2.imshow("closing", closing)
cv2.moveWindow("closing", 60, 250)
請問爲什麼用不同的濾鏡將圖像模糊兩次? – PSchn