/examples/opencv/src/edge.c
C | 70 lines | 43 code | 18 blank | 9 comment | 3 complexity | 5510ccfa035df977b906ddea0aba330d MD5 | raw file
- #ifdef _CH_
- #pragma package <opencv>
- #endif
- #define CV_NO_BACKWARD_COMPATIBILITY
- #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