Проблема со связанными компонентами алгоритма (рекурсивная) - PullRequest
0 голосов
/ 28 октября 2018

Я работаю над проектом изображения и пытаюсь создать алгоритм подключения компонентов.Вот что я придумал:

Mat OPG3::cc(Mat imgCC) {

int p = 1;
int lable = 1;
copyMakeBorder(imgCC, imgCC, p, p, p, p, BORDER_CONSTANT, 0);

for (int imgRow = p; imgRow < imgCC.rows - p; imgRow++) {
    for (int imgCol = p; imgCol < imgCC.cols - p; imgCol++) {
        if (imgCC.at < uchar >(imgRow,imgCol) == 255) {
            imgCC.at<uchar>(imgRow, imgCol) = lable;
            recursive(imgRow, imgCol - 1, lable, p, imgCC);
            recursive(imgRow + 1, imgCol, lable, p, imgCC);
            recursive(imgRow, imgCol + 1, lable, p, imgCC);
            recursive(imgRow - 1, imgCol, lable, p, imgCC);
            ++lable;

        }
    }
}
    return imgCC;
}

void OPG3::recursive(int i, int j, int lable, int p, Mat& imgCC) {

if (imgCC.at < uchar >(i, j) == 255) {
    imgCC.at<uchar>(i, j) = lable;
    recursive(i, j - 1, lable, p, imgCC);
    recursive(i + 1, j, lable, p, imgCC);
    recursive(i, j + 1, lable, p, imgCC);
    recursive(i - 1, j, lable, p, imgCC);

}

}

Когда я запускаю код, он останавливается в середине выполнения с некоторыми изображениями, но с другими программами он выполняется правильно.

IsВозможно, что алгоритм в некоторых случаях делает слишком много вызовов функций?

...