opencv 图像转换
#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 图像转换的更多相关文章
- Android OpenCV图像转换
1.Mat存储到本地: public void saveMatData(Mat mat) { File fileDir = new File(Environment.getExternalStorag ...
- Opencv 图像叠加 添加水印
Opencv 图像叠加 添加水印 C++: void Mat::copyTo(OutputArray m) const C++: void Mat::copyTo(OutputArray m, Inp ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- OpenCV图像金字塔
图像金字塔 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 pyrUp 和 pyrDown 对图像进行向上和向下采样. 原理 Note 以下内容来自于Bradski和Kaehler的大作: ...
- opencv:图像的创建和储存
示例代码: #include <opencv.hpp> #include <vector> using namespace std; using namespace cv; v ...
- 关于OpenCV图像操作的默认参数问题
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51559490 在使用OpenCV以及其 ...
- opencv图像的基本操作3
1.获取像素并修改 读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值 import cv2 import numpy img = cv2. ...
- Imagelab-0-QT label显示 opencv 图像
Imagelab-0-QT label显示 opencv 图像 opencvc++qtimagelab 开始之前 这其实也是opencv 处理图像的系列, 只是想我们在进一步复杂化我们的代码之前, 每 ...
- OpenCV图像处理中“投影技术”的使用
本文区分"问题引出"."概念抽象"."算法实现"三个部分由表及里具体讲解OpenCV图像处理中"投影技术" ...
随机推荐
- BZOJ1101 & 洛谷3455:[POI2007]ZAP——题解
https://www.luogu.org/problemnew/show/3455#sub http://www.lydsy.com/JudgeOnline/problem.php?id=1101 ...
- 洛谷 P1653 猴子 解题报告
P1653 猴子 题目描述 有N只猴子,第一只尾巴挂在树上,剩下的N-1只,要么被其他的猴子抓住,要么抓住了其他的猴子,要么两者均有.当然一只猴子最多抓两只另外的猴子.现在给出这N只猴子抓与被抓的信息 ...
- React的getDefaultProps和getInitialState
getDefaultProps 不是获取默认props,而是设置默认props,主要用在ES5的React写法中getInitialState 不是获取默认State,而是设置初始的state,主要是 ...
- [NOIP 2005] 运输计划
link 这是一道假的图论 思维难度很低,代码量偏高 就是一道板子+二分 树上差分就AC了 注意卡常即可 二分枚举答案x,为时间长度 将每一个长度大于x的计划链长记录下来(有几个,总需要减少多少长度) ...
- mapper中的CDATA标签的用法
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data). 在 XML 元素中,"<" 和 "&& ...
- JQuery学习六
<JQuery cookie>插件 cookie是保存在浏览器上的内容,用户在这次浏览页面的时候向cookie中保存文本内容.下次再访问页面的时侯就可以取出来上次保存的内容.这样可以得到上 ...
- UVA 10201 DP
Adventures in Moving - Part IV 题意: 汽车邮箱容量200升,最初有100升油,要求到达终点油箱中的油不少于100升的最小花费,不能到达终点输出Impossible. 汽 ...
- redis 选择数据库
redis 127.0.0.1:6379> SELECT 1 # 使用 1 号数据库
- [C#] 小记 new 和 override 关键字
C#要想实现函数的override,要求和C++一样,父类的函数必须用virtual关键字注明,随后在子类中用override关键字表明重写的函数. 子类同名函数定义时,如果什么都不写,或者使用new ...
- mysql连接时权限问题 用户问题
启动工程时会连接mysql数据库,此时报错: ERROR 1044 (42000): Access denied for user 'pay'@'localhost' to database 'pay ...