LINUX.ORG.RU

opencv для маленьких

 ,


1

1

хочу задетектить и убрать табличку, считай линии дропнуть.

http://docs.opencv.org/3.1.0/d1/dee/tutorial_moprh_lines_detection.html --- основное чтиво по теме.

ну что, переношу 1:1, но у них линия выделается как линия, а у меня для маски выделяются две области, сверху интересующей меня линии и снизу. как так?

портянка:

        Mat bw = new Mat();
        adaptiveThreshold (gray, bw, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);

        Mat horizontal = bw.clone();

        int hScale = 4; // for experimant, start: 15
        int horSize = horizontal.cols() / hScale;

        Mat horStruct = getStructuringElement(MORPH_RECT, new Size (horSize, 1));

        erode(horizontal, horizontal, horStruct, new Point(-1, -1), 1);
        dilate(horizontal, horizontal, horStruct, new Point(-1, -1), 1);


//        Core.bitwise_not(horizontal, horizontal);
        imwrite ("horizontal.png", horizontal);

http://imgur.com/5USNksP --- выхлоп. хотя сама табличка внутри, между выделенными белыми областями :(

У них:

// Apply adaptiveThreshold at the bitwise_not of gray, notice the ~ symbol
Mat bw;
adaptiveThreshold(~gray, bw, 255, CV_ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);

У тебя:

Mat bw = new Mat();
adaptiveThreshold (gray, bw, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);

Norgat ★★★★★ ()
Ответ на: комментарий от Rastafarra

Вообще есть совет - возьми matlab или Wolftam Mathematica, там есть аналоги функций opencv и экспериментируй там в интерактивном режиме, а уже потом переноси код на OpenCV.

Или IPython и в notebook экспериментируй с opencv.

Norgat ★★★★★ ()
Последнее исправление: Norgat (всего исправлений: 1)

А не проще ли, вместо инвертирования изображения, передавать в adaptiveThreshold не THRESH_BINARY, а THRESH_BINARY_INV?

baldman88 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.