Canny边缘检测

转载 2012年03月29日 19:13:42
#ifdef _CH_
#pragma package <opencv>
#endif

#ifndef _EiC
#include "cv.h"
#include "highgui.h"
#endif

char wndname[] = "Edge";
char tbarname[] = "Threshold";
int edge_thresh = 1;

IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0;

// define a trackbar callback
void on_trackbar(int h)
{
    cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 );
    cvNot( gray, edge );

    // Run the edge detector on grayscale
    cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*3, 3);

    cvZero( cedge );
    // copy edge points
    cvCopy( image, cedge, edge );

    cvShowImage(wndname, cedge);
}

int main( int argc, char** argv )
{
    char* filename = argc == 2 ? argv[1] : (char*)"fruits.jpg";

    if( (image = cvLoadImage( filename, 1)) == 0 )
    return -1;

    // Create the output image
    cedge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 3);

    // Convert to grayscale
    gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
    edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
    cvCvtColor(image, gray, CV_BGR2GRAY);

    // Create a window
    cvNamedWindow(wndname, 1);

    // create a toolbar 
    cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);

    // Show the image
    on_trackbar(0);

    // Wait for a key stroke; the same function arranges events processing
    cvWaitKey(0);
    cvReleaseImage(&image);
    cvReleaseImage(&gray);
    cvReleaseImage(&edge);
    cvDestroyWindow(wndname);

    return 0;
}

#ifdef _EiC
main(1,"edge.c");
#endif 

Canny边缘检测算子

Canny提出一种新的边缘检测方法,它对受白噪声影响的阶跃型边缘是最优的。Canny检测子的最优性与三个标准有关:第一、检测标准:不失去重要的边缘,不应有虚假的边缘;第二、定位标准:实际边缘与检测到的...
  • utimes
  • utimes
  • 2013年10月13日 23:29
  • 11614

canny边缘检测C\C++实现

原理不多说,直接上代码 #define PI 3.1415926 #define EDGE_VALUE 235 #define NON_EDGE_VALUE 16...
  • Zhangbei_
  • Zhangbei_
  • 2016年09月09日 21:25
  • 1706

算法解剖系列-Canny边缘检测原理及实现

Canny边缘检测原理及Matlab实现
  • liuzhuomei0911
  • liuzhuomei0911
  • 2016年05月08日 14:38
  • 6607

Canny边缘检测及C++实现

Canny边缘检测算法是澳大利亚科学家John F. Canny在1986年提出来的,不得不提一下的是当年John Canny本人才28岁!到今天已经30年过去了,Canny算法仍然是图像边缘检测算法...
  • dcrmg
  • dcrmg
  • 2016年08月28日 13:26
  • 10379

图像处理之Canny边缘检测

带你一步一步剖析经典图像边缘检测算法Canny Edge Detection,从高斯模糊到 梯度计算、边缘幅值与角度计算、非最大信号压制、双阈值选取边缘、边缘连接到 结果输出,完整代码实现。...
  • jia20003
  • jia20003
  • 2014年11月16日 16:50
  • 36029

Canny边缘检测原理与C++实现(1)原理部分

canny 边缘检测的原理 和 c++实现
  • zhubaohua_bupt
  • zhubaohua_bupt
  • 2017年06月28日 09:26
  • 555

Canny边缘检测算法原理及其VC实现详解(一)

图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边...
  • tercel_zhang
  • tercel_zhang
  • 2016年04月01日 14:20
  • 2741

Canny边缘检测算法原理及其VC实现详解(三)

图像处理之Canny 边缘检测 一:历史 Canny边缘检测算法是1986年有John F. Canny开发出来一种基于图像梯度计算的边缘 检测算法,同时Canny本人对计算图像边缘...
  • yansmile1
  • yansmile1
  • 2015年06月12日 22:55
  • 2333

OpenCV-Python教程(8、Canny边缘检测)

本篇文章介绍如何用OpenCV-Python来使用Canny算子。 提示: 转载请详细注明原作者及出处,谢谢! 本文介绍使用OpenCV-Python实现基本的滤波处理本文不介详细的...
  • sunny2038
  • sunny2038
  • 2013年06月30日 17:48
  • 33740

高斯滤波及canny边缘检测代码实现

最近这两天在看canny边缘检测,看到opencv的源码就头大,最后参考诸位大神原理解析,自己实现了一个canny边缘检测。现在写下来和大家分享,自己顺便做个笔记。 首先列举一下大神的帖子: Cann...
  • chengkun183
  • chengkun183
  • 2015年03月19日 21:15
  • 2526
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Canny边缘检测
举报原因:
原因补充:

(最多只允许输入30个字)