腐蚀和膨胀后,为什么绘制轮廓在图像中不起作用?

时间:2019-01-29 08:43:56

标签: python numpy opencv image-processing contour

我有头像。我要去哪

  1. 转换为灰度
  2. 然后转换为二进制
  3. 然后我使用形态学腐蚀术。
  4. 然后我使用形态学扩张运算。

现在,作为最后一个过程,我试图找出轮廓并绘制它们。但是,也可以找到并绘制轮廓,但是,轮廓只能以白色绘制,因此看起来根本没有绘制轮廓。我在做什么错??

这是我的代码:

import numpy as np
import cv2


img = cv2.imread("Test1.jpg")
image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("GrayScaled", image)
cv2.waitKey(0)

ret, thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY_INV)
cv2.imshow("Black&White", thresh)
cv2.waitKey(0)

kernel1 = np.ones((2,2),np.uint8)
erosion = cv2.erode(thresh,kernel1,iterations = 4)
cv2.imshow("AfterErosion", erosion)
cv2.waitKey(0)

kernel2 = np.ones((1,1),np.uint8)
dilation = cv2.dilate(erosion,kernel2,iterations = 5)
cv2.imshow("AfterDilation", dilation)
cv2.waitKey(0)

contours, hierarchy = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(dilation, contours, -1, (255, 0, 0), 2)
cv2.imshow("Contours", dilation)
cv2.waitKey(0)

cv2.destroyAllWindows()

以下是逐步显示的图片:

原始图片:

Original Image

灰度图像:

GrayScaled

二进制图像:

Binary

侵蚀后:

Erosion

扩张后:

Dilation

轮廓:

Contours

我在上面的代码中将轮廓边界的颜色定义为红色。那么,为什么它没有显示红色边界?

0 个答案:

没有答案