平滑处理中值滤波的c++编程,麻烦帮我看一下哪错了,感激不尽
c++不是太会,运行不出来搞不清楚哪不对麻烦有会的帮忙看看,感激不尽!!
void CMYSECORDDlg::OnButton1Smooth2()
{
// TODO: Add your control notification handler code here
int i,j;
int p,q,k=0;
CDC* dc_src;
CDC* dc_dst;
dc_src = GetDlgItem(IDC_STATIC_SRC)->GetDC();
dc_dst = GetDlgItem(IDC_STATIC_DST)->GetDC();
AfxMessageBox("!");
COLORREF GetMidNum(COLORREF a[9]);
COLORREF c,c_r,c_g,c_b,c_temp;
COLORREF c_temp_r[9],c_temp_g[9],c_temp_b[9];
for(i=1;i<320;i++)
{
for(j=1;j<240;j++)
{
for(p=-1;p<=1;p++)
{
for(q=-1;q<=1;q++)
{
c_temp=dc_src->GetPixel(i+p,j+q);
c_temp_r[k]=GetRValue(c_temp);
c_temp_g[k]=GetGValue(c_temp);
c_temp_b[k]=GetBValue(c_temp);
k++;
}
}
c_r=GetMidNum(c_temp_r);
c_g=GetMidNum(c_temp_g);
c_b=GetMidNum(c_temp_b);
c=RGB(c_r,c_g,c_b);
dc_dst->SetPixel(i,j,c);
}
}
}
COLORREF GetMidNum(COLORREF a[9])
{
int u,v;
COLORREF temp;
COLORREF element[9];
for(u=0;u<9;u++)
element[u]=a[u];
for(u=1;u<9;u++)
{
for(v=0;v<9-u;v++)
{
if(element[v]>element[v+1])
{
temp=element[v];
element[v]=element[v+1];
element[v+1]=temp;
}
}
}
temp=element[4];
return temp;
}