【发布时间】:2020-09-23 09:47:27
【问题描述】:
我想制作具有不同窗口大小(由用户确定)的马赛克照片。这就像代码的初稿,但我在获取像素和计算平均值时遇到了问题。然后将平均值放在每个像素中并继续到最后。即使我将它们转换为不同类型时也会出错:(其他部分也制造了灰度图像) p.s:抱歉,我刚刚开始学习图像处理。
''' void CImageProcessingDoc::OnProcessMosaic()
{
if (m_pImage) {
DlgMosaicOption dlg;
if (dlg.DoModal() == IDOK) {
DWORD dwWindowSize = dlg.m_dwWindowSize;
DWORD width = m_pImage->GetWidth();
DWORD height = m_pImage->GetHeight();
RGBQUAD color;
RGBQUAD newcolor;
float X_step = width / dwWindowSize;
float Y_step = height / dwWindowSize;
int avg, pixel;
for (DWORD y = 0; y < dwWindowSize; y++) {
for (DWORD x = 0; x < dwWindowSize; x++) {
color = m_pImage->GetPixelColor(x, y);
(RGBQUAD) pixel = m_pImage->GetPixelColor(x, y);
avR += (int)(color.red(pixel);
avG += (int)(color.green(pixel);
avB += (int)(color.blue(pixel);
newcolor.rgbBlue = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);
newcolor.rgbGreen = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);
newcolor.rgbRed = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);
m_pImage->SetPixelColor(x, y, newcolor);
}
}
}
}
} '''
谁能帮我理解这个问题?
【问题讨论】:
-
你必须初始化你的变量,否则它们的初始值可以是任何东西。结果,您会得到不正确的结果。例如。
int avg = 0; int pixel = 0; -
@vahancho 显然是好的建议,但不是这里的问题
-
请提供更多信息。您期望什么以及您的代码的结果是什么?
标签: c++ visual-studio image-processing bitmap mosaic