Я пытаюсь украсить изображение, а затем извлечь скелет изображения, содержащего рукописную строку. Я хочу, чтобы линия была непрерывной и сплошной, но метод, который я использую, не может сделать это и относительно медленный. Вот оригинальное изображение: Original ImageОчистка отсканированного изображения в opencv
Morphed На синтезированные изображения, вы можете увидеть небольшой остров в нижнем правом углу.
Утонченное изображение сверху показывает, что линия сломана ближе к концу.
Любой другой способ достижения желаемого результата?
Мой код выглядит следующим образом:
int morph_elem = 2;
int morph_size = 10;
int morph_operator = 0;
Mat origImage = imread(origImgPath, CV_LOAD_IMAGE_COLOR);
medianBlur(origImage, origImage, 3);
cvtColor(origImage, origImage, COLOR_RGB2GRAY);
threshold(origImage, origImage, 0, 255, THRESH_OTSU);
Mat element = getStructuringElement(morph_elem, Size(2 * morph_size + 1, 2 * morph_size + 1), cv::Point(morph_size, morph_size));
morphologyEx(origImage, origImage, MORPH_OPEN, element);
thin(origImage, true, true, true);
На двоичном изображении (после порога) вы можете 'findContour' и удалить маленькие, например. используя 'contourArea' – Miki