--- /dev/null
+#! /usr/bin/env octave
+addpath("/home/x/opencv2/interfaces/swig/octave");
+source("/home/x/opencv2/interfaces/swig/octave/PKG_ADD_template");
+debug_on_error(true);
+debug_on_warning(true);
+crash_dumps_octave_core (0)
+cv;
+highgui;
+
+laplace = [];
+colorlaplace = [];
+planes = { [], [], [] };
+capture = [];
+
+if (size(argv, 2)==0)
+ capture = cvCreateCameraCapture( -1 );
+elseif (size(argv, 2)==1 && all(isdigit(argv(){1})))
+ capture = cvCreateCameraCapture( int32(argv(){1}) );
+elseif (size(argv, 2)==1)
+ capture = cvCreateFileCapture( argv(){1} );
+endif
+
+if (!swig_this(capture))
+ printf("Could not initialize capturing...\n");
+ exit(-1)
+endif
+
+cvNamedWindow( "Laplacian", 1 );
+
+while (true),
+ frame = cvQueryFrame( capture );
+ if (!swig_this(frame))
+ break
+ endif
+
+ if (!swig_this(laplace))
+ for i=1:size(planes,2),
+ planes{i} = cvCreateImage( \
+ cvSize(frame.width,frame.height), \
+ 8, 1 );
+ endfor
+ laplace = cvCreateImage( cvSize(frame.width,frame.height), IPL_DEPTH_16S, 1 );
+ colorlaplace = cvCreateImage( \
+ cvSize(frame.width,frame.height), \
+ 8, 3 );
+ endif
+
+ cvSplit( frame, planes{1}, planes{2}, planes{3}, [] );
+ for plane = planes,
+ plane = plane{1};
+ cvLaplace( plane, laplace, 3 );
+ cvConvertScaleAbs( laplace, plane, 1, 0 );
+ endfor
+
+ cvMerge( planes{1}, planes{2}, planes{3}, [], colorlaplace );
+# colorlaplace.origin = frame.origin;
+
+ cvShowImage("Laplacian", colorlaplace );
+
+ if (cvWaitKey(10) == 27)
+ break;
+ endif
+endwhile
+
+cvDestroyWindow("Laplacian");