Canny算法

Canny边缘检测算法被很多人推崇为当今最优秀的边缘检测算法,所以我们第一个就介绍他。

opencv中提供了Canny函数。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//边缘检测
int main()
{Mat img = imread("lol3.jpg");imshow("原始图", img);Mat DstPic, edge, grayImage;//创建与src同类型和同大小的矩阵DstPic.create(img.size(), img.type());//将原始图转化为灰度图cvtColor(img, grayImage, COLOR_BGR2GRAY);//先使用3*3内核来降噪blur(grayImage, edge, Size(3, 3));//运行canny算子Canny(edge, edge, 3, 9, 3);imshow("边缘提取效果", edge);waitKey(0);}

看了canny算法提取的轮廓图,感觉真是厉害,居然把那么细致的额轮廓都提取出来了!

Sobel算法

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//边缘检测
int main()
{Mat img = imread("lol3.jpg");imshow("原始图", img);Mat grad_x, grad_y;Mat abs_grad_x, abs_grad_y, dst;//求x方向梯度Sobel(img, grad_x, CV_16S, 1, 0, 3, 1, 1,BORDER_DEFAULT);convertScaleAbs(grad_x, abs_grad_x);imshow("x方向soble", abs_grad_x);//求y方向梯度Sobel(img, grad_y,CV_16S,0, 1,3, 1, 1, BORDER_DEFAULT);convertScaleAbs(grad_y,abs_grad_y);imshow("y向soble", abs_grad_y);//合并梯度addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);imshow("整体方向soble", dst);waitKey(0);}

通过下图可以看出,sobel的轮廓提取明显有没cnany的那么细致,只是把一些明显轮廓的边缘提取出来了,看起来会更舒服一点。

灰度图的效果

Laplacian算法

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//边缘检测
int main()
{Mat img = imread("lol3.jpg");imshow("原始图", img);Mat gray, dst,abs_dst;//高斯滤波消除噪声GaussianBlur(img, img, Size(3, 3), 0, 0, BORDER_DEFAULT);//转换为灰度图cvtColor(img, gray, COLOR_RGB2GRAY);//使用Laplace函数//第三个参数:目标图像深度;第四个参数:滤波器孔径尺寸;第五个参数:比例因子;第六个参数:表示结果存入目标图Laplacian(gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT);//计算绝对值,并将结果转为8位convertScaleAbs(dst, abs_dst);imshow("laplace效果图", abs_dst);waitKey(0);}

但是感觉效果一般,图像变得模糊了。

opencv学习笔记3:边缘检测(Canny, Sobel, Laplacian)相关推荐

  1. opencv学习笔记18:canny算子边缘检测原理及其函数使用

    canny边缘检测原理 去噪:边缘检测容易受到噪声的影响,在此之间,先去噪,通常采用高斯滤波器.opencv学习笔记11:图像滤波(均值,方框,高斯,中值) 梯度:对去噪后的图像采用sobel算子计算 ...

  2. 《opencv学习笔记》-- 边缘检测和canny算子、sobel算子、LapIacian 算子、scharr滤波器

    目录 边缘检测 canny算子 sobel算子 LapIacian 算子 (拉普拉斯) scharr滤波器 边缘检测 边缘检测步骤: 1.滤波: 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导 ...

  3. 【opencv学习笔记】018之Sobel算子与Scharr算子

    目录 一.前言 二.算子 1.咋理解算子 2.算子定义 三.Sobel算子 1.讲解 2.API 3.代码展示 4.执行结果 四.Scharr算子 1.讲解 2.API 3.代码展示 4.执行结果 一 ...

  4. 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版)

    经过几天的学习,opencv基础部分学习完啦.整理出来. OpenCV opencv学习笔记1:图片读入,显示与保存(有代码) opencv学习笔记2:图像处理基础 opencv学习笔记3:像素处理 ...

  5. OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器

    OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此 ...

  6. opencv学习笔记17:梯度运算之laplacian算子及其应用

    laplacian算子理论 前文介绍了sobel算子及其函数使用 和scharr算子及其函数使用 使用方法 不同算子比较 sobel,和scharr算子:右边121列-左边121列.右边-3,10,3 ...

  7. opencv学习笔记02

    原创博文地址:opencv学习笔记02 OpenCV-Python教程:11.图片阈值 https://www.jianshu.com/p/267a32ad0a23 cv2阈值处理:https://b ...

  8. OpenCV学习笔记(十三):霍夫变换:HoughLines(),HoughLinesP(),HoughCircles( )

    OpenCV学习笔记(十三):霍夫变换:HoughLines(),HoughLinesP(),HoughCircles( ) 1.霍夫线变换HoughLines() OpenCV支持三种不同的霍夫线变 ...

  9. opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  10. OpenCV学习笔记(六)(七)(八)(九)(十)

    OpenCV学习笔记(六)--对XML和YAML文件实现I/O操作 1. XML.YAML文件的打开和关闭 XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如: [c ...

最新文章

  1. 蓝桥杯国赛知识点汇总
  2. 盘点:近两年人工智能和机器学习领域部分收购案
  3. python代码教程-【Python】Python3纯代码极简教程
  4. ms计算机选择题,MS计算机选择题.docx
  5. FFMPEG系列课程(一)打开视频解码器
  6. Android中用GridView实现九宫格的两种方法(转)
  7. 印象大使_基本服务-使用大使网关
  8. django给mysql配主从_django中的mysql主从读写分离:一、配置mysql主从分离
  9. 关于解决MyEclipse的耗内存的办法
  10. C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)
  11. 软件工程和软件开发过程
  12. 高通MSM8998芯片数据资料参考
  13. VB图片分割器九宫格
  14. 两组数据的偏差率_GWT测试报告 篇七十五:隐患难忽视,RIVAL 3 WIRELESS精准度LOD测试...
  15. javascript getElementByID,getElementsByName,getElementsByTagName的区别
  16. HTML5捕鱼php,html5捕鱼达人 游戏源码
  17. Windows Server 2016远程桌面服务配置方法
  18. 工业智能网关BL110应用之六十四: 实现西门子S7-200SMART PLC接入华为 云平台
  19. Windows Server 2012R2配置分层存储,实现廉价的桌面云存储方案
  20. 精易模块中普通填表初始化失败的解决方案

热门文章

  1. 不想听别人的建议,就不要问
  2. python实例方法不可以用类调用_为什么python静态/类方法不可调用?
  3. C# 数组拷贝 byte数组拷贝,char数组拷贝
  4. 用C#代码实现求两条线段的交点并判断各种情况
  5. python绘制好几个子图_求助,python使用matplotlib画子图颜色,修改多个颜色报错...
  6. sqlite3数据存储最多存储多少条数据?达到上限如何处理?_在线公开课 | 在数据爆炸的当下,教你设计一个能实现9个9数据可靠性的存储系统...
  7. matlab 行 读取文件 跳过_Matlab调试:跳过下一行而不执行
  8. python中pickle模块无法导入_python pickle模块
  9. CentOS 7上升级openssh7.5
  10. 批量执行newman