Как использовать функцию erode и dilate в opencv?
Я пытаюсь устранить вещь вокруг числа с процессом размывания и расширения. Я попытался, но ничего не вышло. Я изменил значения только для того, чтобы увидеть, изменит ли что-то, но опять же ничего не изменилось. Изображение продолжается, как в ссылке выше. Как насчет этих параметров... Я прочитал документацию, но не совсем понимаю (как вы можете видеть, я угадывал в функции). Что я делаю не так?
изображение: https://docs.google.com/file/d/0BzUNc6BOkYrNeVhYUk1oQjFSQTQ/edit?usp=sharing
код:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main ( int argc, char **argv )
{
    Mat im_gray;
    Mat img_bw;
    Mat img_final;
    Mat im_rgb  = imread("cam.jpg");
    cvtColor(im_rgb,im_gray,CV_RGB2GRAY);
    adaptiveThreshold(im_gray, img_bw, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY_INV, 105, 1); 
    dilate(img_bw, img_final, 0, Point(-1, -1), 2, 1, 1);
    imwrite("cam_final.jpg", img_final);
    return 0;
}  
2 ответов
по данным официальные документы, третьим аргументом должно быть ядро (или элемент структурирования). В настоящее время вы проходите 0:
dilate(img_bw, img_final, 0, Point(-1, -1), 2, 1, 1);
попробуйте переписать его таким образом:
dilate(img_bw, img_final, Mat(), Point(-1, -1), 2, 1, 1);
в этом случае будет использоваться ядро по умолчанию 3x3.
ядро-это в основном матрица. Это умножается или перекрывается на входной матрице(изображении) для получения желаемого выхода модифицированной(в данном случае расширенной) матрицы (изображения).
попробуйте изменить параметры Mat() in 
dilate(img_bw, img_final, Mat(), Point(-1, -1), 2, 1, 1);
вы в основном меняете количество пикселей (высоту и ширину) ядра, что изменит эффект расширения на исходном рисунке.
так в параметрах dilate вы используете Mat() вместо числа, как уже указано esenti.
