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

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

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

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

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

    推荐阅读
  • 用hiv试纸检测多久可以排除(个人买HIV试纸检测)

    也就是说医疗机构工作人员需要经过4次不同时间对艾滋病病毒抗体进行检测,抗体就是查血的胶体金法试纸,网上买的试纸是可以用来排除有没有感染HIV。个人认为HIV尿液抗体试纸、HIV抗体口腔分泌物试纸作为辅助检查,血液检查为主。一旦几次检测都是阳性,需要到医院或者疾控中心进一步做确定。

  • 炉石传说加尔怎么打(炉石传说加尔的打法)

    炉石传说加尔怎么打加尔作为黑石火焰山熔火之心的第一个BOSS,英雄技能是熔岩脉动,法力水晶1费,技能效果:对所有随从造成1点伤害。所以在前期尽量让加尔火誓者的随从减少同时死亡掉,下面推荐一套平民牧师套牌轻轻松松就可以打过去。前期靠牧师的技能治疗术给加尔随从加血延迟火誓者同时死亡,同时使用淡水鳄、神圣惩击、暗言术:痛消灭掉火誓者。在5费之后如果能够抽到奴隶,就可以依靠奴隶铺场轻松取胜。

  • 2023济宁医学院寒假放假时间(2021年济宁医学院暑假时间)

    2023济宁医学院寒假放假时间寒假自2023年1月16日至2023年2月24日结束,共40天。在校生2023年2月25~26日报到注册,2月27日正式上课。各部门、单位开学前14天摸排师生员工及共同生活家庭成员出行轨迹和身体健康状况;广大师生要减少不必要外出,教师确需离开学校驻地,严格履行请示报备制度。

  • 万宝龙品牌大使(普拉达香奈儿万宝龙)

    目前,涉案金额约4万元的侵权商品已被扣押。经商标权利人现场鉴定,上述商品均属侵权商品,执法人员依法对侵权商品采取扣押强制措施。目前案件正在进一步处理中。下一步,丰台区市场监管局将进一步加强对重点商品和重点场所的检查力度,同时加大对网络售假违法行为的打击力度,切实维护权利人合法权益,营造丰台区良好的营商环境。

  • 毛公鼎铭文及译文(这里有完整的译文解释)

    毛公鼎铭文及译文?我们一起去了解并探讨一下这个问题吧!

  • 女人怎样才能过好自己的一生(过好自己的方法)

    女人怎样才能过好自己的一生?接下来我们就一起去研究一下吧!一个人只有自己独立的思想,知道自己心中真正想要什么,才能最终找到自己的幸福。才不被各种舆论所压垮,各种诱惑所迷惑,才能得到自己的幸福。要有自己的朋友圈、交际圈。这样才不孤独,痛苦悲伤时才有人帮你分担、有人理解你。要有自己的工作,自己的事业。当婚姻不幸福时,你可以潇洒地离开。不用担心怎么生活,让你生活有底气。

  • jeep大切诺基2022款落地价黑色(JEEP大切诺基跌破30万)

    大切诺基大切诺基将JEEP家族式设计语言,展现得淋漓尽致,旗下SUV车型也一直以这款旗舰系列SUV为设计基础,同时车型有着大型SUV的尺寸标准,所以在外观表现方面,非常具有优势,面对同级别的大型豪华SUV,在气场和气势上非常充足。

  • 梦见橘子什么含义(梦见橘子什么意思)

    下面更多详细答案一起来看看吧!橘子光洁红润,象征着好运当头。梦见熟透了的橘子,暗示着要交好运,会有意外的惊喜。未婚女人梦见熟橘子,预示会有很好的名声。已婚男人梦见买橘子,如果续弦,会娶一个年轻美丽的女子。

  • 分析部分老字号发展面临的困境(无法消除传统头衔的老字号)

    可众所周知的是,情怀并不是长久之计。此外,如今的联名实际上更像是“贴牌”生产,而最具代表性的就是旺旺食品。然而,达到营收顶峰的旺旺,在倡导少添加低糖、核心业务遭到竞争等影响下开始出现营收下滑。不难想象的是,被市场打压的旺旺做出了改革。然而很明显的是,这种联名款的推出并没有将旺旺从传统品牌,晋升到年轻人喜爱的潮款品牌,不仅如此,目前市面上也并没有能够通过推出联名款,而重新回到年轻人视野

  • 葡萄牙为什么没成为强国(葡萄牙的综合国力如何)

    葡萄牙国土面积9.2万平方公里,人口1029万,GDP总量为2175亿美元,人均GDP为,2.1万美元,葡萄牙人普遍信奉天主教。按理说,西班牙也算欧洲一个比较大、势力还算强的国家,竟然都不是二十国集团成员国,召开G20峰会时,西班牙领导人也只能打打酱油,当观察员国,葡萄牙和西班牙哥俩真是同病相怜。