70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
	
	
#! /usr/bin/env octave
 | 
						|
 | 
						|
printf("OpenCV Octave version of edge\n");
 | 
						|
 | 
						|
global g;
 | 
						|
 | 
						|
## import the necessary things for OpenCV
 | 
						|
cv;
 | 
						|
highgui;
 | 
						|
 | 
						|
## some definitions
 | 
						|
g.win_name = "Edge";
 | 
						|
g.trackbar_name = "Threshold";
 | 
						|
 | 
						|
## the callback on the trackbar
 | 
						|
function on_trackbar (position)
 | 
						|
  global g;
 | 
						|
  global cv;
 | 
						|
  global highgui;
 | 
						|
 | 
						|
  cv.cvSmooth (g.gray, g.edge, cv.CV_BLUR, 3, 3, 0);
 | 
						|
  cv.cvNot (g.gray, g.edge);
 | 
						|
 | 
						|
  ## run the edge dector on gray scale
 | 
						|
  cv.cvCanny (g.gray, g.edge, position, position * 3, 3);
 | 
						|
 | 
						|
  ## reset
 | 
						|
  cv.cvSetZero (g.col_edge);
 | 
						|
 | 
						|
  ## copy edge points
 | 
						|
  cv.cvCopy (g.image, g.col_edge, g.edge);
 | 
						|
  
 | 
						|
  ## show the image
 | 
						|
  highgui.cvShowImage (g.win_name, g.col_edge);
 | 
						|
endfunction
 | 
						|
 | 
						|
filename = "../c/fruits.jpg";
 | 
						|
 | 
						|
if (size(argv, 1)>1)
 | 
						|
  filename = argv(){1};
 | 
						|
endif
 | 
						|
 | 
						|
## load the image gived on the command line
 | 
						|
g.image = highgui.cvLoadImage (filename);
 | 
						|
 | 
						|
if (!swig_this(g.image))
 | 
						|
  printf("Error loading image '%s'",filename);
 | 
						|
  exit(-1);
 | 
						|
endif
 | 
						|
 | 
						|
## create the output image
 | 
						|
g.col_edge = cv.cvCreateImage (cv.cvSize (g.image.width, g.image.height), 8, 3);
 | 
						|
 | 
						|
## convert to grayscale
 | 
						|
g.gray = cv.cvCreateImage (cv.cvSize (g.image.width, g.image.height), 8, 1);
 | 
						|
g.edge = cv.cvCreateImage (cv.cvSize (g.image.width, g.image.height), 8, 1);
 | 
						|
cv.cvCvtColor (g.image, g.gray, cv.CV_BGR2GRAY);
 | 
						|
 | 
						|
## create the window
 | 
						|
highgui.cvNamedWindow (g.win_name, highgui.CV_WINDOW_AUTOSIZE);
 | 
						|
 | 
						|
## create the trackbar
 | 
						|
highgui.cvCreateTrackbar (g.trackbar_name, g.win_name, 1, 100, @on_trackbar);
 | 
						|
 | 
						|
## show the image
 | 
						|
on_trackbar (0);
 | 
						|
 | 
						|
## wait a key pressed to end
 | 
						|
highgui.cvWaitKey (0);
 |