2
* @function Remap_Demo.cpp
3
* @brief Demo code for Remap
7
#include "opencv2/imgcodecs.hpp"
8
#include "opencv2/highgui/highgui.hpp"
9
#include "opencv2/imgproc/imgproc.hpp"
18
const char* remap_window = "Remap demo";
22
void update_map( void );
27
int main( int, char** argv )
30
src = imread( argv[1], 1 );
32
/// Create dst, map_x and map_y with the same size as src:
33
dst.create( src.size(), src.type() );
34
map_x.create( src.size(), CV_32FC1 );
35
map_y.create( src.size(), CV_32FC1 );
38
namedWindow( remap_window, WINDOW_AUTOSIZE );
43
/// Each 1 sec. Press ESC to exit the program
44
int c = waitKey( 1000 );
49
/// Update map_x & map_y. Then apply remap
51
remap( src, dst, map_x, map_y, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0) );
54
imshow( remap_window, dst );
60
* @function update_map
61
* @brief Fill the map_x and map_y matrices with 4 types of mappings
63
void update_map( void )
67
for( int j = 0; j < src.rows; j++ )
68
{ for( int i = 0; i < src.cols; i++ )
73
if( i > src.cols*0.25 && i < src.cols*0.75 && j > src.rows*0.25 && j < src.rows*0.75 )
75
map_x.at<float>(j,i) = 2*( i - src.cols*0.25f ) + 0.5f ;
76
map_y.at<float>(j,i) = 2*( j - src.rows*0.25f ) + 0.5f ;
79
{ map_x.at<float>(j,i) = 0 ;
80
map_y.at<float>(j,i) = 0 ;
84
map_x.at<float>(j,i) = (float)i ;
85
map_y.at<float>(j,i) = (float)(src.rows - j) ;
88
map_x.at<float>(j,i) = (float)(src.cols - i) ;
89
map_y.at<float>(j,i) = (float)j ;
92
map_x.at<float>(j,i) = (float)(src.cols - i) ;
93
map_y.at<float>(j,i) = (float)(src.rows - j) ;