Не могу правильно получить контурPython

Программы на Python
Anonymous
Не могу правильно получить контур

Сообщение Anonymous »

Я играю с openCV и выполняю простую задачу ниже.

1) Чтение изображения

2) Определение порога

3) Поиск контуров.

4) Рисование всех контуров на пустом изображении.

5) Рисование отдельного контура.

Рисование всех контуров на фиктивном изображении выглядит хорошо, тогда как при рисовании одного контура получается разбросанный контур, как показано на изображениях ниже.

Оригинал:

Изображение


Все контуры:

Изображение


Один контур:

Изображение


Найдите код ниже.

import cv2
import numpy as np

#Reading Image.
srcImg = cv2.imread("./bottle.jpeg")

#Color Conversion.

grayedImg = cv2.cvtColor(srcImg,cv2.COLOR_RGB2GRAY)
__, thresholdedImg = cv2.threshold(grayedImg, 240, 255, cv2.THRESH_BINARY)

#Noice Removal
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
erodeImage = cv2.erode(thresholdedImg,kernel, iterations=1)
dilatedImg = cv2.dilate(erodeImage,kernel, iterations=1)
_, contours, _ = cv2.findContours(dilatedImg,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

#draw All Contours.

dummyImg = np.zeros(grayedImg.shape, dtype=grayedImg.dtype)
cv2.drawContours(dummyImg, contours, -1, 255, 1)
cv2.imshow("All Contours", dummyImg)
cv2.imwrite("allContours.jpeg",dummyImg)

#draw Individual Contours.

mask = np.zeros(dummyImg.shape[:2], dtype= dummyImg.dtype)
isolatedImg = cv2.drawContours(mask, contours[9], -1, 255, 1)

cv2.imshow("Indivial Contours.", isolatedImg)
cv2.imwrite("single.jpeg",isolatedImg)

cv2.waitKey(0)


Подробнее здесь: https://stackoverflow.com/questions/509 ... r-properly

Вернуться в «Python»