cv :: Mat.data всегда возвращает одно и то же значение - PullRequest
0 голосов
/ 08 апреля 2019

У меня красное изображение - только для тестирования.Цвет RGB: (217/18/36).

Я выполняю следующий код:

void QuaterImage(Mat& SrcImage, Mat& DestImage, bool Downsample) {
    int newWidth = 0, newHeight = 0;
    int newOrigWidth = 0, newOrigHeight = 0;

    if (SrcImage.cols % 2 > 0) { newOrigWidth = SrcImage.cols - 1; } else { newOrigWidth = SrcImage.cols; }
    if (SrcImage.rows % 2 > 0) { newOrigHeight = SrcImage.rows - 1; } else { newOrigHeight = SrcImage.rows; }

    if (SrcImage.depth() != CV_8U) { return; }

    newHeight = newOrigHeight / 2;
    newWidth = newOrigWidth / 2;

    DestImage = Mat(newWidth, newHeight, SrcImage.type());
    int r = 0, c = 0;
    uchar* DataPtr = SrcImage.ptr<uchar>(0);

    std::cout << std::to_string(*DataPtr) << std::endl;
    return;
}

Всегда возвращается «205».

Если я изменяюИзображение должно быть полностью желтым, оно возвращает точно такое же значение.Как это может быть?

С уважением, Ян

1 Ответ

0 голосов
/ 08 апреля 2019

Хорошо, извини, я понял.Вы не могли видеть это.Я давал одно и то же изображение для SrcImage и DestImage, поэтому строка DestImage = Mat(newWidth, newHeight, SrcImage.type()); перезаписала изображение.До этой строки значения верны.

Извините за это ...

...