您的位置:首页 > 运维架构

OPENCV例程2 :CANNY算子边缘检测

2013-08-07 11:11 281 查看
转自:http://yu2xiangyang.blog.163.com/blog/static/37315638201091242739364/

#include "stdafx.h"

#include "cv.h"

#include "highgui.h"

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);   //使边缘为彩色图象,如果直接复制edge到cedge,显示的是黑白边缘

    cvShowImage(wndname, cedge);

}

int main( int argc, char** argv )

{

   

 image = cvLoadImage( "E:\lena.jpg", 1);

    // Create the output image

    cedge = cvCreateImage( cvGetSize(image), IPL_DEPTH_8U, 3);

    // Convert to grayscale

    gray = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);

    edge = cvCreateImage(cvGetSize(image), 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;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ OpenCV
相关文章推荐