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

vs2010+MFC+OpenCV实现Canny边缘检测(文档) 用VS2010环境,创建MFC工程,使用OpenCV库函数,实现Canny边缘检测 立即下载

前言

作业要求使用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.youkuaiyun.com/scarletteshu/article/details/106848576
https://blog.youkuaiyun.com/jiao_mrswang/article/details/100140140

MFC显示Opencv图片
https://blog.youkuaiyun.com/juluwangriyue/article/details/108886191

基于MFC的界面设计,包括灰度化、边缘检测、图像反转、均值、中值滤波,适合初学者,有详细注释。 立即下载

相关推荐

VS2008 MFC下用OpenCV2.0进行图像读取和边缘检测

VS2008 MFC下用OpenCV2.0进行图像读取和边缘检测,通过对话框来打开图像文件、然后图像大小进行缩放、适当地显示在图片控件的框架内。

OpenCV——Canny边缘检测

OpenCV——Canny边缘检测算法的C++与python代码实现。

点云侠的博客 6884

在vc下开发的canny边缘检测 MFC

在VC6.0下编译通过的 采用mfc可视化的的界面 效果不错

VC++中使用OpenCV进行形状和轮廓检测

在VC++中使用OpenCV进行形状和轮廓检测,轮廓是形状分析以及物体检测和识别的有用工具。如下面的图像中Shapes.png中有三角形、矩形、正方形、圆形等,我们如何去区分不同的形状,并且根据轮廓进行检测呢?1、首先我们对原始图像进行预处理,将原始图形灰度化、高斯模糊、Canny边缘检测、膨胀化处理,最后得到一副膨胀的图形2、基于这幅膨胀的图像,我们调用函数从膨胀化的二值图像中检索出所有的轮廓,结果放到数组中。

ccf19881030的专栏 1798

基于MFC的边缘检测

程序还不是很全,拿去当个参考吧 在中文版的VC中运行,英文的估计不行

从IMC层到应力点:手把手教你用SEM/EDS给BGA焊点做一次‘体检’

本文详细介绍了如何使用SEM/EDS技术对BGA焊点进行全面失效分析,从样品制备到SEM观察、EDS分析,再到综合诊断,手把手教你识别焊点的微观特征和成分异常。文章特别强调了IMC层分析在BGA焊接失效诊断中的关键作用,并提供了实用的实验室技巧和常见失效模式对照表,帮助工程师快速定位问题根源。

weixin_42685438的博客 384

OpenCV,三大边缘检测Canny,Sobel,Laplacian,及MFC实现

Sobel 使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分 void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 ); src输入图像.dst输出图像.xorderx 方向上的差分阶数yordery 方向上的差分阶数aperture_size扩展

EbowTang的练习场 6506

LwIP TCP Client 解决长数据发送的困扰

问题描述 LWIP 的 TCP Client 发送数据可以调用 tcp_write() 函数,将数据储存在缓冲区里面,然后等待超时自动发送或者调用tcp_output()函数进行发送。 然而 tcp_write() 函数 需要发送的数据过长时,将无法发送,并返回 ERR_MEM。 tcp_write()函数解析 tcp_write()的函数代码很多,就不细看代码了, 先看tcp_write()的完整函数: err_t tcp_write(struct tcp_pcb *pcb, const void

tiantangmoke的博客 1万+

c++和mfc图像处理课设

大二图像处理课设

weixin_46081204的博客 1716

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

伶俐角少儿编程 820

【EDA Tools】Spyglass 检查 Verilog 和 SystemVerilog 混合语言及 Lint 检查

Spyglass可以用于检查混合设计中的语言互操作性和一致性问题。对于设计中包含多种硬件描述语言的情况,Spyglass 能够识别并解析其中的模块及其互连,并对其进行验证。例如,在包含 Verilog 和 VHDL 的混合设计中,Spyglass 会自动识别并解析 Verilog 和 VHDL 文件及其相互连接。通过运行 Spyglass Lint 功能,可以检查混合设计中的语言一致性问题,例如不兼容的数据类型、互操作性问题以及其他可能导致设计故障或不一致的问题。

记录学习历程 5082

快速上手opencv_contrib安装(Windows11)

这里写自定义目录标题安装资料准备cmake安装opencv4.2.0源代码编译和opencv4.2.0_contirb源代码编译功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 安装资料准备 安装包:visual studio 2

qq_53084915的博客 6737

C++程序无法正常启动(报0xc000007b错误)问题的详细排查

本文详细介绍了应用程序启动时遇到0xC000007B错误的排查过程。问题源于32位程序与64位运行时库的不匹配,以及缺少依赖的运行时库。通过分析系统日志、使用Windbg和检查程序位数,最终确定问题在于32位程序误引用了64位系统目录下的库文件。

dvlinker的技术专栏 1万+

OpenCV CxImage CImg FreeImage对比

1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法; 然后将图像格式和矩阵运算,然后将各个算法的实现函数。 我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。 而且该库显示图像极其方便,两句话就可以。 但该库似乎

qiongguishanglu的专栏 1006

【Flutter 问题系列第 85 篇】Xcode 运行 Flutter 提示 The Dart VM Service was not discovered after 60 seconds.

在 Xcode 上运行 Flutter 时提示 `The Dart VM Service was not discovered after 60 seconds. This is taking much longer than expected...`,意思是 `60秒后未发现Dart虚拟机服务。这比预期的要长得多`

“Allen Su”的博客 2239

GEE:变异系数法在遥感影像分析中的应用及权重计算

本文介绍了在Google Earth Engine(GEE)平台上基于变异系数法的多指标加权遥感影像分析方法。该方法通过计算每个指标的平均值和标准差,进而计算变异系数来评估指标的变化程度。利用变异系数,我们可以计算每个指标的权重,并将其应用于加权和指数的计算,从而提高遥感影像分析的准确性和可靠性。方法应用于计算Risk-Screening Environmental Indicators (RSEI),并以此为例。

养乐多的博客 2288

四大图像库的使用感受:OpenCV/FreeImage/CImg/CxImage

 转贴地址:http://blog.csdn.net/bugzhao/archive/2005/03/28/332308.aspx对OpenCV的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法;然后将图像格式和矩阵运算,然后将各个算法的实现函数。我用它来做了一个Harris角点检测器和Cann

rabbit729的专栏 1424

通过理解 sk_buff 深入掌握 Linux 内核自定义协议族的开发实现

在。

数字人生 458

图像识别四大图像库比较:OpenCV/FreeImage/CImg/CxImage

1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法; 然后将图像格式和矩阵运算,然后将各个算法的实现函数。 我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。 而且该库显示图像极其方便,两句话就可以。 但该库似乎不大

qq_38080117的博客 6668

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

图像处理库的比较:OpenCV,FreeImage,CImg,CxImage

1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法; 然后将图像格式和矩阵运算,然后将各个算法的实现函数。我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。而且该库显示图像极其方便,两句话就可以。但该库似乎不大稳定,对32...

weixin_34041003的博客 144

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

四大图像库OpenCV/FreeImage/CImg/CxImage简述

转自:http://blog.sina.com.cn/s/blog_65e27be30100ido4.html(非原处)   1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法; 然后将图像格式和矩阵运算,然后将各个算法的实现函数。 我用它来做了一个Harris角点检

Armily的专栏 1157

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: Paddle重写Pytorch:DataLoader报错SystemError: (Fatal) Blocking queue is killed because the data reader ra
下一篇: 机器学习常用特征相似度或距离度量【Pytorch实现】
liuz_notes
博客等级 码龄8年 204粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值