Update to 2.0.0 tree from current Fremantle build
[opencv] / samples / octave / laplace.m
diff --git a/samples/octave/laplace.m b/samples/octave/laplace.m
new file mode 100644 (file)
index 0000000..7324578
--- /dev/null
@@ -0,0 +1,65 @@
+#! /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");