zoukankan      html  css  js  c++  java
  • opencv 图像转换

    #include <cv.h>
    #include <highgui.h>
    int main()
    {
        CvPoint2D32f srcTri[3], dstTri[3];
        CvMat* rot_mat = cvCreateMat(2, 3, CV_32FC1);
        CvMat* warp_mat = cvCreateMat(2, 3, CV_32FC1);
        IplImage *src, *dst;
        src = cvLoadImage("5.jpg", 1);
        
        dst = cvCloneImage(src);
        dst->origin = src->origin;
        cvZero(dst);
    
        srcTri[0].x = 0;
        srcTri[0].y = 0;
        srcTri[1].x = src->width - 1.0;
        srcTri[1].y = 0;
        srcTri[2].x = 0;
        srcTri[2].y = src->height - 1.0;
        dstTri[0].x = src->width*0.0;
        dstTri[0].y = src->height*0.33;
        dstTri[1].x = src->width *0.85;
        dstTri[1].y = src->height *0.25;
        dstTri[2].x = src->width *0.15;
        dstTri[2].y = src->height*0.7;
        cvGetAffineTransform(srcTri, dstTri, warp_mat);
        //将其转换成具体的变换矩阵
        cvWarpAffine(src, dst, warp_mat);
        //将源图像通过warp_mat映射到目标图像
        cvNamedWindow("show", 1);
        cvShowImage("show", dst);
        cvNamedWindow("main", 1);
        cvShowImage("main", src);
        cvCopy(dst, src);
        CvPoint2D32f center = cvPoint2D32f(src->width / 2,src->height / 2); //中心点
        double angle = -50.0;
        double scale = 0.6;
        cv2DRotationMatrix(center, angle, scale, rot_mat);    //计算围绕点的旋转的映射矩阵和一个可选择的尺度
        //参数分别表示 旋转中心 角度  缩放尺度  输出映射
        cvWarpAffine(src, dst, rot_mat);
        //映射
        cvNamedWindow("show1", 1);
        cvShowImage("show1", dst);
        cvWaitKey();
        cvReleaseImage(&dst);
        cvReleaseImage(&src);
        cvDestroyAllWindows();
        return 0;
    }

    2.

    #include <cv.h>
    #include <highgui.h>
    int main()
    {
        CvPoint2D32f srcQuad[4], dstQuad[4];
        CvMat* warp_matrix = cvCreateMat(3, 3, CV_32FC1); //创建矩阵
        IplImage *src, *dst;
        src = cvLoadImage("5.jpg", 1);
        dst = cvCloneImage(src);
        dst->origin = src->origin;
        cvZero(dst);
        srcQuad[0].x = 0;
        srcQuad[0].y = 0;
        srcQuad[1].x = src->width - 1;
        srcQuad[1].y = 0;
        srcQuad[2].x = 0;
        srcQuad[2].y = src->height - 1;
        srcQuad[3].x = src->width - 1;
        srcQuad[3].y = src->height - 1;
        dstQuad[0].x = src->width *0.05;
        dstQuad[0].y = src->height *0.33;
        dstQuad[1].x = src->width * 0.9;
        dstQuad[1].y = src->height *0.25;
        dstQuad[2].x = src->width *0.2;
        dstQuad[2].y = src->height *0.7;
        dstQuad[3].x = src->width * 0.8;
        dstQuad[3].y = src->height *0.9;
        cvGetPerspectiveTransform(srcQuad, dstQuad, warp_matrix);  //稀疏透视变换
        cvWarpPerspective(src, dst, warp_matrix);//密集透视变换
        cvNamedWindow("show", 1);
        cvShowImage("show", dst);
        cvWaitKey();
        cvReleaseImage(&dst);
        cvReleaseImage(&src);
        cvDestroyAllWindows();
        return 0;
    }
  • 相关阅读:
    c++中关于用stringstream进行的类型转化
    c++中字符串的反转
    搬家
    初次见面,请多关照。
    CCPC2019吉林省赛&&东北地区赛游记
    VS Code下搭建简单的Haskell开发环境
    从零开始的KMP&&AC自动机
    从零开始的LCA(最近公共祖先)
    LuoguP2123 皇后游戏
    LuoguP1080 国王游戏
  • 原文地址:https://www.cnblogs.com/chenyang920/p/5375600.html
Copyright © 2011-2022 走看看