Added two new sample files for copyMakeBorder and filter2D
authorAna Huaman <no@email>
Sun, 26 Jun 2011 18:36:59 +0000 (18:36 +0000)
committerAna Huaman <no@email>
Sun, 26 Jun 2011 18:36:59 +0000 (18:36 +0000)
samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp [new file with mode: 0644]
samples/cpp/tutorial_code/ImgTrans/filter2D_demo.cpp [new file with mode: 0644]

diff --git a/samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp b/samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp
new file mode 100644 (file)
index 0000000..2124f67
--- /dev/null
@@ -0,0 +1,75 @@
+/**
+ * @file copyMakeBorder_demo.cpp
+ * @brief Sample code that shows the functionality of copyMakeBorder
+ * @author OpenCV team
+ */
+
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/highgui/highgui.hpp"
+#include <stdlib.h>
+#include <stdio.h>
+
+using namespace cv;
+
+/// Global Variables 
+Mat src, dst;
+int top, bottom, left, right;
+int borderType;
+Scalar value;
+char* window_name = "copyMakeBorder Demo";
+RNG rng(12345);
+
+/**
+ * @function main
+ */
+int main( int argc, char** argv )
+{
+
+  int c;
+
+  /// Load an image
+  src = imread( argv[1] );
+  
+  if( !src.data )
+    { return -1;
+      printf(" No data entered, please enter the path to an image file \n"); 
+    }
+
+  /// Brief how-to for this program
+  printf( "\n \t copyMakeBorder Demo: \n" );
+  printf( "\t -------------------- \n" );
+  printf( " ** Press 'c' to set the border to a random constant value \n");
+  printf( " ** Press 'r' to set the border to be replicated \n");
+  printf( " ** Press 'ESC' to exit the program \n");
+
+  /// Create window
+  namedWindow( window_name, CV_WINDOW_AUTOSIZE );
+
+  /// Initialize arguments for the filter
+  top = (int) (0.05*src.rows); bottom = (int) (0.05*src.rows); 
+  left = (int) (0.05*src.cols); right = (int) (0.05*src.cols);
+  dst = src;
+
+  imshow( window_name, dst );
+  
+  while( true )
+       {
+         c = waitKey(500);
+
+         if( (char)c == 27 )
+           { break; }
+         else if( (char)c == 'c' )
+           { borderType = BORDER_CONSTANT; }
+         else if( (char)c == 'r' )
+           { borderType = BORDER_REPLICATE; }
+
+         value = Scalar( rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255) );
+         copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );
+
+         imshow( window_name, dst );
+       }
+
+  return 0;
+}
+
+
diff --git a/samples/cpp/tutorial_code/ImgTrans/filter2D_demo.cpp b/samples/cpp/tutorial_code/ImgTrans/filter2D_demo.cpp
new file mode 100644 (file)
index 0000000..c5be0e7
--- /dev/null
@@ -0,0 +1,65 @@
+/**
+ * @file filter2D_demo.cpp
+ * @brief Sample code that shows how to implement your own linear filters by using filter2D function
+ * @author OpenCV team
+ */
+
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/highgui/highgui.hpp"
+#include <stdlib.h>
+#include <stdio.h>
+
+using namespace cv;
+
+/**
+ * @function main
+ */
+int main ( int argc, char** argv )
+{
+  /// Declare variables
+  Mat src, dst;
+
+  Mat kernel;
+  Point anchor;
+  double delta;
+  int ddepth;  
+  int kernel_size;
+  char* window_name = "filter2D Demo";
+
+  int c;
+
+  /// Load an image
+  src = imread( argv[1] );
+
+  if( !src.data )
+    { return -1; }
+
+  /// Create window
+  namedWindow( window_name, CV_WINDOW_AUTOSIZE );
+  
+  /// Initialize arguments for the filter
+  anchor = Point( -1, -1 );
+  delta = 0;
+  ddepth = -1;
+
+  /// Loop - Will filter the image with different kernel sizes each 0.5 seconds
+  int ind = 0;
+  while( true )
+       {
+         c = waitKey(500);
+         /// Press 'ESC' to exit the program
+         if( (char)c == 27 )
+           { break; }
+
+         /// Update kernel size for a normalized box filter
+         kernel_size = 3 + 2*( ind%5 );
+         kernel = Mat::ones( kernel_size, kernel_size, CV_32F )/ (float)(kernel_size*kernel_size);
+
+         /// Apply filter
+         filter2D(src, dst, ddepth , kernel, anchor, delta, BORDER_DEFAULT );
+         imshow( window_name, dst );
+         ind++;
+       }
+  
+  return 0;
+}