前言

上节已经讲了图像处理中Canny边缘检测算法原理

https://blog.csdn.net/Aidam_Bo/article/details/86099421

这节主要依据原理,代码佐证

话不多说,直接上码

一、源码

#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;//指向原始图像和处理后图像的指针
IplImage *OriginalImage, *GrayImage, *CannyImage;
//原始图像窗口和后期窗口名字
const char *OriginalWindowsNmae = "边缘检测Img_Original";
const char *GrayWindowsName = "边缘检测Img_Gray";
const char *CannyWindowsName = "边缘检测Img_Canny";//trackbar回调函数,当trackbar滑条值发生改变时就会触发该函数
void on_trackbar(int Threshold)
{cvCanny(GrayImage, CannyImage, Threshold, Threshold * 3, 3);cvShowImage(CannyWindowsName, CannyImage);
}
int main()
{//图像(彩色)char *OriginalImageName = "nini2.jpg";char *WindowsToolBar = "Threshold";//原始图像(0:灰度图)OriginalImage = cvLoadImage(OriginalImageName, 260);GrayImage = cvLoadImage(OriginalImageName, 0);CannyImage = cvCreateImage(cvGetSize(GrayImage), IPL_DEPTH_8U, 1);//创建显示原图的窗口cvNamedWindow(OriginalWindowsNmae, 1);//创建显示原图的窗口cvNamedWindow(GrayWindowsName, 1);//创建显示处理后图像的窗口cvNamedWindow(CannyWindowsName, 1);//创建滑条int ThresholdEdge = 1;cvCreateTrackbar(WindowsToolBar, CannyWindowsName, &ThresholdEdge, 100, on_trackbar);//显示原始图像(彩色图)cvShowImage(OriginalImageName,OriginalImage);//显示原始图像(灰度图) cvShowImage(GrayWindowsName, GrayImage);on_trackbar(1);cvWaitKey();//销毁窗口cvDestroyWindow(OriginalWindowsNmae);cvDestroyWindow(GrayWindowsName);cvDestroyWindow(CannyWindowsName);//释放图像cvReleaseImage(&OriginalImage);cvReleaseImage(&GrayImage);cvReleaseImage(&CannyImage);return 0;
}

二、效果图

对 (倪妮版) >=-=<

原图:

OriginalImage

灰度图:

GrayImage
​​​​​

Canny算法处理后:

Canny算法

阀值=15时

阀值=15

.阀值=30时

.阀值=30时

阀值=60时

阀值=60时

阀值=100时

阀值=100时

完工~

图像处理总结:Canny边缘检测(二)相关推荐

  1. 图像处理之Canny边缘检测

    图像处理之Canny 边缘检测 一:历史 Canny边缘检测算法是1986年有John F. Canny开发出来一种基于图像梯度计算的边缘 检测算法,同时Canny本人对计算图像边缘提取学科的发展也是 ...

  2. 图像处理---《Canny 边缘检测》

    图像处理---<Canny 边缘检测> 很想系统的把图像处理之边缘检测部分详细的过一遍,对比一个各个算子的优良性能.时间紧,精力有限,现在只能走哪补哪,随手记. 有几个简单的场景,有需要, ...

  3. 【数字图像处理】Canny边缘检测详解及编程实现

    Canny边缘检测算法一直是边缘检测的经典算法.下面详细介绍Canny边缘检测算法的原理以及编程实现. Canny边缘检测基本原理: (1)图象边缘检测必须满足两个条件:一能有效地抑制噪声:二必须尽量 ...

  4. 图像处理:Canny边缘检测算法原理(一)

    图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值.图象的边缘部分集中了图象的大部分信息,图象边 ...

  5. 图像处理: Canny边缘检测

    # Canny边缘检测 Canny边缘检测流程: 1,使用高斯滤波,以平滑图像,滤除噪声(归一化处理) 2.计算图像中每个像素点的梯度强度和方向(Sobel算子计算Gx.Gy) 3.应用非极大值抑制( ...

  6. 数字图像处理100问—43 Canny 边缘检测:第三步——滞后阈值

    提示:内容整理自:https://github.com/gzr2017/ImageProcessing100Wen CV小白从0开始学数字图像处理 43 Canny 边缘检测:第三步--滞后阈值 在这 ...

  7. 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)

    图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 不同图像灰度不同,边界处一般会有明显边缘,利用此特征可以分割图像.需要说明的是: ...

  8. 自动驾驶感知-车道线系列(二)——Canny边缘检测

    Canny边缘检测 前言 一.Canny是什么? 二.算法详细步骤 1. 平滑处理 2. 梯度检测 3. 非极大值抑制 4. 滞后阈值处理 三.函数原型 四.应用实例 五.总结 前言 边缘检测是图像处 ...

  9. OpenCV中的图像处理 —— 图像梯度+Canny边缘检测+图像金字塔

    OpenCV中的图像处理 -- 图像梯度+Canny边缘检测+图像金字塔 目录 OpenCV中的图像处理 -- 图像梯度+Canny边缘检测+图像金字塔 1. 图像梯度 1.1 Sobel和Schar ...

最新文章

  1. 用AlphaGo设计材料合成实验
  2. Apache用户认证,域名跳转
  3. matlab交流电源并联,交流电路串联谐振和并联谐振的仿真分析
  4. java rest 图_SpringMVC视图及REST风格
  5. 1900页Python系列PPT分享八:异常处理结构与程序调试、测试(70页)
  6. spring boot 教程(三)配置详解
  7. FileRecv VNCViewer 使用方法
  8. 机器学习(3)--LR算法
  9. python创建空字典什么意思_Python3基础 dict 创建字典 空字典
  10. python基于PHP+MySQL的学生社团管理系统
  11. 和阿文一起学H5——H5工具、素材
  12. 3d游戏建模行业发展前景和待遇怎么样?学习的渠道有哪些
  13. 兰州理工大学计算机专业课,兰州理工大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  14. 南开1809计算机应用基础在线作业,【奥鹏】南开21春学期(1709、1803、1809、1903、1909、2003、2009、2103)《计算机应用基础》在线作业1...
  15. java 匿名函数_Java中的lambda匿名函数使用
  16. Excel行列转置(行数据与列数据的转换)
  17. 好工具推荐---radmin viewer3.5正式版
  18. 【Java知识点总结】Java语句简介及顺序结构
  19. android虚拟内置sd卡,Android: 浅论虚拟SD卡的实现
  20. java读取图片并显示

热门文章

  1. EDA实验课课程笔记(一)——linux操作系统及linux下的基本指令
  2. 一段C#学习代码(实现通过积分的几何意义计算积分)
  3. Oracle数据库使用Navicat premium创建用户时遇到的坑
  4. mybatisplus page排序_PostgreSQL使用WITH xxx AS()查询,使用Page中的OrderItem排序,会把WITH xxx AS()这段SQL忽略导致报错...
  5. 对象当前正在其他地方使用_2019 为什么我们还会继续使用 PHP ?
  6. base64解码_一份简明的 Base64 原理解析
  7. 发现 nios2-elf-gcc 一处 bug
  8. GDAL不支持创建PCIDSK的面状矢量格式
  9. C语言查看tuxedo队列长度,tuxedo的常用启、停、参数讲解、日志查看
  10. Java多线程(六)——多线程的阻塞队列