opencv学习笔记3:边缘检测(Canny, Sobel, Laplacian)
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)相关推荐
- opencv学习笔记18:canny算子边缘检测原理及其函数使用
canny边缘检测原理 去噪:边缘检测容易受到噪声的影响,在此之间,先去噪,通常采用高斯滤波器.opencv学习笔记11:图像滤波(均值,方框,高斯,中值) 梯度:对去噪后的图像采用sobel算子计算 ...
- 《opencv学习笔记》-- 边缘检测和canny算子、sobel算子、LapIacian 算子、scharr滤波器
目录 边缘检测 canny算子 sobel算子 LapIacian 算子 (拉普拉斯) scharr滤波器 边缘检测 边缘检测步骤: 1.滤波: 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导 ...
- 【opencv学习笔记】018之Sobel算子与Scharr算子
目录 一.前言 二.算子 1.咋理解算子 2.算子定义 三.Sobel算子 1.讲解 2.API 3.代码展示 4.执行结果 四.Scharr算子 1.讲解 2.API 3.代码展示 4.执行结果 一 ...
- 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版)
经过几天的学习,opencv基础部分学习完啦.整理出来. OpenCV opencv学习笔记1:图片读入,显示与保存(有代码) opencv学习笔记2:图像处理基础 opencv学习笔记3:像素处理 ...
- OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器
OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此 ...
- opencv学习笔记17:梯度运算之laplacian算子及其应用
laplacian算子理论 前文介绍了sobel算子及其函数使用 和scharr算子及其函数使用 使用方法 不同算子比较 sobel,和scharr算子:右边121列-左边121列.右边-3,10,3 ...
- opencv学习笔记02
原创博文地址:opencv学习笔记02 OpenCV-Python教程:11.图片阈值 https://www.jianshu.com/p/267a32ad0a23 cv2阈值处理:https://b ...
- OpenCV学习笔记(十三):霍夫变换:HoughLines(),HoughLinesP(),HoughCircles( )
OpenCV学习笔记(十三):霍夫变换:HoughLines(),HoughLinesP(),HoughCircles( ) 1.霍夫线变换HoughLines() OpenCV支持三种不同的霍夫线变 ...
- opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- OpenCV学习笔记(六)(七)(八)(九)(十)
OpenCV学习笔记(六)--对XML和YAML文件实现I/O操作 1. XML.YAML文件的打开和关闭 XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如: [c ...
最新文章
- 蓝桥杯国赛知识点汇总
- 盘点:近两年人工智能和机器学习领域部分收购案
- python代码教程-【Python】Python3纯代码极简教程
- ms计算机选择题,MS计算机选择题.docx
- FFMPEG系列课程(一)打开视频解码器
- Android中用GridView实现九宫格的两种方法(转)
- 印象大使_基本服务-使用大使网关
- django给mysql配主从_django中的mysql主从读写分离:一、配置mysql主从分离
- 关于解决MyEclipse的耗内存的办法
- C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)
- 软件工程和软件开发过程
- 高通MSM8998芯片数据资料参考
- VB图片分割器九宫格
- 两组数据的偏差率_GWT测试报告 篇七十五:隐患难忽视,RIVAL 3 WIRELESS精准度LOD测试...
- javascript getElementByID,getElementsByName,getElementsByTagName的区别
- HTML5捕鱼php,html5捕鱼达人 游戏源码
- Windows Server 2016远程桌面服务配置方法
- 工业智能网关BL110应用之六十四: 实现西门子S7-200SMART PLC接入华为 云平台
- Windows Server 2012R2配置分层存储,实现廉价的桌面云存储方案
- 精易模块中普通填表初始化失败的解决方案
热门文章
- 不想听别人的建议,就不要问
- python实例方法不可以用类调用_为什么python静态/类方法不可调用?
- C# 数组拷贝 byte数组拷贝,char数组拷贝
- 用C#代码实现求两条线段的交点并判断各种情况
- python绘制好几个子图_求助,python使用matplotlib画子图颜色,修改多个颜色报错...
- sqlite3数据存储最多存储多少条数据?达到上限如何处理?_在线公开课 | 在数据爆炸的当下,教你设计一个能实现9个9数据可靠性的存储系统...
- matlab 行 读取文件 跳过_Matlab调试:跳过下一行而不执行
- python中pickle模块无法导入_python pickle模块
- CentOS 7上升级openssh7.5
- 批量执行newman