i want to transform an entire image according to the magnitude of a straight line (y=ax+b) with an angle ( arcTan(a)
) this angle should be applied just to the y axis of all the points.
i wanted to use the warpAffine(...)
method but what I was able to make work with this method is using points (generally 3) in the image so that warpAffine(...)
can figure out the angle for itself and transform that part of the image, and that's not what I need because I want to transform the whole image not just a piece.
if there's a way to do this with warpAffine(...)
or any other method please let me know
cv::Mat t(3,3,CV_64F);
t=0;
t.at<double>(0,0) = 1;
t.at<double>(1,1) = 1;
t.at<double>(0,1) = -tan(0.17);
t.at<double>(2,2) = 1;
cv::Mat dest;
cv::Size size(imgb1.cols,imgb1.rows);
warpAffine(imgb1, dest, t, size, INTER_LINEAR, BORDER_CONSTANT);
imshow("outputImage.jpg", dest);
that's what I could achieve till now, my transformation matrix is like this :
1 -tan(angle) 0
0 1 0
0 0 1