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

2.

#include <cv.h>
#include <highgui.h>
int main()
{
CvPoint2D32f srcQuad[], dstQuad[];
CvMat* warp_matrix = cvCreateMat(, , CV_32FC1); //创建矩阵
IplImage *src, *dst;
src = cvLoadImage("5.jpg", );
dst = cvCloneImage(src);
dst->origin = src->origin;
cvZero(dst);
srcQuad[].x = ;
srcQuad[].y = ;
srcQuad[].x = src->width - ;
srcQuad[].y = ;
srcQuad[].x = ;
srcQuad[].y = src->height - ;
srcQuad[].x = src->width - ;
srcQuad[].y = src->height - ;
dstQuad[].x = src->width *0.05;
dstQuad[].y = src->height *0.33;
dstQuad[].x = src->width * 0.9;
dstQuad[].y = src->height *0.25;
dstQuad[].x = src->width *0.2;
dstQuad[].y = src->height *0.7;
dstQuad[].x = src->width * 0.8;
dstQuad[].y = src->height *0.9;
cvGetPerspectiveTransform(srcQuad, dstQuad, warp_matrix); //稀疏透视变换
cvWarpPerspective(src, dst, warp_matrix);//密集透视变换
cvNamedWindow("show", );
cvShowImage("show", dst);
cvWaitKey();
cvReleaseImage(&dst);
cvReleaseImage(&src);
cvDestroyAllWindows();
return ;
}

opencv 图像转换的更多相关文章

  1. Android OpenCV图像转换

    1.Mat存储到本地: public void saveMatData(Mat mat) { File fileDir = new File(Environment.getExternalStorag ...

  2. Opencv 图像叠加 添加水印

    Opencv 图像叠加 添加水印 C++: void Mat::copyTo(OutputArray m) const C++: void Mat::copyTo(OutputArray m, Inp ...

  3. [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)

    本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...

  4. OpenCV图像金字塔

    图像金字塔 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 pyrUp 和 pyrDown 对图像进行向上和向下采样. 原理 Note 以下内容来自于Bradski和Kaehler的大作:  ...

  5. opencv:图像的创建和储存

    示例代码: #include <opencv.hpp> #include <vector> using namespace std; using namespace cv; v ...

  6. 关于OpenCV图像操作的默认参数问题

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51559490 在使用OpenCV以及其 ...

  7. opencv图像的基本操作3

    1.获取像素并修改 读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值 import cv2 import numpy img = cv2. ...

  8. Imagelab-0-QT label显示 opencv 图像

    Imagelab-0-QT label显示 opencv 图像 opencvc++qtimagelab 开始之前 这其实也是opencv 处理图像的系列, 只是想我们在进一步复杂化我们的代码之前, 每 ...

  9. OpenCV图像处理中“投影技术”的使用

           本文区分"问题引出"."概念抽象"."算法实现"三个部分由表及里具体讲解OpenCV图像处理中"投影技术" ...

随机推荐

  1. BZOJ1854:[SCOI2010]连续攻击游戏——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1854 https://www.luogu.org/problemnew/show/P1640 lxh ...

  2. UVA.10066 The Twin Towers (DP LCS)

    UVA.10066 The Twin Towers (DP LCS) 题意分析 有2座塔,分别由不同长度的石块组成.现在要求移走一些石块,使得这2座塔的高度相同,求高度最大是多少. 问题的实质可以转化 ...

  3. NOIP系列

    NOIP2015运输计划 唉 真是 这题 卡死我了 tarjan离线lca复杂度O(n) 最后各种卡常,多交几遍才A(洛谷104ms) %%%zk学长609ms 注意二分的时候左边界要定成0 根据题意 ...

  4. Django Model 数据表

    Django Model 定义语法 版本:1.7主要来源:https://docs.djangoproject.com/en/1.7/topics/db/models/ 简单用法 from djang ...

  5. angularJS前端分页插件

    首先在项目中引入 分页插件的 js 和 css: 在html页面引入 相关js 和 css: 在控制器中引入分页插件中定义的 module[可以打开pagination.js查看,可以看到 其实,在插 ...

  6. some interesting words

    No one gets rich betting against the market. Never bet against the Fed. Bulls make money, bears make ...

  7. linux配置虚拟机网络环境(老师要求的host-only)

    我这个人就是懒,这TMD是全天下最坑爹的缺点了,当然爆粗口也是缺点,让我发泄一下吧.T^T 从n久之前,开了hadoop课的一天,我就想着要配置好,结果两次课连眼镜都忘了带,可想而知是什么陪我度过了那 ...

  8. oracle重新编译失效对像

    重新编译失效对像可执行utlrp.sql文件: SQL> @?/rdbms/admin/utlrp.sql TIMESTAMP --------------------------------- ...

  9. 实体框架(Entity Framework)快速入门--实例篇

    在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 ...

  10. 【设计模式】 模式PK:抽象工厂模式VS建造者模式

    1.概述 抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式则是不需要关心构建过程,只关心什么产品由什么工厂生产即可.而建造者模式则是要求按 ...