#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. Communications link failure

    针对数据库Communications link failure的错误,可以理解为有两种策略解决: 策略1(推荐):     数据池配置 <property name="minEvic ...

  2. 专题训练之2-sat

    推荐几篇博客:https://blog.csdn.net/JarjingX/article/details/8521690 研究总结2-sat问题 https://blog.csdn.net/wher ...

  3. 让IE6也支持position:fixed

    众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著.前些天遇到了这个问题.当时就简单的无视了IE6,但是对于大项目或商业网站, ...

  4. angularJS入门小Demo2 【包含不用数据库而用data.json格式响应前台的ajax请求方式测试】

    事件绑定: <html> <head> <title>angularJS入门小demo-5 事件指令</title> <script src=&q ...

  5. 《时间序列分析及应用:R语言》读书笔记--第一章 引论

    "春节假期是难得的读书充电的时间."--来自某boss.假期能写多少算多少,一个是题目中的这本书,另一个是<python核心编程>中的高级部分,再一个是拖着的<算 ...

  6. 将shell返回的结果保存至数组

    如下,我需要将u1和u2提取出保存至数组,方便后续的调用 root@ubuntu:~# lxc list+------+---------+------------------------------ ...

  7. [LeetCode] 21. Merge Two Sorted Lists ☆

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  8. 51Nod 1087 1 10 100 1000 | 数学

    Input示例 3 1 2 3 Output示例 1 1 0 #include "bits/stdc++.h" using namespace std; #define LL lo ...

  9. Git版本回退的最佳方式

    使用git开发的过程中,存在误提交的时候怎么办呢?不用慌张,强大的git提供了两种版本回退的方式,可以让你恢复提交之前的内容: 方式一:reset(不推荐) 通过reset的方式,把head指针指向之 ...

  10. 【Foreign】Uria [欧拉函数]

    Uria Time Limit: 20 Sec  Memory Limit: 512 MB Description 从前有个正整数 n. 对于一个正整数对 (a,b),如果满足 a + b ≤ n 且 ...