This OpenCV tutorial is about rotating an Image about its centre by varying the slider position on the Trackbar.
Refer the Opencv C++ Code below:
Refer the Opencv C++ Code below:
// OpenCV C++ Tutorial of Rotating an Image with the help of Trackbar
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
//Global Variables
const int rotation_slider_max=360;
const float pi=3.14;
float x,y;
int slider_value=0;
/// Matrices to store images
Mat src1,src2;
void on_trackbar( int, void* )
{
src2 = Mat::zeros(src1.rows,src1.cols, CV_8UC3);
for (float i=0; i<src1.cols ; i++){
for (float j=0 ; j<src1.rows ; j++)
{
x=((i-src1.cols/2)*cos(slider_value*pi/180)-(j-src1.rows/2)*sin(slider_value*pi/180)+src1.cols/2);
y=((i-src1.cols/2)*sin(slider_value*pi/180)+(j-src1.rows/2)*cos(slider_value*pi/180)+src1.rows/2);
if((x>=0 && x<src1.cols) && (y>=0 && y<src1.rows)){
Vec3b color1 = src1.at<Vec3b>(Point(i,j));
Vec3b color2 = src2.at<Vec3b>(Point(i,j));
color2.val[0] = color1.val[0];
color2.val[1] = color1.val[1];
color2.val[2] = color1.val[2];
src2.at<Vec3b>(Point(x,y)) = color2;
}
}
}
imshow("Rotated Image", src2);
}
int main()
{
src1 = imread("C:\\Users\\arjun\\Desktop\\opencv-logo.png",CV_LOAD_IMAGE_COLOR);
if( !src1.data ) { printf("Error loading src1 \n"); return -1;}
namedWindow("Rotated Image",CV_WINDOW_AUTOSIZE);
namedWindow("Original Image",CV_WINDOW_AUTOSIZE);
imshow("Original Image", src1);
createTrackbar( "Rotation", "Rotated Image", &slider_value, rotation_slider_max, on_trackbar );
on_trackbar( slider_value, 0 );
waitKey(0);
return 0;
}
No comments:
Post a Comment