图像处理-图像的旋转及变换

对于倾斜的图像,可以通过矩阵转换将其进行矫正。

先计算出图像倾斜矩形的长宽,而后将矫正后的形状的矩形坐标确定,通过getPerspectiveTransform获取矫正前与矫正后坐标的变换矩阵,而后利用warpPerspective将图像进行变换

 1                         float dstSize1 = dist(Final_poly[i][0], Final_poly[i][1]);
 2             float dstSize2 = dist(Final_poly[i][1], Final_poly[i][2]);
 3             float dstSizeW, dstSizeH;
 4             Point2f pts0[4], pts1[4];
 5             pts0[0].x = x1; pts0[0].y = y1;
 6             pts0[1].x = x2; pts0[1].y = y2;
 7             pts0[2].x = x3; pts0[2].y = y3;
 8             pts0[3].x = x4; pts0[3].y = y4;
 9             //cout<<pts0[0].x<<" "<<pts0[0].y<<" "<<pts0[1].x<<" "<<pts0[1].y<<" "<<pts0[2].x<<" "<<pts0[2].y<<" "<<pts0[3].x<<" "<<pts0[3].y<<endl;
10             //cout<<dstSize1<<" "<<dstSize2<<endl;
11             //if(dstSize1 > dstSize2 && fabs(Final_theta[i]) > 45.0)
12             if (fabs(Final_theta[i]) > 45.0)
13             {
14                 dstSizeW = dstSize1;
15                 dstSizeH = dstSize2;
16                 pts1[0].x = dstSizeW; pts1[0].y = dstSizeH;
17                 pts1[1].x = 0; pts1[1].y = dstSizeH;
18                 pts1[2].x = 0; pts1[2].y = 0;
19                 pts1[3].x = dstSizeW; pts1[3].y = 0;
20             }
21             //else if(dstSize1 < dstSize2 && fabs(Final_theta[i]) < 45.0)
22             else if (fabs(Final_theta[i]) <= 45.0)
23             {
24                 dstSizeW = dstSize2;
25                 dstSizeH = dstSize1;
26                 pts1[0].x = 0; pts1[0].y = dstSizeH;
27                 pts1[1].x = 0; pts1[1].y = 0;
28                 pts1[2].x = dstSizeW; pts1[2].y = 0;
29                 pts1[3].x = dstSizeW; pts1[3].y = dstSizeH;
30             }
31             Mat M_perspective = getPerspectiveTransform(pts0, pts1);
32             Mat img_perspective;
33             warpPerspective(image, img_perspective, M_perspective, Size(dstSizeW, dstSizeH), cv::INTER_CUBIC, cv::BORDER_CONSTANT);

getPerspectiveTransform函数

warpPerspective函数

时间: 2024-07-30 23:37:52

图像处理-图像的旋转及变换的相关文章

深入学习图像处理——图像相似度算法

最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜索的流程整理一下,想到什么说什么吧. 首先在进行图片灰度化处理之前,我觉得有必要了解一下为什么要进行灰度化处理. 图像灰度化的目的是什么? 将彩色图像转化为灰度图像的过程是图像的灰度化处理.彩色图像中的每个像素的颜色由R,G,B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多

数字图像处理——图像的几何变换

