zoukankan      html  css  js  c++  java
  • 边缘检测(Edge Detection)的源代码(需要OPENCV库的支持)

    2004年08月31日 14:33:00

    下面是采用 CANNY 算子进行图像边缘检测的 C/C++ 源代码,在OPENCV BETA 4.0, VC6.0 环境下编译通过。关于OPENCV库的使用方法以及相关问题,请查阅下面的相关文章:

    http://forum.assuredigit.com/display_topic_threads.asp?ForumID=11&TopicID=3471

    运行文件下载地址:

    http://www.assuredigit.com/program/edge.exe

    =========

    程序开始

    =========

    #ifdef _CH_
    #pragma package
    #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;

    // 定义跟踪条的 callback 函数
    void on_trackbar(int h)
    {
        cvSmooth( gray, edge, CV_BLUR, 3, 3, 0 );
        cvNot( gray, edge );

        // 对灰度图像进行边缘检测
        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);

        // 将彩色图像转换为灰度图像
        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



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=90057


  • 相关阅读:
    前端攻城狮学习笔记九:让你彻底弄清offset
    jquery在线手册
    阻止元素的默认行为
    JS三元运算符
    坐标系与基本图元(1) ~转载天行健 君子当自强而不息
    坐标系与基本图元~转载天行健 君子当自强而不息
    VS常见错误
    ZigZag Conversion
    指针转换(数组退化为指针的三种情况)
    POJ 1985
  • 原文地址:https://www.cnblogs.com/feisky/p/1586570.html
Copyright © 2011-2022 走看看