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

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

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

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

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

    推荐阅读
  • 什么是医疗危险行为(什么是医疗危险行为类型)

    医疗危险行为虽然以拯救患者的生命健康为目的,但对患者身体具有侵入性和损害性,对组织器官具有一定甚至是明显的侵袭性,易导致人体损害的后果。医疗美容;是指使用药物以及手术、物理和其他损伤性或者侵入性手段进行的美容。军队的医疗机构:是指中国人民解放军和中国人民武装警察部队编制内的医疗机构。

  • 诗溢西夏江上渔者(诗溢西夏江上渔者)

    诗溢西夏江上渔者点击上方“西夏发布”可以订阅哦!作品全文《江上渔者》宋•范仲淹江上往来人,但爱鲈鱼美君看一叶舟,出没风波里相关注释渔者:捕鱼的人但:只爱:喜欢鲈鱼:一种头大口大、体扁鳞细、背青腹白、味道鲜美的鱼生长快。

  • 初次见面小说(第一次亲密接触)

    大壮说这就是虞姬,问我行不行,我和虞姬就这样对视着,她很专业,脸上始终带着微笑,我故作深沉得点点头,大壮就让我进去了。虞姬把门锁上,一下子把我抱住,感受到身体的柔软,我一时僵硬在原地不知所措。房间里的空调开得很足,虞姬只穿着一条短裙,下面是一条肉丝袜,她把我的羽绒服脱掉挂好,然后直接坐在我大腿上,在耳朵旁边哈着气说:“小弟弟不学好,姐姐待会儿可要好好惩罚你哦。”

  • 三国杀规则详细介绍桌游(三国杀的十载足迹)

    2008年12月,北京游卡桌游文化发展有限公司正式成立。十年间,《三国杀》实体版销售年度最高营业额达到一亿人民币,销售点更是遍布全国80余个城市。2015年,杭州边锋与《三国杀》业务管理团队共同成立合资公司杭州游卡网络技术有限公司,独立运营《三国杀》业务。在《三国杀》实体版正式面世之时,制作团队便已着手准备游戏的电子化改造,并于2009年12月底正式推出《三国杀OL》公测版本。

  • 眩晕症原因和治疗方法(你想了解眩晕症最可能的病因吗)

    接诊医生仔细询问了张阿姨的发病症状,指出,张阿姨这是患了“耳石症”。听到这一诊断结论,张阿姨和老伴十分的困惑。耳石症对于年龄偏大及有心脑血管疾病的患者极易发生意外。而耳石症最有效的治疗方法是耳石复位治疗。医生为张阿姨用全自动耳石复位仪进行EPLEY法耳石复位,张阿姨天旋地转的症状一下子就减轻了不少。上述这些疾病都是引起头晕的少见病,而“耳石症”才是引起头晕的第一位疾病。

  • 安慰失恋女生的暖心语录(安慰失恋女生的暖心语录有哪些)

    机会可就只有一次哦,错过了我可就不陪你饿哦。不用考虑,那生活简直是太昏暗了。与其这样,还不如放自己一条生路,让自己活得安好一点。这世界每一段感情都是一种缘分,缘分到了,人们就自然而然的在一起了,缘分尽了,两个人也就形同陌路了。而我们能做的就是,当在一起的时候,好好珍惜这段美好的时光,当分手的时候,学会放下,不给自己添堵。

  • 家里放梅花好吗(家里放梅花好不好)

    原来,老一辈的人们认为,“梅”与“霉”同音,在家里放着一盆梅花会倒霉的,十分忌讳这一点,所以认为在家里养殖梅花就会带来不好的事情发生。不仅如此,在古代,很多女子都会落红画梅花当作纪念的。在风水学中,梅花风水的确不好,如果家中客厅放了一盆梅花,那么女生的阴气会过剩,至会乾坤相变,家中夫妻容易发生争吵,男主人会出门在外做事不顺利,挑花运势会上升,女主人会变得多愁善感。

  • 树如何能产盐(植物如何能产盐?)

    人们把以钠盐为主要成分的土地叫作盐碱地,山东北部和河北东部的平原地区有不少这样的盐碱地。否则,根部吸收水分就会发生困难,同时,盐分在体内积存多了也会影响细胞活性,会使植物被“毒”死。所以,木盐树和瓣鳞花虽然从土壤中吸收了大量盐分,但能及时把它们排出去,以保证自己不受盐害。据报道,1公顷滨藜每年可吸收1吨盐碱。全世界种植粮食的土地受盐碱危害的面积正日益扩大,现共有57亿亩成了盐碱地。

  • 20首唐诗大全(古诗常见的七类题材)

    古诗常见的七类题材读懂一首古诗所蕴含的中心思想以及作者所表达的感情,是广大学生的一大难题!本文将探讨不同诗歌“题材类型”,让你秒懂唐诗根据不同题材,古诗大致可以分为以下七种类型送别诗(一)送别诗诗歌标题中常有“送”、“。

  • 芥菜的储存方法(芥菜如何保鲜)

    1、我们可以选择择洗的方法,我们把买回来的芥菜去除他的比较老的叶子和一些杂质,将芥菜的根不要去,择洗好的芥菜,然后用清水漂洗一下,去除上面的泥土和灰尘,将芥菜放入淡盐水中浸泡半个小时左右,在将芥菜捞出来进行清水冲洗,然后沥干水分,如果我们只是短期保存一些建材这个方法就可以了,然后再装入保鲜袋中放入冰箱冷藏是保鲜就可以了,随时可以吃到,这种方法的保存期限一般为5天左右。

热门推荐