C ++ opencv:按任意数字(度)旋转图像

时间:2016-11-07 08:54:30

标签: c++ image algorithm opencv rotation

从我之前的帖子中, OpenCV : algorithm for simple image rotation and reduction

我仍然无法将图像旋转任意数字,但只能旋转90度。 从那以后我改变了我的代码,现在是

   Mat image1 = imread("Balloon.jpg", CV_LOAD_IMAGE_ANYCOLOR);
   Mat rotC(image1.cols, image1.rows, image1.type());
   #define PI 3.14156
void rotation(Mat image1)
{
    int hwidth = image1.rows / 2;
    int hheight = image1.cols / 2;
    double angle = 45.00 * PI / 180.0;

    for (int x = 0;x < image1.rows;x++) {

        for (int y = 0; y < image1.cols;y++) {


        int xt = x - hwidth;
        int yt = y - hheight;


        int xs = (int)round((cos(angle) * xt - sin(angle) * yt) + hwidth);
        int ys = (int)round((sin(angle) * xt + cos(angle) * yt) + hheight); 

         rotC.at<Vec3b>(x,y) = image1.at<Vec3b>(xs, ys);

      }
    }
 }



  int main()
{
 rotation(image1);
 imshow("color", rotC);
 waitKey(0);
}

rotC.at<Vec3b>(x,y) = image1.at<Vec3b>(xs, ys);

出现错误

这是我的代码有错误的唯一部分吗? 我试图将我的结果链接回新的旋转然后用imshow显示它。 请让我知道我需要做什么才能使其旋转任意数字,如30度,46度等。

我想得到的结果如下所示,图像通过opencv函数旋转。 enter image description here 谢谢!

0 个答案:

没有答案