Не могу правильно получить контур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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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