level 1
k2179
楼主
小弟是个初学者,现在想实现的功能是按键之后,读取指定图像(BMP),进行灰度处理,设置阈值为175,进行分割。但是我写完程序后,输出的还是原图,希望好心人能够解答一下。
CRect rect;
CImage image;
COLORREF COL;
byte r,g,b;
int i,j;
int x,y;
image.Load("E:\\C++学习\\作业\\20170714作业一:图片灰度分割保存\\VS2012\\1.BMP");
CWnd *pWnd=NULL;
pWnd=GetDlgItem(IDC_STATIC);
pWnd->GetClientRect(&rect);//获取rect
i=rect.Width();
j=rect.Height();
CDC *pDc=NULL;
HDC hdc=pDc->GetSafeHdc();
pDc=pWnd->GetDC();//获取显示控件的DC
for (x=0;x<i;x++)
for (y=0;y<j;y++)
{
COL=GetPixel(,i,j);
r=GetRValue(COL);
g=GetGValue(COL);
b=GetBValue(COL);
int ave=(r+g+b)/3;
r=g=b=ave;
if (r<175)
{
r=255;
}
else
{
r=0;
}
if (g<175)
{
g=255;
}
else
{
g=0;
}
if (b<175)
{
b=255;
}
else
{
b=0;
}
SetPixel(*pDc,i,j,COL);
}
pDc->SetStretchBltMode(HALFTONE);//半色调
image.Draw(pDc->m_hDC,rect);//绘制图片到对应区域
ReleaseDC(pDc);//释放指针
// TODO: 在此添加控件通知处理程序代码
2017年07月21日 01点07分
1
CRect rect;
CImage image;
COLORREF COL;
byte r,g,b;
int i,j;
int x,y;
image.Load("E:\\C++学习\\作业\\20170714作业一:图片灰度分割保存\\VS2012\\1.BMP");
CWnd *pWnd=NULL;
pWnd=GetDlgItem(IDC_STATIC);
pWnd->GetClientRect(&rect);//获取rect
i=rect.Width();
j=rect.Height();
CDC *pDc=NULL;
HDC hdc=pDc->GetSafeHdc();
pDc=pWnd->GetDC();//获取显示控件的DC
for (x=0;x<i;x++)
for (y=0;y<j;y++)
{
COL=GetPixel(,i,j);
r=GetRValue(COL);
g=GetGValue(COL);
b=GetBValue(COL);
int ave=(r+g+b)/3;
r=g=b=ave;
if (r<175)
{
r=255;
}
else
{
r=0;
}
if (g<175)
{
g=255;
}
else
{
g=0;
}
if (b<175)
{
b=255;
}
else
{
b=0;
}
SetPixel(*pDc,i,j,COL);
}
pDc->SetStretchBltMode(HALFTONE);//半色调
image.Draw(pDc->m_hDC,rect);//绘制图片到对应区域
ReleaseDC(pDc);//释放指针
// TODO: 在此添加控件通知处理程序代码