
#include "mymfc.h"
#include "mymfcDlg.h"
#include "afxdialogex.h"
#include #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: // 对话框数据 支持 // 实现 protected: }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CmymfcDlg 对话框 CmymfcDlg::CmymfcDlg(CWnd* pParent /*=NULL*/) { } void CmymfcDlg::DoDataExchange(CDataExchange* pDX) { } BEGIN_MESSAGE_MAP(CmymfcDlg, CDialogEx) END_MESSAGE_MAP() // CmymfcDlg 消息处理程序 BOOL CmymfcDlg::OnInitDialog() { 将“关于...”菜单项添加到系统菜单中。 必须在系统命令范围内。 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 执行此操作 设置大图标 设置小图标 在此添加额外的初始化代码 除非将焦点设置到控件,否则返回 TRUE } void CmymfcDlg::OnSysCommand(UINT nID, LPARAM lParam) { } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CmymfcDlg::OnPaint() { 用于绘制的设备上下文 使图标在工作区矩形中居中 绘制图标 重绘对话框 更新windows窗口,如果无这步调用,图片显示还会出现问题 重绘图片函数 } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CmymfcDlg::OnQueryDragIcon() { } v读取图片操作 { 在此添加控件通知处理程序代码 这里用CFileDialog来选择图片 打开文件对话框的标题名 判断是否获得图片 获取图片路径 读取图片 判断是否成功读取图片 } void CmymfcDlg::ShowImage(IplImage* img, UINT ID) // ID 是Picture Control控件的ID号 { 获得显示控件的 DC 获取 HDC(设备句柄) 来进行绘图操作 求出图片控件的宽和高 读取图片的宽和高 使图片的显示位置正好在控件的正中 复制图片 将图片绘制到显示控件的指定区域内 } void CmymfcDlg::ResizeImage(IplImage* img) { 读取图片的宽和高 找出宽和高中的较大值者 计算将图片缩放到TheImage区域所需的比例 缩放后图片的宽和高 为了将缩放后的图片存入 TheImage 的正中部位,需计算图片在 TheImage 左上角的期望坐标值 设置 TheImage 的 ROI 区域,用来存入图片 img 对图片 img 进行缩放,并存入到 TheImage 中 重置 TheImage 的 ROI 准备读入下一幅图片 } v算法的边缘检测 { 在此添加控件通知处理程序代码 ShowImage( edge, IDC_ShowImg ); // 调用显示图片函数 } v恢复图片 { 在此添加控件通知处理程序代码 将读入的图片路径传给mPath 读取图片、缓存到一个局部变量 ipl 中 判断是否成功读取图片 对上一幅显示的图片数据清零 对读入的图片进行缩放,使其宽或高最大值者刚好等于 256,再复制到 TheImage 中 调用显示图片函数 } void CmymfcDlg::OnBnClickedGrayprocess() //灰度图像的转化 { 在此添加控件通知处理程序代码 释放图片的内存空间 } v用cvSobel函数的边缘检测 { 在此添加控件通知处理程序代码 ShowImage( edge, IDC_ShowImg ); // 调用显示图片函数 } v用cvLaplace函数实现图像的拉普拉斯变换 { 在此添加控件通知处理程序代码 ShowImage( edge, IDC_ShowImg ); // 调用显示图片函数 } v傅里叶正变换方法 { 实部、虚部 实部 虚部 } void CmymfcDlg::OnBnClickedFft2() { 在此添加控件通知处理程序代码 源图像 傅里叶系数 加载源图像,第二个参数表示将输入的图片转为单信道 傅里叶变换 中心化 实现傅里叶逆变换,并对结果进行缩放 将shift加在ImageRe各元素按比例缩放的结果上,存储为ImageDst 傅里叶谱",0); 傅里叶谱",Image); } v傅里叶变换 { 计算傅里叶谱 对数变换以增强灰度级细节(这种变换使以窄带低灰度输入图像值映射 进行中心变换 中心化,将整体份成四块进行对角交换 归一化处理将矩阵的元素值归一为[0,255] } void CmymfcDlg::OnBnClickedCimage() //图片的反转 { 在此添加控件通知处理程序代码 这里用克隆函数将原图片复制给cImage 利用翻转函数cvFlip()将cImage反转 } v图像的镜像 { 在此添加控件通知处理程序代码 这里用克隆函数将原图片复制给cImage 利用翻转函数cvFlip()将cImage反转 } void CmymfcDlg::OnBnClickedCcolor() //图像的反色 { 在此添加控件通知处理程序代码 这里用克隆函数将原图片复制给cImage 利用函数cvNot()将cImage每个像素点取反 } v非线性滤波之中值滤波 { 在此添加控件通知处理程序代码 灰度原始图像 这里用克隆函数将sreImage图片复制给dstImage } v高斯滤波 { 在此添加控件通知处理程序代码 灰度原始图像 这里用克隆函数将sreImage图片复制给dstImage } v双边滤波 { 在此添加控件通知处理程序代码 灰度原始图像 这里用克隆函数将sreImage图片复制给dstImage } v图片的均值滤波 { 在此添加控件通知处理程序代码 灰度原始图像 这里用克隆函数将sreImage图片复制给dstImage } v图片的腐蚀 { 在此添加控件通知处理程序代码 灰度原始图像 这里用克隆函数将sreImage图片复制给dstImage 使用cvErode()函数实现图片的腐蚀 } v图片的膨胀 { 在此添加控件通知处理程序代码 灰度原始图像 这里用克隆函数将sreImage图片复制给dstImage 使用cvDilate()函数实现图片的膨胀 }
