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

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

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

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

图像旋转(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

    推荐阅读
  • 目前机器人有哪些种类(机器人四大家族)

    据悉,ABB的控制柜随机附带RobotStudio软件,可进行3D运行模拟以及联机功能。此外,有不少的企业反应在四大主力品牌中,ABB的交货期是最长的。据悉,相对于ABB、发那科等机器人,库卡机器人的返修率是较高的。国内市场分析KUKA目前正在加快布局中国市场本土化服务,开拓西南新领地,未来在汽车装备领域将持续发力。在中国市场,发那科销售额的55%工业机器人应用于一般制造业,排名前三的分别为家电、物流和电子电气行业。

  • 蜀绣歌词(歌曲蜀绣歌词)

    歌词芙蓉城三月雨纷纷四月绣花针,接下来我们就来聊聊关于蜀绣歌词?以下内容大家不妨参考一二希望能帮到您!

  • 历年高考奇怪的题目(高考阅读诡异的光)

    今年浙江高考语文卷阅读理解部分,选取了青年作家巩高峰的短篇小说《一种美味》。语文阅读中那道“诡异的光”所映现出的,就是选拔人才和标准化考试之间的牵系与矛盾。八股文,通称制义,一般认为,创自王安石。作为国家选拔官员的考试,八股文从创立到定式,都把公正与公平当作实现考试目的的基础。没有前者,不能称其为科学的考试;没有后者,标准化很容易导致形式化、僵化。

  • 王者荣耀限制未成年人游戏时长(限制未成年人的时间是多长)

    跟着小编一起来看一看吧!王者荣耀限制未成年人游戏时长王者荣耀规定12周岁及以下的未成年玩家每天限玩1小时,且在每日21时至次日8时无法登录游戏或进入下一场比赛。王者荣耀官方公布了限制未成年人游戏时长,其中未成年人用户在每天晚上10点至次日上午8点间禁止玩该游戏,每天限玩1.5小时,法定节假日期间每天只能玩3个小时。

  • 历年考研分数线汇总图(考研历年国家分数线汇总)

    2018年到2021年2022考研国家分数线预测学硕A区学硕B区哲学300288经济学345337法学325315教育学335326文学355345历史学324315理学285275工学265254农学252244医学300290军事学265255管理学342333艺术学346336体育学280270工学照顾255245中医照顾300290注:以上仅供参考,以实际为准

  • 祝长辈生日快乐的祝福语(祝长辈生日快乐的祝福语精选)

    祝长辈生日快乐的祝福语岁月的痕迹在纵横沟壑的皱纹中显现,时光的洗礼在满是粗茧的双手中表明。在您生日诞辰之日,祝您健康长寿!愿你一直身材苗条线条好,永远青春美丽不变老,四十岁的年龄,三十岁的心脏,二十岁的形象,十八的心态,永葆青春花期长。福如东海,寿比南山,年年有今日,岁岁有今朝。福寿安康,笑颜永驻年年岁岁花相似,岁岁年年人不同。醒来惊觉不是梦,眉间皱纹又一重。

  • 我在英国伦敦留学英语怎么说(思潮英文英国留学怎样租房)

    英国留学首先要解决的一大问题就是租房,毕竟没有一套安全方便的房子,学习和工作都很闹心。下面为您介绍英国留学租房的流程和注意事项。据了解,还有一些人,是在国内的留学英国论坛上找到租房信息的。后来小平想要自己打扫卫生,但是结果还是不行的,因为在英国他们法律上都已经规定了,房子只有完全干净后,才可以租给别人。

  • 红薯和猪血能一起吃吗(红薯和猪血能同食吗)

    以下内容希望对你有帮助!红薯和猪血能一起吃吗在日常生活中红薯和猪血这两种食物是可以一起进行食用的。这两种食物并没有什么相生相克的作用,而且猪血当中含有丰富的铁元素以及一些其他的微量元素,对于机体来说有很多的好处还能够有效的补充我们的血容量,红薯这种食物当中含有丰富的膳食纤维对于我们的机体来说是一种营养成分的补充,一起食用的话不会对身体产生什么不好的影响。

  • 哪个职业猝死率最高附上依据(哪些工作容易引发猝死)

    昨晚,年仅34岁的天涯社区副主编金波在地铁上突然晕倒去世,刚刚还在逛天涯的小编听闻这个过劳死的消息,手机都快拿不住了。职业与寿命息息相关日本有人统计,教授和医生的平均寿命比其他人群高出10个百分点。他们发现,人的寿命和工作性质、工作压力有关。保持规律的饮食和作息习惯。我们还要活久一点,尝遍天下美食,谈够所有的恋爱,拉着忘年好友勇闯天涯!有态度、有温度,千万网友喜欢使用的移动百科。

  • 盗贼50级职业任务木喉萨满在哪里(盗贼50级职业任务木喉萨满在何处)

    盗贼50级职业任务木喉萨满在哪里木喉萨满在:在艾萨拉北部,右面接近悬崖的地方,熊头和废墟的上面一点,那个大沟附近。然后去“艾萨拉”找木喉萨满偷“蓝色的袋子”!根据攻略的说法,打怪也是有几率掉落的!在“艾萨拉”东北方的森林里杀软泥怪,掉“书页”。怪普遍是53——55级,如果装备不行,可以组队去,或者等级别高了再去。最后就是去神庙杀BOSS了。