高考考试网
当前位置: 首页 高考资讯

opencv旋转图像(JavaOpenCV图像旋转)

时间:2023-08-14 作者: 小编 阅读量: 3 栏目名: 高考资讯

图像旋转图形旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。

图像旋转(Rotation)

图形旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。

函数说明:Imgproc.getRotationMatrix2D(Point center, double angle, double scale)

参数详解: Point center:表示旋转的中心点; double angle:表示旋转的角度; double scale:图像缩放因子;

代码案例

package com.what21.opencv01.demo05;import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.core.Point;import org.opencv.imgcodecs.Imgcodecs;import org.opencv.imgproc.Imgproc;/** * 图像旋转 */public class OpenCVRotate {static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}public static void main(String[] args) {Mat src = Imgcodecs.imread("D:/1.jpg");Mat dst = src.clone();//复制矩阵进入dstPoint center = new Point(src.width() / 2.0, src.height() / 2.0);Mat affineTrans = Imgproc.getRotationMatrix2D(center, 33.0, 1.0);Imgproc.warpAffine(src, dst, affineTrans, dst.size(), Imgproc.INTER_NEAREST);Imgcodecs.imwrite("D:/1$1.jpg", dst);affineTrans = Imgproc.getRotationMatrix2D(center, 110.0, 1.1);Imgproc.warpAffine(src, dst, affineTrans, dst.size(), Imgproc.INTER_NEAREST);Imgcodecs.imwrite("D:/1$2.jpg", dst);}}

1.jpg

1$1.jpg

1$2.jpg

透视变换(Perspective Transformation)

透视变换(Perspective Transformation)是指利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。

代码案例

package com.what21.opencv01.demo05;import org.opencv.core.Core;import org.opencv.core.CvType;import org.opencv.core.Mat;import org.opencv.core.Point;import org.opencv.imgcodecs.Imgcodecs;import org.opencv.imgproc.Imgproc;import org.opencv.utils.Converters;import java.util.List;/** * 透视变换 */public class OpenCVPerspective {static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}public static void main(String[] args) {Mat src = Imgcodecs.imread("D:/1.jpg");//读取图像到矩阵中,取灰度图像if (src.empty()) {return;}try {int xMargin, yMargin;int x0 = src.cols() / 4;int x1 = (src.cols() / 4) * 3;int y0 = src.cols() / 4;int y1 = (src.cols() / 4) * 3;Mat dst = new Mat();List<Point> listSrcs = java.util.Arrays.asList(new Point(x0, y0), new Point(x0, y1), new Point(x1, y1), new Point(x1, y0));Mat srcPoints = Converters.vector_Point_to_Mat(listSrcs, CvType.CV_32F);xMargin = src.cols() / 10;yMargin = src.rows() / 10;List<Point> listDsts = java.util.Arrays.asList(new Point(x0xMargin, y0yMargin), listSrcs.get(1), listSrcs.get(2), new Point(x1 - xMargin, y0yMargin));Mat dstPoints = Converters.vector_Point_to_Mat(listDsts, CvType.CV_32F);Mat perspectiveMmat = Imgproc.getPerspectiveTransform(srcPoints, dstPoints);Imgproc.warpPerspective(src, dst, perspectiveMmat, src.size(), Imgproc.INTER_LINEAR);Imgcodecs.imwrite("D:/1.dst1.jpg", dst);xMargin = src.cols() / 8;yMargin = src.cols() / 8;listDsts.set(0, listSrcs.get(0));listDsts.set(1, listSrcs.get(1));listDsts.set(2, new Point(x1 - xMargin, y1 - yMargin));listDsts.set(3, new Point(x1 - xMargin, y0 - yMargin));dstPoints = Converters.vector_Point_to_Mat(listDsts, CvType.CV_32F);perspectiveMmat = Imgproc.getPerspectiveTransform(srcPoints, dstPoints);Imgproc.warpPerspective(src, dst, perspectiveMmat, src.size(), Imgproc.INTER_LINEAR);Imgcodecs.imwrite("D:/1.dst2.jpg", dst);xMargin = src.cols() / 6;yMargin = src.cols() / 6;listDsts.set(0, new Point(x0xMargin, y0yMargin));listDsts.set(1, listSrcs.get(1));listDsts.set(2, new Point(x1 - xMargin, y1 - yMargin));listDsts.set(3, listSrcs.get(3));dstPoints = Converters.vector_Point_to_Mat(listDsts, CvType.CV_32F);perspectiveMmat = Imgproc.getPerspectiveTransform(srcPoints, dstPoints);Imgproc.warpPerspective(src, dst, perspectiveMmat, src.size(), Imgproc.INTER_LINEAR);Imgcodecs.imwrite("D:/1.dst3.jpg", dst);} catch (Exception e) {e.printStackTrace();}}}

1.dst1.jpg

1.dst2.jpg

1.dst3.jpg

    推荐阅读
  • 合肥师范学院滨湖校区多少亩(合肥师范学院滨湖校区二期工程建设正酣)

    目前,备受期待的合肥师范学院滨湖校区二期工程正在顺利推进,施工现场如火如荼。待二期项目全面建成后合肥师范学院滨湖校区将达1.4万人办学规模。合肥师范学院滨湖校区二期工程位于黄麓科教园区,竺城路以南、书香路以西、黄麓大道以东。总建筑面积约16万平方米,合同估算价89517.12万元,计划工期540天。

  • 梦见洗澡没洗成什么意思(  梦见洗澡没洗成的相关解释)

    梦见洗澡没洗成什么意思怀有身孕的人梦见洗澡没洗成,预示生女,忌动土,动胎气。创业的人梦见洗澡没洗成,代表行情价涨,利小,先损后得,从新整顿营业。谈婚论嫁的人梦见洗澡没洗成,说明为小事争执,难于沟通,婚姻不成。梦到在浴室里洗澡,热气充满整个空间,表示你可能睡姿不好,或是呼吸系统不大好,才会梦到这种情境。梦见在家里洗澡,交际方面的运气转好。

  • 小说写作如何从大纲扩充整个剧情(小说写作班类型写法快谈)

    「文以载道」,写实系列创作反映社会现象,让文学与时代贴合。但网络小说的消费主力集中在15~30岁,其中15~20岁更是主战场,这年纪的读者对于社会写实较不感兴趣,他们比较喜欢奇幻、爱情、恐怖。诡异的是,这类为青少年量身订做的小说往往太八股、说教意味太重,所以青少年反而不爱看。这些介绍,是各类型最大宗读者的弱点,但读者千千万,肯定有例外。能主动为出版社撰写合适的书系也是提升过稿机率的好方法。

  • 强化地板优缺点有哪些(强化地板怎么样)

    而强化地板的表面则完全没有这个烦恼。即使是一段时间不去打理,也不用担心地板会因此而受损,家庭主妇比较繁忙的话适合选择这种地板。泰诺大师的地板防水功能非常高,那么若是足够仔细的观察,它会发现其采用了国际上先进的六面封蜡技术,还有使得面面都能够隔离水层,但是另外中心还有吸水层,那么就算六层封蜡技术都不能阻挡的水,因而称泰诺为防水专家,名副其实。

  • 填字组词(填怎么组词)

    以下内容希望对你有帮助!填字组词欲壑难填[yùhènántián]欲:欲望。欲望就像深沟一样很难填满。形容贪心太重,总是不能满足。指胸中充满了愤怒。也作“义愤填胸”。精卫填海[jīngwèitiánhǎi]据《山海经·北山经》记载:上古时炎帝的女儿在东海淹死,变为一只名叫精卫的鸟,每天衔西山的石块和树枝投入东海,要把大海填平。后用“精卫填海”比喻怀有深仇大恨,而立志报仇雪恨。也形容意志坚强,不畏艰难,矢志不移。

  • 连翘用多大的盆(连翘在盆栽的时候要选相对较大的花盆)

    下面内容希望能帮助到你,我们来一起看看吧!连翘用多大的盆连翘在盆栽的时候要选相对较大的花盆。因为它的萌发能力强,后期长势会很快。想要后期做造型的话可根据自己的喜好选各种形状的花盆。方形的,圆形的都行。另外,还要注意盆土的选择。它对土壤的要求很宽松,一般的园土就行,但若是能有透气,疏松的更好,更利于生长,也便于后期管理。

  • 牛仔裤怎么改短裤(牛仔裤怎么改短裤关边怎么剪)

    先将牛仔裤平铺在桌面上,然后用尺子量出需要的短裤长度并做好标记,再用剪刀沿着标记将裤腿剪下,最后用线锁边即可。在将长牛仔裤改成短裤后,一定要用线缝起来,给裤子边缘进行锁边,否则很容易出现脱落问题。在裁剪裤腿的时候要注意裤子内侧倾斜度要比外侧大,这样才能达到最完美的裤线。

  • 群星控制台查看国家代码(群星控制台怎么用)

    《群星》控制台怎么用?英文输入法按——键开启,然后输代码用help指令啊,会告诉你所有控制台命令相关推荐:《群星》怎么防止海盗偷袭防止海盗偷袭的方法《群星》怎么俘虏敌人俘虏敌人方法介绍《群星》开局造多少船好开局造科学船和工程船数量推荐《群星》怎么自建星系自建星系方法介绍《群星》无法殖民怎么办无法殖民的解决方法

  • 自榨花生油有毒素吗(强致癌物超标的重灾区)

    强致癌物超标的重灾区现在许多人喜欢在农贸市场里或者网上买土榨的花生油,从城里回乡下,也会顺着带几罐回来,觉得纯手工制作,无添加,闻起来很香,一种返璞归真的感觉,哪一点都要比大厂产的油强其实这些表面上的好处背后,往往是巨大。

  • 木瓜放雪蛤油可以吗(木瓜炖雪蛤怎么做)

    木瓜炖雪蛤是一道美味可口的传统名点,属于粤菜系。以木瓜和雪蛤为主要食材,属粤式甜品,润肤养颜,营养价值丰富。主要材料有木瓜、雪蛤油、鲜奶、水等。制作食材:木瓜一个,雪蛤油2到3克,鲜奶一杯,水一杯,冰糖适量。雪蛤油泡发至白色半透明的状态,备用。冰糖和水一起煲溶,然后放入雪蛤膏煲半小时,加入鲜奶,待滚,滚后注入木瓜盅内,加盖,用牙签插实木瓜盖,隔水炖至水开之后20分钟左右即可。