In this example we threshold the image based on the position of the track bar. Then find contours on the image an display the contours as white lines.
#include "stdafx.h" #include "cv.h" #include "highgui.h" // global variables IplImage* input = NULL; IplImage* gray = NULL; int threshold = 100; CvMemStorage* storage = NULL; /** trackbar event * @param trackbar position */ void on_trackbar(int) { if (storage == NULL) { // create storage gray = cvCreateImage(cvGetSize(input), 8,1); storage = cvCreateMemStorage(0); } else { // clear storage cvClearMemStorage(storage); } // convert to gray scale and then threshold cvCvtColor(input, gray, CV_BGR2GRAY); cvThreshold(gray,gray,threshold,255,CV_THRESH_BINARY); // find the edges CvSeq* edges = 0; cvFindContours(gray, storage, &edges); cvZero(gray); if (edges) { // display the edges as whiet lines cvDrawContours(gray, edges, cvScalarAll(255),cvScalarAll(255),100); } cvShowImage("Input", gray); } /** main function * @param argc arguments * @param argv argument values * @return exit code */ int _tmain(int argc, _TCHAR* argv[]) { // open and display input image input = cvLoadImage("test.jpg"); cvNamedWindow("Input", CV_WINDOW_AUTOSIZE); cvShowImage("Input", input); // create trackbar callback cvCreateTrackbar("Threshold", "Input", &threshold, 255, on_trackbar); on_trackbar(0); // wait for user cvWaitKey(0); // garbage collection cvReleaseImage(&input); cvDestroyWindow("Input"); return 0; }