📄 imgprocview.cpp
字号:
::box_1(this,Close);
// title="Close";
}
void CImgprocView::On4_1_5()
{
::box_1(this,Hit);
// title="Hit";
}
void CImgprocView::On4_1_6()
{
::box_1(this,Slim);
// title="Slim";
}
void CImgprocView::On4_1_7()
{
::box_1(this,Fat);
// title="Fat";
}
void CImgprocView::OnTianjia()
{
CFile file;
char* pfilename="c:addfile";
struct Item item;
int i;
CAddDlg dlg;
if(dlg.DoModal()==IDOK)
{
if (!file.Open(pfilename, CFile::modeReadWrite|CFile::typeBinary|CFile::shareDenyNone))
{
AfxMessageBox("Can't open the file addfile!");
return;
}
for(i=0;i<MAX;i++)
{
file.Read(&item,sizeof(item));
if(item.used==0) break;
}
if(i==MAX)
{
MessageBox("Can't add anymore!");
return;
}
item.used=1;
item.menupos=dlg.m_menupos;
item.tmpflag=dlg.m_tmp;
item.varnumber=dlg.varnumber;
strcpy(item.menuname,(dlg.m_menuname).GetBuffer(20));
(dlg.m_menuname).ReleaseBuffer();
strcpy(item.var1,(dlg.var1).GetBuffer(20));
(dlg.var1).ReleaseBuffer();
strcpy(item.var2,(dlg.var2).GetBuffer(20));
(dlg.var2).ReleaseBuffer();
strcpy(item.var3,(dlg.var3).GetBuffer(20));
(dlg.var3).ReleaseBuffer();
strcpy(item.var4,(dlg.var4).GetBuffer(20));
(dlg.var4).ReleaseBuffer();
strcpy(item.var5,(dlg.var5).GetBuffer(20));
(dlg.var5).ReleaseBuffer();
strcpy(item.var6,(dlg.var6).GetBuffer(20));
(dlg.var6).ReleaseBuffer();
strcpy(item.var7,(dlg.var7).GetBuffer(20));
(dlg.var7).ReleaseBuffer();
strcpy(item.var8,(dlg.var8).GetBuffer(20));
(dlg.var8).ReleaseBuffer();
file.Seek((item.id-ID_ITEM0)*sizeof(item),CFile::begin);
file.Write(&item,sizeof(item));
file.Close();
char *pp1="请在VC中打开adddll工程,\n\n修改adddll.cpp文件中的";
char *pp2="函数,\n\n然后对其从新编译,生成新的动态库adddll.dll。";
char pp3[255];
strcpy(pp3,pp1);
strcat(pp3,item.funname);
strcat(pp3,pp2);
MessageBox(pp3);
}
}
void CImgprocView::OnItem0()
{
}
void CImgprocView::OnItem1()
{
}
void CImgprocView::OnItem2()
{
}
void CImgprocView::OnItem3()
{
}
void CImgprocView::OnItem4()
{
}
void CImgprocView::OnItem5()
{
}
void CImgprocView::OnItem6()
{
}
void CImgprocView::OnItem7()
{
}
void CImgprocView::OnItem8()
{
}
void CImgprocView::OnItem9()
{
}
void CImgprocView::OnItem10()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem11()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem12()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem13()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem14()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem15()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem16()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem17()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem18()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnItem19()
{
// TODO: Add your command handler code here
}
void CImgprocView::OnReset()
{
int id0,i;
char array[20][20]={
"user0","user1","user2","user3","user4","user5","user6","user7",
"user8","user9","user10","user11","user12","user13","user14","user15",
"user16","user17","user18","user19"
};
struct Item item;
CFile file;
char *pfname="c:addfile";
CDelCheck dlg;
dlg.m_value="所有新增菜单项";
if(dlg.DoModal()==IDCANCEL) return;
if(!file.Open(pfname,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary|CFile::shareDenyNone))
{
MessageBox("Can't open the addfile!\n");
return;
}
id0=ID_ITEM0;
for (i=0 ; i<MAX ; i++)
{
item.id=id0;
id0++;
strcpy(item.funname,array[i]);
item.varnumber=0;
item.tmpflag=0;
item.used=0;
file.Write(&item,sizeof(item));
}
file.Close();
}
void CImgprocView::OnDel()
{
CDelDlg dlg;
dlg.DoModal();
}
void CImgprocView::On2_6()
{
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1,v2;
CIn2Dlg dlg;
dlg.m_n1="截止频率半径";
dlg.m_v1=5.0;
dlg.m_n2="指数参数";
dlg.m_v2=1.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_v1;
v2=dlg.m_v2;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::filter(uppimage,outimage,row,col,1,(int)v2,(double)v1);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On2_7()
{
// TODO: Add your command handler code here
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1,v2;
CIn2Dlg dlg;
dlg.m_n1="截止频率半径";
dlg.m_n2="指数参数";
dlg.m_v1=5.0;
dlg.m_v2=1.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_v1;
v2=dlg.m_v2;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::filter(uppimage,outimage,row,col,2,(int)v2,(double)v1);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On2_8()
{
// TODO: Add your command handler code here
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1,v2;
CIn2Dlg dlg;
dlg.m_n1="截止频率半径";
dlg.m_n2="指数参数";
dlg.m_v1=5.0;
dlg.m_v2=1.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_v1;
v2=dlg.m_v2;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::filter(uppimage,outimage,row,col,3,(int)v2,(double)v1);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On2_9()
{
// TODO: Add your command handler code here
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1,v2;
CIn2Dlg dlg;
dlg.m_n1="截止频率半径";
dlg.m_n2="指数参数";
dlg.m_v1=5.0;
dlg.m_v2=1.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_v1;
v2=dlg.m_v2;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::filter(uppimage,outimage,row,col,4,(int)v2,(double)v1);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On2_10()
{
// TODO: Add your command handler code here
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1;
CInDlg1 dlg;
dlg.m_text="截止频率半径";
// dlg.m_n2="指数参数";
dlg.m_value=5.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_value;
// v2=dlg.m_v2;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::filter(uppimage,outimage,row,col,5,0,(double)v1);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On2_11()
{
// TODO: Add your command handler code here
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1;
CInDlg1 dlg;
dlg.m_text="截止频率半径";
// dlg.m_n2="指数参数";
dlg.m_value=62.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_value;
// v2=dlg.m_v2;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::filter(uppimage,outimage,row,col,6,0,(double)v1);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On3_5()
{
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1,v2;
CIn2Dlg dlg;
dlg.m_n1="高斯方差";
dlg.m_n2="权系数";
dlg.m_v1=1.0;
dlg.m_v2=10.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_v1;
v2=dlg.m_v2;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
int ret;
ret=::LogAlg(uppimage,outimage,row,col,v1,(int)v2);
if(!ret)
{
MessageBox("error !");
::ffree_2d((void**)outimage,row);
pDoc->ReplaceHDIB(back);
EndWaitCursor();
return;
}
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On4_1_8()
{
unsigned short col,row;
unsigned char** uppimage;
// unsigned char** outimage;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
/*
int dd;
printf("****************************Hello!\n");
AfxMessageBox("****************************Hello!");
scanf("%d",&dd);
*/
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
//outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::Contrary(uppimage,row,col);
::ArrayToDIB(row,col,uppimage,hDIB);
//::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On4_2_1()
{
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::HoughDetectLine(uppimage,outimage,row,col,80,40,1000,10);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On4_2_2()
{
// TODO: Add your command handler code here
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
::HoughDetectCircle(uppimage,outimage,row,col,180,80,1000,10);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
void CImgprocView::On5_1()
{
unsigned short col,row;
unsigned char** uppimage;
unsigned char** outimage;
float v1;
CInDlg1 dlg;
dlg.m_text="压缩因子";
dlg.m_value=9.0;
if(dlg.DoModal()==IDCANCEL) return;
v1=dlg.m_value;
CImgprocDoc* pDoc = GetDocument();
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
BeginWaitCursor();
HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
uppimage=::DIBToArray(hDIB,row,col);//row代表行数,col代表列数
outimage=(unsigned char**)::fspace_2d(row,col,sizeof(unsigned char));
char buf[144];
GetTempFileName(0, "cos", 0, buf);
::dctcc(uppimage,buf,row,col,(int)v1);
::dct_ce(buf,outimage,row,col);
::ArrayToDIB(row,col,outimage,hDIB);
::ffree_2d((void**)outimage,row);
OnEditCopy();
pDoc->ReplaceHDIB(back);
// pDoc->SetModifiedFlag();
SendMessage(WM_MYOWN);
EndWaitCursor();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -