Canny边缘检测Demo——基于Opencv4.10和MFC【计算机视觉课程作业】

前言

作业要求使用c/c++编写涉及课堂知识点,能实现一定功能的代码,并发布为可执行程序,在其他电脑上时运行时无需安装相关库。所以我用MFC和OpenCV写了一个小demo实现Canny边缘检测,通过静态编译满足程序通用性要求。

完整项目代码地址:https://github.com/liuzwin98/CannyEdgeDetectionDemo

正文

软件说明

1、概述: CannyDetection_demo.exe。软件开发基于OpenCV和MFC,开发环境为VS2017,其中Canny算法部分为手动实现。算法代码在source目录下的mfc_demoDlg.cpp文件中。
2、软件功能: 打开并读取指定目录下的图片文件,用户可自己设置不同的Canny算法阈值参数,通过点击不同的功能按键,可以得到图像处理的中间结果,如高斯模糊、梯度幅值、非极大值抑制(NMS)图像,还能一键保存当前的所有图像到当前软件目录。
3、使用方法: 打开图片文件->设置两个阈值,点击确定->点击不同的功能按键得到相应的图像->重新设置阈值得到不同的检测结果。

在这里插入图片描述

实验结果

打开图片文件,并设置高低阈值参数分别为60、100,得到Canny检测结果和中间结果如图2.1,2.2,2.3,2.4所示。

在这里插入图片描述

图2.1-2.4 中间结果即检测结果

设置高低阈值分别为10、40,Canny检测结果如图2.5所示。高低阈值分别为100、200时,结果如图2.6所示。
在这里插入图片描述
在这里插入图片描述

通过实验结果可知,高低阈值都为一个较小的值时,边缘与背景不能很好的区分开;而高低阈值都为一个较大的值时,轮廓边缘不再连续,检测效果较差。小阈值用来调控边缘连接,大阈值用来控制强边缘的初始分割。

附录

OpenCV静态编译所需添加的库目录:

IlmImf.lib
ittnotify.lib
libjasper.lib
libjpeg-turbo.lib
libpng.lib
libprotobuf.lib
libtiff.lib
libwebp.lib
opencv_calib3d410.lib
opencv_core410.lib
opencv_dnn410.lib
opencv_features2d410.lib
opencv_flann410.lib
opencv_highgui410.lib
opencv_imgcodecs410.lib
opencv_imgproc410.lib
opencv_ml410.lib
opencv_objdetect410.lib
opencv_photo410.lib
opencv_stitching410.lib
opencv_video410.lib
opencv_videoio410.lib
quirc.lib
zlib.lib

参考

Canny算法
https://www.jianshu.com/p/d21a33a7901a
https://github.com/Nhat-Thanh/Canny-Algorithm

静态编译Opencv与MFC
https://blog.csdn.net/scarletteshu/article/details/106848576
https://blog.csdn.net/jiao_mrswang/article/details/100140140

MFC显示Opencv图片
https://blog.csdn.net/juluwangriyue/article/details/108886191

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值