edge.cpp
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:1k
源码类别:

OpenCV

开发平台:

Visual C++

  1. #include "cv.h"
  2. #include "highgui.h"
  3. char wndname[] = "Edge";
  4. char tbarname[] = "Threshold";
  5. int edge_thresh = 1;
  6. IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0;
  7. // 定义跟踪条的 callback 函数
  8. void on_trackbar(int h)
  9. {
  10.     cvSmooth( gray, edge, CV_BLUR, 3, 3, 0 );
  11.     cvNot( gray, edge );
  12.     // 对灰度图像进行边缘检测
  13.     cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*3, 3);
  14.     cvZero( cedge );
  15.     // copy edge points
  16.     cvCopy( image, cedge, edge );
  17.     // 显示图像
  18.     cvShowImage(wndname, cedge);
  19. }
  20. int main( int argc, char** argv )
  21. {
  22.     char* filename = argc == 2 ? argv[1] : (char*)"fruits.jpg";
  23.     
  24.     if( (image = cvLoadImage( filename, 1)) == 0 )
  25.         return -1;
  26.     // Create the output image
  27.     cedge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 3);
  28.     // 将彩色图像转换为灰度图像
  29.     gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
  30.     edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
  31.     cvCvtColor(image, gray, CV_BGR2GRAY);
  32.     // Create a window
  33.     cvNamedWindow(wndname, 1);
  34.     // create a toolbar 
  35.     cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);
  36.     // Show the image
  37.     on_trackbar(0);
  38.     // Wait for a key stroke; the same function arranges events processing
  39.     cvWaitKey(0);
  40.     cvReleaseImage(&image);
  41.     cvReleaseImage(&gray);
  42.     cvReleaseImage(&edge);
  43.     cvDestroyWindow(wndname);
  44.     return 0;
  45. }