mirror of https://github.com/opencv/opencv.git
parent
d195871904
commit
65575cef7e
2 changed files with 140 additions and 0 deletions
@ -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; |
||||
} |
||||
|
||||
|
@ -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; |
||||
} |
Loading…
Reference in new issue