⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imgprocview.cpp

📁 图像处理源代码VC
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    ::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 + -