Java OpenCV(图像仿射变换和透视变换)

1.图像的仿射变换

原理:将原图中的左上角,右上角,左下角三个顶点进行标记,作为原顶点数组pt1。

接着将原图左下角顶点x坐标改为图像宽度的中值,即(0+512)/2=256, y坐标不变。

使用getAffineTransform函数进行变换,形成变换后的矩阵。

warpAffine应用变换矩阵变换图像。

 public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat src = Imgcodecs.imread("1.png");
        Mat dst = new Mat();
        //输入图像
        Point[] pt1 = new Point[3];
        pt1[0]=new Point(0,0);
        pt1[1]=new Point(512,0);
        pt1[2]=new Point(0,512);
        //输出图像
        Point[] pt2 = new Point[3];
        pt2[0]=new Point(0,0);
        pt2[1]=new Point(512,0);
        pt2[2]=new Point(256,512);

        MatOfPoint2f mop1 = new MatOfPoint2f(pt1);
        MatOfPoint2f mop2 = new MatOfPoint2f(pt2);

        Mat mat = Imgproc.getAffineTransform(mop1, mop2);//2*3的变换矩阵
        Imgproc.warpAffine(src,dst,mat,src.size());//应用变换矩阵变换图像
        HighGui.imshow("lena",dst);
        HighGui.waitKey(0);
    }

原图:

Java OpenCV(图像仿射变换和透视变换)_第1张图片

结果图: 

Java OpenCV(图像仿射变换和透视变换)_第2张图片

2.图像的透视变换

原理:将图片投影到一个新的视平面,也叫做投影映射。

一般用于将曲面图像变为平面图像。

public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat src = Imgcodecs.imread("book.jpg");
        Mat dst = new Mat();

        Point[] pt1 = new Point[4];
        pt1[0]=new Point(63,85);
        pt1[1]=new Point(467,112);
        pt1[2]=new Point(39,416);
        pt1[3]=new Point(402,416);

        //输出图像
        Point[] pt2 = new Point[4];
        pt2[0]=new Point(0,0);
        pt2[1]=new Point(400,0);
        pt2[2]=new Point(0,400);
        pt2[3]=new Point(400,400);

        MatOfPoint2f mop1 = new MatOfPoint2f(pt1);
        MatOfPoint2f mop2 = new MatOfPoint2f(pt2);

        Mat perspectiveMat = Imgproc.getPerspectiveTransform(mop1, mop2);
        Imgproc.warpPerspective(src,dst,perspectiveMat,new Size(400,400));

        HighGui.imshow("book",dst);
        HighGui.waitKey(0);
    }

原图:

Java OpenCV(图像仿射变换和透视变换)_第3张图片

 结果图:

Java OpenCV(图像仿射变换和透视变换)_第4张图片

 

你可能感兴趣的:(opencv,计算机视觉,图像处理)