Сделать маску от обнаружения края на изображении?

Я пытаюсь вытащить все пиксели из изображения справа, которые являются частью обуви. Я решил взять краевое обнаружение изображения, но теперь мне нужно сделать маску, чтобы я мог захватить все пиксели, ограниченные внешним контуром обуви. Есть ли способ в opencv сделать это? Я посмотрел на функцию findContours, но это только дало мне кучу контуров, чтобы не сделать маску?

1 ответ

Если заливка не предоставляет вам достаточную маску, другой способ может состоять в том, чтобы взять краевое изображение с рисунка 1 и применить оператор расширения, а затем оператор закрытия. Маска будет немного больше оригинала из-за расширения, хотя дилатация помогает закрывать черные пятна при применении оператора закрытия.

Это результат, который я получил (у меня нет достаточно высокой репутации, чтобы опубликовать изображение в ответе. Вот ссылка): http://tinypic.com/view.php?pic=33jmpao&s=8#.U_cHm_mSz9s

Ссылка, приведенная ниже, также может быть полезна для вас. http://docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html

Код, который я использовал:

// Dilation
Mat se = getStructuringElement(CV_SHAPE_ELLIPSE, Size(9, 9));
dilate(edge_image, dst, se, Point(-1,-1), 1);

// Closing
Mat closed;
Mat element = getStructuringElement(MORPH_ELLIPSE, Size(19, 19));
morphologyEx(dst, closed, MORPH_CLOSE, element, Point(-1,-1), 3);

Это мой первый ответ на stackoverflow. Надеюсь, это поможет и удачи! :)

licensed under cc by-sa 3.0 with attribution.