【发布时间】:2019-04-08 16:19:03
【问题描述】:
我有一张红色图片 - 仅用于测试。 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”。
如果我将图像更改为完全黄色,它会返回完全相同的值。怎么可能?
问候, 一月
【问题讨论】:
-
你只考虑bmp的第一个字节,真的是你想要的吗?
-
请发帖minimal reproducible example。你在这里重新定义
SrcImage -
嗨,postet 函数。我知道,我目前只访问第一个字节。这不是我想要的 - 但目前,我正在寻找错误......如果那是固定的,我会继续。最后,我喜欢设计一个函数,它可以尽可能快地对一半宽度和一半高度的图像进行下采样。因此,我只想对核心图像中的一个像素取四个像素的平均值。
-
不,我只剪切了计算新宽度和新高度的部分。您可以删除该部分,因为它直到现在才使用。指针的赋值和输出完全一样。
-
也许你只是想要这个:stackoverflow.com/questions/10431919/…