C++ OpenCV cv::perspectiveTransform()














































C++ OpenCV cv::perspectiveTransform()



---------------------------------------------------------------------------------------------------------------
Description::
This is a C++ program to rotate and warp the input file(image) by the use of wrafAffine funtion which is inbuilt in the opencv library. wrafAffine takes 4 parametres. FIrst is source image file , second is destination image file , third parameter is mat object that is ouput after rotating with some point taking into reference and last is taking the size.

A transformation that can be expressed in the form of a matrix multiplication (linear transformation) followed by a vector addition (translation) is affine transformation.
Here src: Input image warp_dst: Output image warp_mat: Affine transform warp_dst.size(): The desired size of the output image
---------------------------------------------------------------------------------------------------------------
Program::

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp" #include "opencv2/imgproc.hpp" #include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv ) { char* ImageFile = argv[1]; //taking input Mat src = imread( ImageFile , IMREAD_COLOR ); //reading image file in mat object if( src.empty() ) //if not opened correctly { cout << "Could not open or find the image!\n" << endl; cout << "Usage: " << argv[0] << " <Input image>" << endl; return -1; } Point2f srcTri[3]; //point 2f object for input file srcTri[0] = Point2f( 0.f, 0.f ); srcTri[1] = Point2f( src.cols - 1.f, 0.f ); //Before transformation selecting points srcTri[2] = Point2f( 0.f, src.rows - 1.f ); Point2f dstTri[3]; //point 2f object for destination file dstTri[0] = Point2f( 0.f, src.rows*0.33f ); dstTri[1] = Point2f( src.cols*0.85f, src.rows*0.25f ); //After transformation by certain angle and distance dstTri[2] = Point2f( src.cols*0.15f, src.rows*0.7f ); Mat warp_mat = getAffineTransform( srcTri, dstTri ); //apply an affine transforation to image and storing it Mat warp_dst = Mat::zeros( src.rows, src.cols, src.type() ); warpAffine( src, warp_dst, warp_mat, warp_dst.size() ); Point center = Point( warp_dst.cols/2, warp_dst.rows/2 ); double angle = -50.0; //setting angle double scale = 0.6; //setting scale value Mat rot_mat = getRotationMatrix2D( center, angle, scale ); //rotating with some references and angle Mat warp_rotate_dst; //mat object for storing in next step warpAffine( warp_dst, warp_rotate_dst, rot_mat, warp_dst.size() ); imshow( "Source image", src ); imshow( "Warp", warp_dst ); //displaying three windows imshow( "Warp + Rotate", warp_rotate_dst ); waitKey(0); return 0; }


---------------------------------------------------------------------------------------------------------------
Commands to run program on terminal::
g++ -ggdb `pkg-config --cflags filename` -o `basename filename .cpp` filename `pkg-config --libs opencv`

$ ./cvopen filename
---------------------------------------------------------------------------------------------------------------
Output::




More Articles of Shubham Loya:

Name Views Likes
C++ OpenCV cv::trace() 1555 1
C++ Armadillo :: Real and Imaginary part 1631 1
C++ OpenCV cv::perspectiveTransform() 5326 1
C++ Armadillo :: find_nonfinite 792 2
C++ Armadillo introduction and installation 596 1
C++ Armadillo :: Kron 1307 1
C++ Armadillo :: Accessing row and column and operations on it 1404 1
C++ Armadillo :: cond 481 2
C++ Armadillo :: pseudo-inverse 2886 1
C++ OpenCV cv::flip() 1834 1
C++ OpenCV cv::transpose() 6949 1
C++ Armadillo :: any 532 2
C++ Armadillo :: Max and Min of matrices 918 1
C++ OpenCV cv::pow() 2395 1
C++ Armadillo :: fliplr and flipud 1000 2
C++ Armadillo :: Sort 1230 1
C++ Armadillo :: Determinant of Matrix 883 1
C++ Armadillo :: Indices of Unique elements of matrix 958 1
C++ Armadillo :: eps 492 3
C++ Armadillo :: Inverse 1508 1
C++ Armadillo :: Transpose of Matrix 1230 1
C++ Armadillo :: Basic Arithmetic Operations 453 1
C++ Armadillo :: Cross Product of vectors 1274 4
C++ OpenCV program to play a video 1185 1
C++ Armadillo :: Diagonal of Matrix 948 1
C++ Armadillo :: Absolute value of Matrix 1147 1
C++ Armadillo :: Conj 482 2
C++ Armadillo :: expmat 955 2
C++ OpenCV Input from Camera 1945 1
C++ OpenCV program to convert BGR image to grayscale image 5679 1
C++ Armadillo :: Intersect 765 2
C++ Armadillo :: Nonzeros 994 2
C++ Armadillo :: Dot Product of vectors 1664 2
C++ OpenCV:: Transforming BGR image to Grey scale image 580 2
C++ OpenCV to rotate an image 11174 1
C++ Armadillo :: Unique elements of matrix 809 1
C++ Armadillo :: Log Determinant 797 1
C++ Armadillo :: Sort_index 1509 2
C++ Armadillo :: Max Min 1596 1
C++ Armadillo :: Shift 918 1
C++ Armadillo :: Square root of Matrix 1730 1
C++ OpenCV cv::cvtColor() 2322 1

Comments