图像处理——基于OpenCV的canny边缘检测
前言
边缘检测是处理图像里面的比较重要的一个概念,现在的边缘有传统的处理算法,也有加入深度学习的边缘检测算法,这里把我用过的几种边缘检测做个对比。
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边缘检测相关推荐
- 图像处理——基于OpenCV的Scharr边缘检测
前言 Scarry是sobel算子的特殊改进情况.当内核大小为3时,Sobel内核可能产生比较明显的误差,为了解决这一问题,Opencv提供了Scharr函数,但该函数仅作用于大小为3的内核,运行速度 ...
- 【图像处理】OpenCV中的边缘检测
[图像处理]OpenCV中的边缘检测 部分参考来源 边缘检测的算子 边缘定义及类型 图像边缘描述 边缘检测算子类别 一阶微分算子:Roberts .Sobel .Prewitt 二阶微分算子:Lapl ...
- Python,Opencv cv2.Canny()边缘检测
Python,Opencv的Canny边缘检测 1. 效果图 2. 源码 参考 这篇博客将介绍Canny边缘检测的概念,并利用cv2.Canny()实现边缘检测: Canny边缘检测是一种流行的边缘检 ...
- OpenCV中Canny边缘检测
OpenCV中Canny边缘检测 具体的Canny边缘检测原理: 1.消除噪声,使用高斯平滑滤波器卷积降噪 2.计算梯度幅值和方向.利用Sobel滤波器. 得到x和y方向的导数Gx和Gy 计算梯度的幅 ...
- Python+OpenCV:Canny边缘检测
Python+OpenCV:Canny边缘检测 理论 Canny边缘检测是目前比较流行的边缘检测算法,它由John F. Canny发明. 1. 这是一个多阶段的算法. 2. 降噪:由于边缘检测容易受 ...
- c++gdal如何在大图像中截取小图像并获取其图像信息_【图像处理】OpenCV系列十 --- 边缘检测之Canny算子...
上一篇我们学习了图像处理形态学相关知识点,相信大家学习之后已经对形态学有了足够的理解了,那么接下来,我们一起来学习一下图像处理中的边缘检测吧!我们将会重点学习边缘检测各种算子和滤波器 --- Cann ...
- NNDL 实验六 卷积神经网络(1)卷积 边缘检测之传统边缘检测算子和基于pytorch的Canny边缘检测
文章目录 卷积神经网络(Convolutional Neural Network,CNN) 5.1 卷积 5.1.1 二维卷积运算 5.1.2 二维卷积算子 5.1.3 二维卷积的参数量和计算量 5. ...
- 数字图像处理100问—43 Canny 边缘检测:第三步——滞后阈值
提示:内容整理自:https://github.com/gzr2017/ImageProcessing100Wen CV小白从0开始学数字图像处理 43 Canny 边缘检测:第三步--滞后阈值 在这 ...
- C/C++ OpenCV之Canny边缘检测
边缘检查的一般步骤 1.滤波 边缘检查的算法主要是基于图像强度的一阶和二阶倒数,但倒数通常对噪声很敏感,因此必须采用滤波器来 改善与噪声有关的边缘检测器的性能. 2.增强 增强边缘的基础是确定图像各点 ...
最新文章
- php flock 死锁了,php – 防止由flock引起的死锁
- chrome浏览器解决 跨域调试问题
- 命令行中只用scala来运行一个spark应用
- linux 安装mysql5.7.12_Linux安装mysql5.7
- windows cmd命令行findstr 类似linux中的grep
- 蓝桥杯2019年第十届C/C++省赛B组第四题-数的分解
- css如何调用函数,从CSS调用JavaScript函数
- 任意角度旋转图片(python)
- 1分钟教会你怎么PDF转图片,告别手动截图
- 网络验证系统BSPHP二次开发 自定义加密解密开发
- Xilinx Xio控制sdr sdram
- 分享 10 个常见的 CSS 页面布局代码片段
- 线性链表实现对二进制数加1运算
- python绘图无法显示汉字问题解决方案
- 为什么显示网络连接不了服务器,为什么总显示网络连接错误or连接服务器失败?...
- 33 | 安全防御工具:如何选择和规划公司的安全防御体系?
- Codeforces Round #827 (Div. 4) A~G
- c语言double类型是几字节,c语言中int long float double 等类型所占字节及输出表示(转)...
- mymps蚂蚁分类信息系统数据库表结构
- 火柴人联盟html签到怎,火柴人联盟签到英雄劫技能与使用技巧详解
热门文章
- python数据框新建一个列并赋值_pandas.DataFrame 根据条件新建列并赋值的方法
- 不是Linux文件系统的权限,Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)...
- 【自动驾驶】23.相机成像究竟是成在像平面还是成在焦平面
- 【Socket网络编程】15. 发送端和接收端数据大小不一致时 的分析
- MSVCRTD.lib(crtexe.obj) : error LNK2019
- Kafka【入门】就这一篇!
- Java Calendar 获取时间为明天的上午10点
- 深入理解多线程(三)—— Java的对象头
- 图形处理(十二)拉普拉斯网格优化、最小二乘网格模型光顺
- boost源码剖析之:泛型编程精灵type_traits(rev#2)