Sobel边缘检测是一种常用的基于图像梯度的边缘检测算法,它可以有效地检测出图像中的边缘。该算法通过对图像中每个像素应用Sobel算子来计算其在水平和垂直方向上的梯度值,然后将两个梯度值合并成一个值,下面是一个使用C++实现Sobel边缘检测的示例代码:

int main()
{Mat img, gray, grad_x, grad_y, abs_grad_x, abs_grad_y, grad;// 读取图像img = imread("input.jpg");// 将图像转换为灰度图像cvtColor(img, gray, COLOR_BGR2GRAY);// 计算x方向梯度Sobel(gray, grad_x, CV_16S, 1, 0, 3, 1, 0, BORDER_DEFAULT);convertScaleAbs(grad_x, abs_grad_x);// 计算y方向梯度Sobel(gray, grad_y, CV_16S, 0, 1, 3, 1, 0, BORDER_DEFAULT);convertScaleAbs(grad_y, abs_grad_y);// 合并x和y方向梯度addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad);// 显示结果imshow("Input", img);imshow("Sobel Edge Detection", grad);waitKey(0);return 0;
}

在上面的代码中,首先使用imread函数读取输入图像,然后将其转换为灰度图像。接着分别计算x方向和y方向的梯度,并使用convertScaleAbs函数将计算得到的梯度转换为绝对值图像。最后,将x方向和y方向的梯度加权合并,得到最终的边缘检测结果。最后,使用imshow函数显示输入图像和Sobel边缘检测结果,使用waitKey函数等待用户按下键盘上的任意键。

需要注意的是,在计算梯度时,使用了Sobel函数,其中的参数含义如下:

gray:输入灰度图像;
grad_x和grad_y:输出x方向和y方向的梯度;
CV_16S:输出图像的数据类型,使用16位有符号整数;
1和0:表示要计算的梯度的方向,这里分别表示x方向和y方向;
3:表示Sobel算子的大小,这里为3x3;
1和0:表示在计算梯度时要对像素值进行缩放和平移的参数;
BORDER_DEFAULT:表示边界填充方式,这里使用默认方式。

OpenCV边缘检测(二)——Sobel边缘检测相关推荐

  1. OpenCV入门系列 —— Sobel边缘检测

    OpenCV入门系列 -- Sobel边缘检测 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别.定位 ...

  2. OpenCV(十五)边缘检测1 -- Sobel算子(一阶微分算子,X、Y方向边缘检测)

    目录 一.边缘检测基础理论 1.作用: 2.分类 1.基于搜索 2.基于零穿越 3.算子比较 二.Sobel算子基础理论 1.作用 2.原理及推导 3.更详细推导 4.Sobel函数 二.实战 1.对 ...

  3. OpenCV 笔记 -- 边缘检测(Sobel、Laplace、Canny)

    OpenCV 笔记 – 边缘检测(Sobel.Laplace.Canny) 参考文档 一.Sobel 算子 1.简介 Sobel 算子是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度近似值.在 ...

  4. 【OpenCV】边缘检测:Sobel、拉普拉斯算子

    边缘 边缘(edge)是指图像局部强度变化最显著的部分.主要存在于目标与目标.目标与背景.区域与区域(包括不同色彩)之间,是图像分割.纹理特征和形状特征等图像分析的重要基础. 图像强度的显著变化可分为 ...

  5. OpenCV/CUDA—Sobel边缘检测

    一.OpenCV-Sobel边缘检测 #include <opencv2/opencv.hpp> #include <math.h> #include <iostream ...

  6. 利用OpenCV的库函数Sobel和Scharr作图像的边缘检测

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 图像边缘检测的概念我就不多说了,可以参考上一篇博 ...

  7. opencv:卷积涉及的基础概念,Sobel边缘检测代码实现及卷积填充模式

    具体参考我的另一篇文章: opencv:卷积涉及的基础概念,Sobel边缘检测代码实现及Same(相同)填充与Vaild(有效)填充 这里是对这一篇文章的补充! 卷积-三种填充模式 橙色部分为imag ...

  8. Sobel边缘检测算法及OpenCV函数实现

    转自https://www.cnblogs.com/herenzhiming/articles/6526741.html  https://blog.csdn.net/qaz_wz/article/d ...

  9. OpenCV Sobel 边缘检测

    Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素:当对精度要求不是很高时,是一种较为常用的边缘检测方法. OpenCV中sobe ...

最新文章

  1. 配置Linux声卡,让Arch高歌
  2. python列表操作函数大全_Python列表操作函数
  3. linux上安装samba
  4. linux 16.04 WIFI,手动配置 WIFI无线网络 (Ubuntu 16.04)
  5. 图书馆系统java实训报告_基于Java的图书馆管理系统的设计实习报告
  6. 文件二维码制作生成网站
  7. 如何在MacBook中录制iphone模式的视频?macbook屏幕模糊如何解决?
  8. 关于百度指数,你了解多少
  9. java char表_char码值对应列表大全
  10. 哪个软件可以测试服装的衣服,测试男生穿什么衣服的软件:男生脸型测试软件...
  11. android.graphics.bitmap jar,Android入门之画图详解
  12. 手机个人邮箱怎么注册,手机邮箱注册登录
  13. [ Java学习 ] 包语句 package等语句的汇总整理
  14. C语言 扑克牌小游戏
  15. nz-modal 使用
  16. python3使用付费代理和ip池的维护
  17. BeanShell 内置变量 prev详细介绍
  18. MySQL中聚合函数count的使用和性能优化
  19. 维基解密创始人被捕,从“天才黑客”到“阶下之囚”
  20. Matlab高斯白噪声信道仿真

热门文章

  1. echarts球状波浪纹
  2. 微信浏览器移动端禁止图片放大图片效果
  3. vivado下载步骤
  4. window7下开机numlk灯亮的解决方法
  5. python列表的基本操作
  6. ubuntu18.04下用yolo训练自己的数据集
  7. php随机给文字拼音,汉字转化为拼音(php版)
  8. 市盈率概念及计算2021-1-19
  9. 会员向上,广告向下:爱奇艺权衡之道不轻松
  10. 共享单车IOT物联网系统是怎么设计的?