mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.6 KiB
70 lines
1.6 KiB
#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
|
|
|