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图像处理中"投影技术" ...
随机推荐
- Codeforces Round #401 (Div. 2) A B C 水 贪心 dp
A. Shell Game time limit per test 0.5 seconds memory limit per test 256 megabytes input standard inp ...
- hibernate、mybatis、beetsql的学习
先推荐两篇文章吧: https://my.oschina.net/xiandafu/blog/617542 http://blog.csdn.net/xiandafu/article/details/ ...
- 解决iText2.0.8+freemark导出pdf不支持base64的解决办法
转换工具类 public class B64ImgReplacedElementFactory implements ReplacedElementFactory { /** * 实现createRe ...
- [LeetCode] Largest Rectangle in Histogram O(n) 解法详析, Maximal Rectangle
Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar height ...
- async/await 里的并行和串行
我们在使用 async/await 语法时,有时会这样用: function getName () { return new Promise((resolve, reject)=>{ setTi ...
- ZooKeeper文档(二)
ZooKeeper:因为协调的分布式系统是一个动物园 ZooKeeper对分布式应用来说是一个高性能的协调服务.它暴露通常的服务-比如命名,配置管理,同步,和组服务-用一种简单的接口,所以你不用从头开 ...
- DataGridView导出到Word
#region 使用Interop.Word.dll将DataGridView导出到Word /// <summary> /// 使用Interop.Word.dll将DataGridVi ...
- python基础---输入输出
1.输入字符串. name=input() or name=input('please input a string') 这样可以接收一个字符串,包括空格,都可以输入.只有回车不接受,作为结束符, ...
- 元类编程-- 实现orm,以django Model为例
# 需求 import numbers class Field: pass class IntField(Field): # 数据描述符 def __init__(self, db_column, m ...
- 「6月雅礼集训 2017 Day7」三明治
[题目大意] $1 \leq n,m \leq 400$ N字形表示:上图第1行第1个那种:Z字形表示上图第1行第2个那种. [题解] 很容易得到结论: 考虑如果紫色比绿色先消去,那么黄色一定会比对应 ...