I’ve found a solution that doesn’t involve warpAffine()
.
But before that, I need to state (for future references) that my suspicion was right, you needed to pass the size of the destination when calling warpAffine()
:
warpAffine(image, rotated_img, rot_matrix, rotated_img.size());
As far as I can tell, the black border (caused by writing at an offset) drawed by this function seems to be it’s standard behavior. I’ve noticed this with the C interface and also with the C++ interface of OpenCV running on Mac and Linux, using the versions 2.3.1a and 2.3.0.
The solution I ended up using is much simpler than all this warp thing. You can use cv::transpose()
and cv::flip()
to rotate an image by 90 degrees. Here it is:
Mat src = imread(argv[1], 1);
cv::Mat dst;
cv::transpose(src, dst);
cv::flip(dst, dst, 1);
imwrite("rotated90.jpg", dst);
—-I>