#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. BZOJ2693:JZPTAP——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2693 Description   Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 ...

  2. 【图论-最短路】【P3393】逃离僵尸岛

    传送门 Description 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵 ...

  3. node.js 与java 的主要的区别是什么

    node.js 与java都是服务器语言,但是两者存在很大区别:(1)Node.js比Java更快 :node.js开发快,运行的效率也算比较高,但是如果项目大了就容易乱,而且javascript不是 ...

  4. HDU1078记忆化搜索

    FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  5. 同一台服务器(电脑)运行多个Tomcat

    同一台电脑运行不能同时运行多个未修改过配置tomcat的原因在于:一台电脑的一个端口只能被一个程序使用,多个tomcat启动会因为端口号号被占用的原因而启动失败. 如果想要在一台电脑上同时运行多个to ...

  6. [LeetCode] 5. Longest Palindromic Substring ☆☆☆☆

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  7. Codeforces 351B Jeff and Furik 概率 | DP

    B. Jeff and Furik time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  8. SSM三大框架整合详细总结(Spring+SpringMVC+MyBatis)(山东数漫江湖)

    使用 SSM ( Spring . SpringMVC 和 Mybatis )已经很久了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录 ...

  9. 【Matlab】使用Matlab运行Windows命令

    可以使用Matlab的一些命令来帮助程序运行.比如说 ! calc % 打开计算器 ! mspaint % 打开画图 dos calc % 打开计算器 比如一个程序要运行很长时间,而我们又不能一直守在 ...

  10. java===java基础学习(9)---方法参数

    方法参数注意三要点: 一个方法不能修改一个基本数据类型的参数(数值型或者布尔型). 一个方法可以改变一个对象参数的状态. 一个方法不能让对象参数引用一个新的对象. package testbotoo; ...