[OpenCV] 2、边缘检测 canny

>_<" 边缘检测代码:

 1 #include "opencv2/imgproc/imgproc.hpp"
 2 #include "opencv2/highgui/highgui.hpp"
 3
 4 #include <stdio.h>
 5
 6 using namespace cv;
 7 using namespace std;
 8
 9 int edgeThresh = 1;
10 Mat image, gray, edge, cedge;
11
12 // define a trackbar callback
13 void onTrackbar(int, void*)
14 {
15     blur(gray, edge, Size(3,3));
16
17     // Run the edge detector on grayscale
18     Canny(edge, edge, edgeThresh, edgeThresh*3, 3);
19     cedge = Scalar::all(0);
20
21     image.copyTo(cedge, edge);
22     imshow("Edge map", cedge);
23 }
24
25 int main( int argc, const char** argv )
26 {
27
28     image = imread("fruits.jpg", 1);//读取图片到mat
29     cedge.create(image.size(), image.type());//用image生成一个cedge
30     //void cvCvtColor( const CvArr* src, CvArr* dst, int code );
31     //src 输入的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像.
32     //dst 输出的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像.
33     //code 色彩空间转换,通过定义 CV_<src_color_space>2<dst_color_space> 常数 (见下面).
34     //函数 cvCvtColor 将输入图像从一个色彩空间转换为另外一个色彩空间。
35     cvtColor(image, gray, CV_BGR2GRAY);//转换为灰度图[色彩空间转换]
36
37     // Create a window
38     namedWindow("Edge map", 1);
39     // create a toolbar
40     createTrackbar("Canny threshold", "Edge map", &edgeThresh, 100, onTrackbar);
41     // Show the image
42     onTrackbar(0, 0);
43
44     // Wait for a key stroke; the same function arranges events processing
45     waitKey(0);
46     return 0;
47 }
时间: 2024-10-04 14:32:15

[OpenCV] 2、边缘检测 canny的相关文章

六 OpenCV图像处理4 Canny 边缘检测

1.Canny 边缘检测原理 步骤: ·1噪声去除: 由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤波器 去除噪声 ·2计算图像梯度: 对平滑后的图像使用 Sobel 算子计算水平方向和竖直方向的一阶导数(图 像梯度)(Gx 和 Gy) 根据得到的这两幅梯度图(Gx 和 Gy)找到边界的梯 度和方向 梯度的方向一般总是与边界垂直.梯度方向被归为四类:垂直,水平,和 两个对角线. ·3非极大值抑制 在获得梯度的方向和大小之后,应该对整幅图像做一个扫描,去除那些非 边界上的点.对

openCV实例:Canny边缘检测

http://blog.sina.com.cn/s/blog_737adf530100z0jk.html 在第一次使用openCV程序成功对图像进行打开后,现在开始试验第二个例程试验:Canny边缘检测 这里算法原理和具体编程语句都先不管,因为作为一名新手(反正我是这么感觉的),拿些现成的程序跑出效果才是让人很有feel的. 先贴下原代码: #include "cv.hpp"#include "cxcore.hpp"#include "opencv2\hi

OpenCV2马拉松第17圈——边缘检测(Canny边缘检测)

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g 收入囊中 利用OpenCV Canny函数进行边缘检测 掌握Canny算法基本理论 分享Java的实现 葵花宝典 在此之前,我们先阐述一下canny检测的算法.总共分为4部分. (1)处理噪声 一般用高斯滤波.OpenCV使用如下核 (2)计算梯度幅值 先用如下Sobel算子计算出水平和竖直梯度 我在OpenCV2马拉松第14圈--边缘检测(Sobel,prewitt,robert

OpenCV 之 边缘检测

上一篇 <OpenCV 之 图像平滑> 中,提到的图像平滑,从信号处理的角度来看,实际上是一种低通滤波器. 本篇中,数字图像的边缘,因为通常都是像素值变化剧烈的区域 (“高频”),故可将边缘检测视为“高通滤波” OpenCV 中,边缘检测常用的是索贝尔算子 (Sobel) 和拉普拉斯算子 (Laplace),分别是对图像求一阶导和二阶导 1  索贝尔算子 (Sobel) 1.1  计算过程 假定输入图像矩阵为 I,卷积核大小为 3x3,则水平一阶导数 Gx 和垂直一阶导数 Gy 分别为: $\

Opencv对图像做边缘检测——canny算子

图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘. Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法.Canny 边缘检测的数学原理和算法实现这里就不再了,有兴趣的读者可以查阅专业书籍,本文主要介绍如何在OpenCV中对图像进行Canny 边缘检测,下面就来看看这个函数的原型. 一. 主要函数 1.1 cvCanny 函数功能:采用Canny方法对图像进行边缘检测 函数原型:

opencv python:Canny边缘提取

Canny是边缘提取算法,在1986年提出的 是一个很好的边缘检测器 Canny算法介绍 非最大信号抑制: 高低阈值连接: example import cv2 as cv import numpy as np # canny运算步骤:5步 # 1. 高斯模糊 - GaussianBlur # 2. 灰度转换 - cvtColor # 3. 计算梯度 - Sobel/Scharr # 4. 非极大值抑制 # 5. 高低阈值输出二值图像 # 非极大值抑制: # 算法使用一个3×3邻域作用在幅值阵列

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

推荐博文,博客. Reference Link : http://blog.csdn.net/xiaowei_cqu/article/details/7829481

【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们将一起学习OpenCV中

OpenCV笔记(十六)——使用Canny方法进行边缘检测

Canny方法被许多人认为是拿来做边缘检测的最佳的方法. 在维基百科上有关于Canny方法的比较详细的介绍:http://en.wikipedia.org/wiki/Canny_edge_detector 所以下面只是简单地提一下,因为暂时没有充裕的时间去阅读OpenCV实现Canny的源代码. Canny方法大体上以四个步骤完成: 1. 利用高斯滤波器过滤噪声. 2. 利用Sobel相似的方法得到图像的强度的梯度.(Sobel算子对图像做微分) 3. 利用Non-maximum suppres