数字图像处理--图像的几何变换 几何变换不改变像素值,而是改变像素所在的位置. 它包括两个独立的算法: 空间变换算法 插值算法 分类 从图像类型上 二维图像 三维图像 从三维到二维平面投影变换 从变换的性质 基本变换:平移,比例缩放,旋转,镜像,错切 复合变换 图像的平移 在同一坐标系下,设\(P_0(x_0,y_0)\) ,经过水平偏移量\(\triangle x\) ,垂直偏移量\(\triangle y\),得到平移之后的坐标: \[ \begin{cases} x = x_0 + \tr

图像处理之基础---卷积傅立叶变换中的复数

整个看FFT过程中复数一直很折磨我. 原本的实数的东西通过复数表达很像旋转矩阵用quaternion来表达,尽管旋转vector还是要用matrix来做,但是通过用quaternion表达的旋转意义可以做插值等很多快速的操作,而且内存消耗也小,在做完这些操作之后再转成matrix用就好了. 复数表达也是类似. a+bi = M*(cos(theta)+sin(theta)*i)----极坐标 cos(x) + sin(x)*i = exp(x*i)----欧拉公式 这个用欧拉公式转出来的exp(

图像处理——图像的傅里叶变换

首先给大家推荐傅里叶变换的资料(转自微信): http://mp.weixin.qq.com/s?__biz=MjM5MTIwMjY1Mg==&mid=206922366&idx=5&sn=9d1a1f32fdfd46c64a5f9276f7366e9d&scene=2#rd http://mp.weixin.qq.com/s?__biz=MjM5MTIwMjY1Mg==&mid=207362239&idx=1&sn=0a74b905aac6fb61

OpenCV文本图像的旋转矫正

用户在使用Android手机拍摄过程中难免会出现文本图像存在旋转角度.这里采用霍夫变换.边缘检测等数字图像处理算法检测图像的旋转角度,并根据计算结果对输入图像进行旋转矫正. 首先定义一个结构元素,再通过该结构元素对该图像进行开运算和闭运算(即腐蚀膨胀运算). Imgproc.cvtColor(matOri, matGray, Imgproc.COLOR_RGB2GRAY); Mat kernel = Imgproc.getStructuringElement(Imgproc.CV_SHAPE_R

图像中的傅立叶变换(二)

上一篇文章讲了傅立叶变换的本质.这篇文章会总结一下傅立叶变换的常用性质,公式巨多,慎入!慎入! 相关概念 首先,回顾一下傅立叶变换的公式: \[ F(u)=\frac{1}{M}\sum_{x=0}^{M-1}f(x)e^{-2j\pi (ux/M)} \] 频谱(spectrum) 由上面的公式可以看出,傅立叶变换得到的系数 \(F(u)\) 是一个复数,因此可以表示为:\(F(u)=R(u)+jI(u)\),其中,\(R(u)\) 是实部,\(I(u)\) 是虚部.傅立叶变换的频谱被定义为:

Atitit 图像处理—图像形态学(膨胀与腐蚀)

Atitit 图像处理-图像形态学(膨胀与腐蚀) 1.1. 膨胀与腐蚀1 1.2. 图像处理之二值膨胀及应用2 1.3. 测试原理,可以给一个5*5pic,测试膨胀算法5 1.4. Photoshop里面的处理5 1.5. 类库的处理,好像没找到jhlabs,6 1.6. Attilax 源码6 1.1. 膨胀与腐蚀 说概念可能很难解释,我们来看图,首先是原图: 膨胀以后会变成这样: 腐蚀以后则会变成这样: 看起来可能有些莫名其妙,明明是膨胀,为什么字反而变细了,而明明是腐蚀,为什么字反而变粗了

C++图像处理 -- 图像色阶调整

阅读提示:     <C++图像处理>系列以代码清晰,可读性为主,全部使用C++代码.     <Delphi图像处理>系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM.     尽可能保持二者内容一致,可相互对照. 本文代码必须包括<C++图像处理 -- 数据类型及公用函数>文章中的BmpData.h头文件. 在Photoshop中,图像色阶调整应用很广泛,本文介绍的图像色阶调整过程与Photoshop处理效果基本一致. Photoshop的色阶调整分

Atitti 图像处理 图像混合 图像叠加&#160;blend 原理与实现

Atitti 图像处理 图像混合 图像叠加 blend 原理与实现 混合模式 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 混合模式是图像处理技术中的一个技术名词,不仅用于广泛使用的Photoshop中,也应用于AfterEffect.llustrator . Dreamweaver. Fireworks等软件.主要功效是可以用不同的方法将对象颜色与底层对象的颜色混合.当您将一种混合模式应用于某一对象时,在此对象的图层或组下方的任何对象上都可看到混合模式的效果.