• opencv——(动态)旋转图像


    #include "stdafx.h"
    #include <opencv2opencv.hpp>
    #include <opencvcv.h>
    #include <iostream>
    #include<string>
    #include <windows.h>
    using namespace std;
    using namespace cv;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        
        
        IplImage *src = cvLoadImage("lena.jpg");
        IplImage *dst = 0;
    
        /* the first command line parameter must be image file name */
        if (src != 0)
        {
            int delta = 1;
            int angle = 45;
            int opt =0;        // 1: 旋转加缩放
            // 0:  仅仅旋转
            double factor;
    
            dst = cvCloneImage (src);
            cvNamedWindow ("src", 1);
            cvShowImage ("src", src);
                    
            for (;;)
            {
                float m[6];
                // Matrix m looks like:
                //
                // [ m0  m1  m2 ] ===>  [ A11  A12   b1 ]
                // [ m3  m4  m5 ]       [ A21  A22   b2 ]
                //
                CvMat M = cvMat (2, 3, CV_32F, m);
                int w = src->width;
                int h = src->height;
                if (opt)        // 旋转加缩放
                    factor = (cos (angle * CV_PI / 180.) + 1.0) * 2;
                else            //  仅仅旋转
                    factor = 1;
                m[0] = (float) (factor * cos (-angle * 2 * CV_PI / 180.));
                m[1] = (float) (factor * sin (-angle * 2 * CV_PI / 180.));
                m[3] = -m[1];
                m[4] = m[0];
                // 将旋转中心移至图像中间
                m[2] = w * 0.5f;
                m[5] = h * 0.5f;
                //  dst(x,y) = A * src(x,y) + b
                cvZero (dst);
                cvGetQuadrangleSubPix (src, dst, &M);
                cvNamedWindow ("dst", 1);
                cvShowImage ("dst", dst);
                if (cvWaitKey (1) == 27)    //ESC
                    break;
                angle = (int) (angle + delta) % 360;
            }            // for-loop
        }
        return 0;
    
    }

                 

  • 相关阅读:
    一只小小麻雀——基于语法分析工具Gold开发的加减法解释器
    儿子和女儿——解释器和编译器的区别与联系
    商用密码企业调研(必做)
    create dict in python
    sequence in python
    Cpp pointers
    sorted: list sort in python
    the array.length() of C++
    string of Cpp
    srandom and random
  • 原文地址:https://www.cnblogs.com/nanyangzp/p/3496466.html
Copyright © 2020-2023  润新知