125147ce36f9855793bc4d86ce452d9aa3c38996
[profile/ivi/opencv.git] / samples / c / edge.c
1 #include <opencv2/imgproc/imgproc.hpp>
2 #include <opencv2/highgui/highgui.hpp>
3
4 char wndname[] = "Edge";
5 char tbarname[] = "Threshold";
6 int edge_thresh = 1;
7
8 IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0;
9
10 // define a trackbar callback
11 void on_trackbar(int h)
12 {
13     cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 );
14     cvNot( gray, edge );
15
16     // Run the edge detector on grayscale
17     cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*3, 3);
18
19     cvZero( cedge );
20     // copy edge points
21     cvCopy( image, cedge, edge );
22
23     cvShowImage(wndname, cedge);
24 }
25
26 int main( int argc, char** argv )
27 {
28     char* filename = argc == 2 ? argv[1] : (char*)"fruits.jpg";
29
30     if( (image = cvLoadImage( filename, 1)) == 0 )
31         return -1;
32
33     // Create the output image
34     cedge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 3);
35
36     // Convert to grayscale
37     gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
38     edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
39     cvCvtColor(image, gray, CV_BGR2GRAY);
40
41     // Create a window
42     cvNamedWindow(wndname, 1);
43
44     // create a toolbar
45     cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);
46
47     // Show the image
48     on_trackbar(0);
49
50     // Wait for a key stroke; the same function arranges events processing
51     cvWaitKey(0);
52     cvReleaseImage(&image);
53     cvReleaseImage(&gray);
54     cvReleaseImage(&edge);
55     cvDestroyWindow(wndname);
56
57     return 0;
58 }
59
60 #ifdef _EiC
61 main(1,"edge.c");
62 #endif