学习【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑---思维导图笔记

本文详细介绍了OpenCV中的边缘检测技术,包括Canny算子、Sobel算子、Laplace算子和Scharr滤波器的理论知识及代码示例。通过实例展示了各算子在边缘检测中的应用,如canny_do1()和canny_do2()函数的边缘检测效果,以及Sobel、Laplace和Scharr的代码实现与效果图。
摘要由CSDN通过智能技术生成

本文由@浅墨_毛星云 出品,  文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901

今天跟他学习OpenCV中边缘检测的各种算子和滤波器——Canny算子,Sobel算子,Laplace算子以及Scharr滤波器。

理论知识如下思维导图:

一、关于边缘检测的基础知识:


二、canny算子篇

canny函数的示例代码如下:

#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>

using namespace cv;
using namespace std;

Mat src,dst1,dst2;


//执行canny检测方法1
void canny_do1()
{
	dst1=src.clone();
	//拿到原图后直接执行canny函数
	Canny(src,dst1,200,100,3);
	if(!dst1.empty())
	{
	imshow("canny边缘检测1",dst1);
	
	}

}

//执行高阶canny检测
void canny_do2()
{
	Mat gray,edge;
	//高阶canny用法,转成灰度图,降噪,用canny,最后将得到的边缘掩码,
	//拷贝原图到效果图上,得到彩色边缘图
	//1.创建与src尺寸大小一样的矩阵,并初始化为0
	dst2=Mat::zeros(src.size(),src.type());
	//2.将图像转换为灰度图像
	cvtColor(src,gray,CV_BGR2GRAY);
	//3.先用3*3内核降噪
	blur(gray,edge,Size(3,3));
	//4.运行canny算子
	Canny(edge,edge,3,9,3);
	//5.直接输出canny边缘检测的边缘图edge
	imshow("canny边缘检测2",edge);
	//6.用canny检测后的边缘图做为掩码,将原图拷贝到目标图上,得到彩色边缘图dst2
	src.copyTo(dst2,edge);
	imshow("canny边缘检测3",dst2);
}

int main()
{
	src=imread("img/canny.png");
	imshow("原图",src);
	//namedWindow("canny边缘检测1");可以省略不写imshow()直接展示
	//namedWindow("canny边缘检测2");
	canny_do1();
	canny_do2();
	waitKey(0);
	return 0;
}

对应原图:


函数canny_do1()直接检测的边缘效果图:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值