Почему рисование контуров не работает на изображении после эрозии и расширения? - PullRequest
0 голосов
/ 29 января 2019

У меня есть и портретное изображение.На что я:

  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 Image:

GrayScaled

Двоичное изображение:

Binary

После эрозии:

Erosion

После расширения:

Dilation

Контур:

Contours

В приведенном выше коде я определяю цвет границы контуров, который должен быть красным.Итак, почему он не показывает красные границы ??

...