Java OpenCV 图像旋转90,-90,180

参考链接:

https://blog.csdn.net/andylanzhiyong/article/details/84857915
https://blog.csdn.net/guduruyu/article/details/68942211
https://blog.csdn.net/fengbingchun/article/details/52550460

1. 图像翻转

函数说明
Core.flip(Mat src, Mat dst, int flipCode)
src:原图
dst:目标图
flipCode: >0: 沿y轴翻转, 0: 沿x轴翻转, <0: x、y轴同时翻转(旋转180)
x,y轴说明

在这里插入图片描述

测试代码
public static void main(String[] args) {

    System.load("D:\\opencv-320\\opencv_java320.dll");

    Mat src = Imgcodecs.imread("F:\\opencvPhoto\\test3\\test.jpg");
    Mat dst1 = new Mat();
    Core.flip(src, dst1, -1); // <0: x、y轴同时翻转(旋转180)
    Imgcodecs.imwrite("F:\\opencvPhoto\\test3\\flipCode-1.jpg", dst1);

    Mat dst2 = new Mat();
    Core.flip(src, dst2, 0); // 0: 沿x轴翻转
    Imgcodecs.imwrite("F:\\opencvPhoto\\test3\\flipCode0.jpg", dst2);

    Mat dst3 = new Mat();
    Core.flip(src, dst3, 1); // >0: 沿y轴翻转
    Imgcodecs.imwrite("F:\\opencvPhoto\\test3\\flipCode1.jpg", dst3);

}
结果说明

在这里插入图片描述

2. 图像转置

OpenCV中的transpose函数实现图像转置,公式为:dst(i, j) = src(j, i)

测试代码
public static void main(String[] args) {
    System.load("D:\\opencv-320\\opencv_java320.dll");

    Mat src = Imgcodecs.imread("F:\\opencvPhoto\\test3\\test.jpg");
    Mat dst = new Mat();
    Core.transpose(src, dst);
    Imgcodecs.imwrite("F:\\opencvPhoto\\test3\\transpose.jpg", dst);  
}
结果说明

效果为旋转90度再进行镜像
在这里插入图片描述

3.图像旋转90, -90, 180

旋转90

transpose(src,tmp) + flip(tmp,dst,1)

public static void main(String[] args) {
    System.load("D:\\opencv-320\\opencv_java320.dll");

    Mat src = Imgcodecs.imread("F:\\opencvPhoto\\test3\\test.jpg");
    Mat transpose = new Mat();
    Core.transpose(src, transpose);
    Mat flip = new Mat();
    Core.flip(transpose, flip, 1);
    Imgcodecs.imwrite("F:\\opencvPhoto\\test3\\flip.jpg", flip);
}

在这里插入图片描述

旋转-90

transpose(src,tmp) + flip(tmp,dst,0)

public static void main(String[] args) {
    System.load("D:\\opencv-320\\opencv_java320.dll");

    Mat src = Imgcodecs.imread("F:\\opencvPhoto\\test3\\test.jpg");
    Mat transpose = new Mat();
    Core.transpose(src, transpose);
    Mat flip = new Mat();
    Core.flip(transpose, flip, 0);
    Imgcodecs.imwrite("F:\\opencvPhoto\\test3\\flip.jpg", flip);
}

在这里插入图片描述

旋转180

flip(src,dst,-1)

public static void main(String[] args) {
    System.load("D:\\opencv-320\\opencv_java320.dll");

    Mat src = Imgcodecs.imread("F:\\opencvPhoto\\test3\\test.jpg");
    Mat flip = new Mat();
    Core.flip(src, flip, -1);
    Imgcodecs.imwrite("F:\\opencvPhoto\\test3\\flip.jpg", flip);
}

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值