前言

边缘检测是处理图像里面的比较重要的一个概念,现在的边缘有传统的处理算法,也有加入深度学习的边缘检测算法,这里把我用过的几种边缘检测做个对比。

canny算子

1.OpenCV canny() C++ API

void Canny(InputArray image, OutputArray edges, double threshold,double threshold2,int apertureSize = 3,bool L2gradient = false)

参数说明:
InputArray image:输入图像(8-bit)。
OutputArray edges:输出的边缘图像。
double threshold:第一个滞后性阈值
double threshold2:第二个滞后性阈值
int apertureSize:表示应用Sobel算子的孔径大小,默认值为3
bool L2gradient:一个计算图像梯度幅值的标识,默认值false

2.实现步骤(OpenCV官方文档)

3.代码实现

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>cv::Mat src, gray, dst;cv::Mat canny_edges;
int canny_low_threshold = 1; //Canny边缘检测窗口滚动条的回调函数
static void cannyCallBack(int, void *);  int main()
{src = cv::imread("1.jpg");if (src.empty()){return -1;}cv::namedWindow("原图",0);cv::imshow("原图", src);dst.create(src.size(), src.type());//灰度图像cvtColor(src, gray, cv::COLOR_BGR2GRAY);cv::namedWindow("Canny", 0);//创建可调节的窗口cv::createTrackbar("参数值:", "Canny", &canny_low_threshold, 255, cannyCallBack);//调用回调函数cannyCallBack(0, 0);cv::waitKey(0);return 0;
}//回调函数
void cannyCallBack(int, void *)
{//先使用3×3的内核进行降噪blur(gray, canny_edges, cv::Size(3, 3));cv::Mat out;//调用Canny算子Canny(canny_edges, out, canny_low_threshold, canny_low_threshold * 3, 3);dst = cv::Scalar::all(0);src.copyTo(dst, out);//显示效果图imshow("Canny", out);
}

4.运行效果

图像处理——基于OpenCV的canny边缘检测相关推荐

  1. 图像处理——基于OpenCV的Scharr边缘检测

    前言 Scarry是sobel算子的特殊改进情况.当内核大小为3时,Sobel内核可能产生比较明显的误差,为了解决这一问题,Opencv提供了Scharr函数,但该函数仅作用于大小为3的内核,运行速度 ...

  2. 【图像处理】OpenCV中的边缘检测

    [图像处理]OpenCV中的边缘检测 部分参考来源 边缘检测的算子 边缘定义及类型 图像边缘描述 边缘检测算子类别 一阶微分算子:Roberts .Sobel .Prewitt 二阶微分算子:Lapl ...

  3. Python,Opencv cv2.Canny()边缘检测

    Python,Opencv的Canny边缘检测 1. 效果图 2. 源码 参考 这篇博客将介绍Canny边缘检测的概念,并利用cv2.Canny()实现边缘检测: Canny边缘检测是一种流行的边缘检 ...

  4. OpenCV中Canny边缘检测

    OpenCV中Canny边缘检测 具体的Canny边缘检测原理: 1.消除噪声,使用高斯平滑滤波器卷积降噪 2.计算梯度幅值和方向.利用Sobel滤波器. 得到x和y方向的导数Gx和Gy 计算梯度的幅 ...

  5. Python+OpenCV:Canny边缘检测

    Python+OpenCV:Canny边缘检测 理论 Canny边缘检测是目前比较流行的边缘检测算法,它由John F. Canny发明. 1. 这是一个多阶段的算法. 2. 降噪:由于边缘检测容易受 ...

  6. c++gdal如何在大图像中截取小图像并获取其图像信息_【图像处理】OpenCV系列十 --- 边缘检测之Canny算子...

    上一篇我们学习了图像处理形态学相关知识点,相信大家学习之后已经对形态学有了足够的理解了,那么接下来,我们一起来学习一下图像处理中的边缘检测吧!我们将会重点学习边缘检测各种算子和滤波器 --- Cann ...

  7. NNDL 实验六 卷积神经网络(1)卷积 边缘检测之传统边缘检测算子和基于pytorch的Canny边缘检测

    文章目录 卷积神经网络(Convolutional Neural Network,CNN) 5.1 卷积 5.1.1 二维卷积运算 5.1.2 二维卷积算子 5.1.3 二维卷积的参数量和计算量 5. ...

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

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

  9. C/C++ OpenCV之Canny边缘检测

    边缘检查的一般步骤 1.滤波 边缘检查的算法主要是基于图像强度的一阶和二阶倒数,但倒数通常对噪声很敏感,因此必须采用滤波器来 改善与噪声有关的边缘检测器的性能. 2.增强 增强边缘的基础是确定图像各点 ...

最新文章

  1. php flock 死锁了,php – 防止由flock引起的死锁
  2. chrome浏览器解决 跨域调试问题
  3. 命令行中只用scala来运行一个spark应用
  4. linux 安装mysql5.7.12_Linux安装mysql5.7
  5. windows cmd命令行findstr 类似linux中的grep
  6. 蓝桥杯2019年第十届C/C++省赛B组第四题-数的分解
  7. css如何调用函数,从CSS调用JavaScript函数
  8. 任意角度旋转图片(python)
  9. 1分钟教会你怎么PDF转图片,告别手动截图
  10. 网络验证系统BSPHP二次开发 自定义加密解密开发
  11. Xilinx Xio控制sdr sdram
  12. 分享 10 个常见的 CSS 页面布局代码片段
  13. 线性链表实现对二进制数加1运算
  14. python绘图无法显示汉字问题解决方案
  15. 为什么显示网络连接不了服务器,为什么总显示网络连接错误or连接服务器失败?...
  16. 33 | 安全防御工具:如何选择和规划公司的安全防御体系?
  17. Codeforces Round #827 (Div. 4) A~G
  18. c语言double类型是几字节,c语言中int long float double 等类型所占字节及输出表示(转)...
  19. mymps蚂蚁分类信息系统数据库表结构
  20. 火柴人联盟html签到怎,火柴人联盟签到英雄劫技能与使用技巧详解

热门文章

  1. python数据框新建一个列并赋值_pandas.DataFrame 根据条件新建列并赋值的方法
  2. 不是Linux文件系统的权限,Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)...
  3. 【自动驾驶】23.相机成像究竟是成在像平面还是成在焦平面
  4. 【Socket网络编程】15. 发送端和接收端数据大小不一致时 的分析
  5. MSVCRTD.lib(crtexe.obj) : error LNK2019
  6. Kafka【入门】就这一篇!
  7. Java Calendar 获取时间为明天的上午10点
  8. 深入理解多线程(三)—— Java的对象头
  9. 图形处理(十二)拉普拉斯网格优化、最小二乘网格模型光顺
  10. boost源码剖析之:泛型编程精灵type_traits(rev#2)