cv :: Mat.data始终返回相同的值

时间:2019-04-08 16:19:03

标签: c++ opencv mat

我有一个红色图像-仅用于测试。 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 :(得分:0)

好的,对不起,我明白了。您看不到它。我为SrcImageDestImage提供了相同的图像,因此行DestImage = Mat(newWidth, newHeight, SrcImage.type());覆盖了图像。在该行之前,值正确。

很抱歉...

相关问题