Как найти и нарисовать внешнюю линию изображения в OpenCV? - PullRequest
0 голосов
/ 14 мая 2019

enter image description here

Как указано на изображениях, когда я обрабатываю изображение (ДО), мне нужны его внешние границы и рисовать красную цветную линию (как ПОСЛЕ изображения) в openCV android,

если кто-то знает об этом, пожалуйста, дайте мне знать, что танки в продвинутом.

1 Ответ

0 голосов
/ 14 мая 2019

Это классическое приложение cv :: findContours .

Рабочий пример приведен в документации .

Для вашего конкретного случая вы можете сделать так:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

int main(int argc, char** argv)
{
    using namespace cv;
    using namespace std;

    Mat3b image;
    image = imread(argv[1], 1);  
    imshow ("Before", image);

    Mat1b gray;
    cvtColor(image, gray, CV_BGR2GRAY);
    threshold(gray, gray, 250, 255, THRESH_BINARY);
    medianBlur(gray,gray, 3);
    gray = 255-gray;

    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
    findContours(gray, contours, hierarchy, RETR_EXTERNAL , CHAIN_APPROX_NONE);

    Scalar color = Scalar( 0, 0, 255 );
    for (size_t i = 0; i < contours.size(); i++) {
        drawContours(image, contours, i, color, 2, 8, hierarchy, 0, Point());
    }     
    imshow("After", image);
    return 0;
}

Что даст вам такой вывод: Example output

...