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);
}

在这里插入图片描述

发布了90 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/wangwenjie1997/article/details/105125972