南昌航空大学实验报告课题名称: 数字图像处理实验名称: 图像阈值分割班级: 姓名: 同组人: 指导老师评定: 签名: 一、实验目的用 VC++ 实现位图阈值分割二、实验内容与步骤 1、首先建立一个工程。打开 VC++ , 单击文件【 files 】→新建【 new 】→工程【 projects 】在打开的 projects 下选择 MFC App Wizard [exe] →在 project name 下输入自己的工程名例如( Fenge )→单击【 ok】→在打开的对话框中选择基于单文档【 single document 】→在第四步“ MFC App Wizard step 4 of6”面板中删掉【隐藏工具栏】和【打印和打印预览】两个选项, 之后的全部选择默认, 单击 finish , 出现一个“ New Project Information ”窗口, 单击【 ok】。一个简单的工程框架就建好了。 2、现在我们正式开始在新建工程 Fenge 中进行编程实现 bmp 位图的阈值分割。点击左边框中的【 ResourceView 】框找到【 Menu 】点开, 双击 Menu 下的图标, 在右面的显示框中创建两个菜单: 打开 ID: ID_FILE_OPEN 阈值分割 ID : ID_YuZhiFenGe 3、给这两个菜单建立类向导。在右边的窗口中右击“打开”,选择“建立类向导”,然后在打开的对话框中按下图 1 操作,“ Class name ”选择“ CFengeView ”→” Object IDs ”中选择“ ID_FILE_OPEN ”→“ Message ”中选择“ COMMAND ”, 点击“ Add Function ”键就会在“ Member functions ”中,然后点击“ Edit Code ”,在自动生成的 OnFileOpen 函数中编写代码: void CFengenView::OnFileOpen() { // TODO: Add mand handler code here CFileDialog fileDlg(true); =" 图片打开对话框"; ="BMP Files(*.bmp)\0*.bmp\0\0"; if(IDOK==()) { ("%s",()); (m_fileName); Invalidate(); }}图1 同理,操作“阈值分割”图2 选择“ CFengeView ”。点击“ Edit Code ”,在自动生成“ OnYuZhiFenGe ”函数中编写代码: void CFengenView::OnYuZhiFenGe() { // TODO: Add mand handler code here if (()) { int i; int Yuzhi; // 阈值变量// 各颜色分量的灰度分布密度 float midu[256]; // 计算灰度分布密度 (midu); // 调用灰度统计处理函数// 创建灰度直方图对话框 CDlgZhiFangTu * dlg; dlg=new CDlgZhiFangTu(this); dlg->Create(IDD_DIALOG_ZhiFangTu); // 传递灰度分布密度数据给面板类 for (i= 0;i <256; i++) dlg->m_fIntensity[i] = midu[i]; // 显示对话框,由用户进行灰度折线变换 dlg->ShowWindow(SW_RESTORE); // 创建阈值选择对话框 CDlgYuZhiFenGe dlg1; =0; // 显示对话框,提示用户输入阈值 if (() == IDOK) { Yuzhi=; } // 删除对话框 delete dlg1; delete dlg; (Yuzhi); // 调用阈值分割处理函数// 重绘 Invalidate(); }} 4、创建一个处理位图的类 CDib ,且 CDib 类是由 CObject 类派生出来的。点击工程菜单栏中的插入【 insert 】→【 insert class 】→类类型选“ Generic Class ”,→类名称填“ CDib ”→【 ok】。可以看见工程窗口的 Class View 中多了一个 CDib 类;点开 CDib
用VC 实现图像阈值分割 来自淘豆网m.daumloan.com转载请标明出处.