Пороговая операция C ++, чтобы сделать любые пиксели, которые не являются черными, белыми - PullRequest
1 голос
/ 06 марта 2020

Я применил размытие по Гауссу, чтобы учесть размытие изображения. Это изображение сохраняется как 'stage2_blurred'. Затем я хочу повторно ввести это изображение stage2_blurred, чтобы затем сделать любые пиксели, которые не являются черными, белыми, и сохранить вновь созданное изображение как 'stage2_threshold'. Код, который я реализовал, выдает мне ошибку в parallel_for -

Это строка, содержащая ошибку: int whitePixels = parallel_reduce (

, и это сообщение об ошибке: "значение тип "void" нельзя использовать для инициализации типа сущности "int"

Может кто-нибудь подсказать мне, где я ошибся в своем коде, пожалуйста?

Любая помощь очень ценится. Код для следования:

outputBlurImage.convertToType(FREE_IMAGE_TYPE::FIT_BITMAP);
outputBlurImage.convertTo24Bits();
outputBlurImage.save("stage2_blurred.png");

//last part of part 2 

fipImage blurredImage;
blurredImage.load("stage2_blurred.png");

unsigned int width = blurredImage.getHeight();
unsigned int height = blurredImage.getWidth();

float pixels = width * height; 

fipImage outputThreshold;
outputThreshold = fipImage(FIT_BITMAP, width, height, 24);

vector<vector<RGBQUAD>> rgbValuesOutput;
rgbValuesOutput.resize(height, vector<RGBQUAD>(width));

int whitePixels = parallel_reduce(

    blocked_range2d<int, int>(0, height, 0, width),
    [&](const blocked_range2d<int, int>& range, int value)-> int {

    auto y1 = range.rows().begin();
    auto y2 = range.rows().end();
    auto x1 = range.cols().begin();
    auto x2 = range.cols().end();

    RGBQUAD rgb1;

    for (auto y = y1; y < y2; y++) {

        for (auto x = x1; x < x2; x++) {

            blurredImage.getPixelColor(x, y, &rgb1); //extracting pixels

            blurredImage.getPixelColor(x, y, &rgb1);

            if (rgbValuesOutput[y][x].rgbRed != 0 || rgbValuesOutput[y][x].rgbGreen != 0 || rgbValuesOutput[y][x].rgbBlue != 0) {

                rgbValuesOutput[y][x].rgbRed = 255;
                rgbValuesOutput[y][x].rgbGreen = 255;
                rgbValuesOutput[y][x].rgbBlue = 255;

                value += 1;
            }
            outputThreshold.setPixelColor(x, y, &rgbValuesOutput[y][x]);
            outputThreshold.save("stage2_threshold.png");
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...