1 在新插入的对话框中添加两个Picture Control和两个Button

2 打开图像代码和显示图像代码和前面两篇博文类似

BEGIN_MESSAGE_MAP(CEdgeDetDlg, CDialogEx)ON_WM_PAINT()ON_BN_CLICKED(IDC_OPEN_BTN, &CEdgeDetDlg::OnClickedOpenBtn)ON_BN_CLICKED(IDC_EDGE_DETECTION_BTN, &CEdgeDetDlg::OnClickedEdgeDetectionBtn)
END_MESSAGE_MAP()// CEdgeDetDlg 消息处理程序void CEdgeDetDlg::OnClickedOpenBtn()
{// TODO: 在此添加控件通知处理程序代码CFileDialog dlg(TRUE,_T(".bmp"),_T("*.jpg"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("Bit Map(*.bmp)|*.bmp|JPEG Map(*.jpg)|*.jpg||"));if(dlg.DoModal() == IDOK){if(!yuantu.IsNull()){yuantu.Destroy();}yuantu.Load(dlg.GetPathName());Invalidate(FALSE);}
}//边缘检测
void CEdgeDetDlg::OnClickedEdgeDetectionBtn()
{if (yuantu.IsNull()){MessageBox(_T("还未打开图像"),_T("系统提示"),MB_OK);return;}if(!bianyuantu.IsNull()){bianyuantu.Destroy();}int i,j,temp;int pixel[4];int width = yuantu.GetWidth();int height = yuantu.GetHeight();int widthBytes = yuantu.GetPitch();bianyuantu.Create(width,height,yuantu.GetBPP());if(yuantu.IsIndexed()){yuantu.GetColorTable(0,256,colorTable);bianyuantu.SetColorTable(0,256,colorTable);}BYTE *pYuantuData = (BYTE*)yuantu.GetBits();BYTE *pBianyuantuData =(BYTE*)bianyuantu.GetBits();for(j=0;j<height-1;j++){for(i=0;i<width-1;i++){pixel[0]=pYuantuData[j*widthBytes+i];pixel[1]=pYuantuData[j*widthBytes+i+1];pixel[2]=pYuantuData[(j+1)*widthBytes+i];pixel[3]=pYuantuData[(j+1)*widthBytes+i+1];temp=(int)sqrt((double)((pixel[0]-pixel[3])*(pixel[0]-pixel[3])+(pixel[1]-pixel[2])*(pixel[1]-pixel[2])));pBianyuantuData[j*widthBytes+i]=temp;}}Invalidate(FALSE);
}void CEdgeDetDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();if(!yuantu.IsNull()){CWnd* pWndYuantu = this->GetDlgItem(IDC_YUANTU);CDC* pdc = pWndYuantu->GetDC();yuantu.Draw(pdc->GetSafeHdc(), 0, 0);pWndYuantu->ReleaseDC(pdc);}if(!bianyuantu.IsNull()){CWnd* pWndBianyuantu = this->GetDlgItem(IDC_BIANYUANTU);CDC* pdc = pWndBianyuantu->GetDC();bianyuantu.Draw(pdc->GetSafeHdc(), 0, 0);pWndBianyuantu->ReleaseDC(pdc);}}
}

测试时用的是灰度图像,实现效果如下:

转载:http://blog.csdn.net/foreverling/article/details/40116763

CImage对象使用罗伯特算子进行边缘检测相关推荐

  1. 利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 Canny算子是John Canny在1986年 ...

  2. OpenCV_08 边缘检测:Sobel检测算子+Laplacian算子+Canny边缘检测

    1 原理 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点.图像属性中的显著变化通常反映了属性的重要事件和变化.边缘的表现形式如下图所示: 图像边缘检测大幅度 ...

  3. canny算子_Canny边缘检测算法

    PS:计算机视觉课程的一项大作业,作为门外汉,在网上查找资料学习和复现时踩了一些坑,在完成作业后分享一下,希望后面的小白同学少走弯路. 1.问题描述 在计算机视觉/机器视觉领域,图像分割的应用十分普遍 ...

  4. [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. Sobel算子的边缘检测实现

    1. Sobel算子的边缘检测实现 1.1. 边缘检测概念 所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的 ...

  6. matlab实现sobel边缘检测图像,基于Sobel算子图像边缘检测的MATLAB实现

    <基于Sobel算子图像边缘检测的MATLAB实现>由会员分享,可在线阅读,更多相关<基于Sobel算子图像边缘检测的MATLAB实现(3页珍藏版)>请在人人文库网上搜索. 1 ...

  7. 在CIELab颜色空间下使用八方向Sobel算子实现边缘检测

    参考河北师范大学硕士学位论文--基于八方向Sobel算子的边缘检测算法研究. 由于自己实现滤波器运算,计算速度很慢,以后有能力再进行改进. 算子定义如下: 算法思路: 1.将RGB图像转化为CIELa ...

  8. C++ Canny算子进行边缘检测

    C++实现Canny算子 进行边缘检测 文章目录 C++实现Canny算子 进行边缘检测 前言 一.Canny算子原理 二.C++实现Canny算子 1.步骤 2.C++代码如下 三.Canny算子运 ...

  9. Opencv python基础入门(4)---sobel算子及边缘检测

    本文主要介绍sobel算子及边缘检测: 代码如下: #sobel,ddepth如果设置为-1的话,水平处理只能取出左边界,右边界为负值丢失了,所以需要先用64F扩展然后用convertScaleAbs ...

  10. [Python从零到壹] 五十七.图像增强及运算篇之图像锐化Roberts、Prewitt算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. 使用 collections 来创建类似元组对象
  2. linear-gradient 百分比以及斜角的使用
  3. 如何使用PHP自动备份数据库
  4. 项目管理工具篇(一、Maven)
  5. 交叉验证技术(part1)--概述
  6. halcon学习笔记——(4)HDevelop language(结构语句)
  7. 博图os更新_博途TIA安装与更新
  8. builtins.TypeError: sequence item 0: expected a bytes-like object, str found
  9. mipi的dsi全称_MIPI扫盲——DSI介绍(二)
  10. 笔记本电脑处理器_华硕推出首款第11代英特尔处理器VivoBook,ZenBook笔记本电脑...
  11. 找出数组中两数之和为指定值的所有整数对
  12. python应用系列教程——python使用socket创建udp服务器端和客户端
  13. python进程池和线程池_python自带的进程池及线程池
  14. 学习如何在matlab用带通滤波器进行滤波
  15. UCI数据集介绍(论文常用数据集)
  16. php生成手写字,钢笔手写体生成工具(PHP)V1.0[原创]
  17. java 水晶报表_水晶报表-crystal report
  18. 物联网 DFrobot 掌控版 人工智能测温实验
  19. 生日快乐,我想念你们
  20. VUE+ElementUI的表单el-from表单验证二选一必填项,并且满足条件后会清除表单验证提示。

热门文章

  1. 日志记录总结要整理的地方
  2. JDK1.4下载 JRE1.4下载
  3. 如何确定品种?——期货品种量化分类课题研究
  4. 传统金融行业 IT 的核心竞争力究竟在何处?
  5. 11月20日取消纸质车票,怎么报销
  6. 2018年度中国LC3盛大召开!
  7. 树立榜样、褒奖开源领域领袖人物、杰出贡献人物
  8. 【PID优化】基于matlab粒子群和遗传算法PID控制器优化设计【含Matlab源码 1311期】
  9. 【背包问题】基于matlab离散粒子群算法求解0-1背包问题【含Matlab源码 1342期】
  10. 【图像增强】基于matlab暗通道图像去雾【含Matlab源码 101期】