最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java OpenCV圖像處理之仿射變換,透視變換,旋轉詳解

 更新時間:2022年10月13日 14:08:35   作者:深色風信子  
這篇文章主要為大家詳細介紹了Java OpenCV圖像處理中仿射變換,透視變換,旋轉的實現(xiàn),文中的示例代碼講解詳細,快跟隨小編一起學習一下

1 仿射變換

仿射變換:一種二維坐標到二維坐標的線性變換,它保持二維圖像的平直性與平行性,即變換后直線依然是直線,平行的線依然平行。

package com.xu.opencv.image;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint2f;
import org.opencv.core.Point;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**
 * @author Administrator
 */
public class ImageChange {

    static {
        String os = System.getProperty("os.name");
        String type = System.getProperty("sun.arch.data.model");
        if (os.toUpperCase().contains("WINDOWS")) {
            File lib;
            if (type.endsWith("64")) {
                lib = new File("lib\\OpenCV-455\\x64\\" + System.mapLibraryName("opencv_java455"));
            } else {
                lib = new File("lib\\OpenCV-455\\x86\\" + System.mapLibraryName("opencv_java455"));
            }
            System.load(lib.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
        warpAffine();
    }

    /**
     * OpenCV 仿射變換
     *
     * @return void
     * @Author: hyacinth
     * @Title: warpAffine
     * @Description: TODO
     * @date: 2022年2月22日12點32分
     */
    public static void warpAffine() {
        Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Desktop\\1.png");
        MatOfPoint2f point1 = new MatOfPoint2f(new Point(0, 0), new Point(0, src.rows()), new Point(src.cols(), 0));
        MatOfPoint2f point2 = new MatOfPoint2f(new Point(src.cols() * 0.1, src.cols() * 0.1), new Point(src.cols() * 0.2, src.cols() * 0.7),
                new Point(src.cols() * 0.7, src.cols() * 0.2));
        // 獲取 放射變換 矩陣
        Mat dst = Imgproc.getAffineTransform(point1, point2);
        // 進行 仿射變換
        Mat image = new Mat();
        Imgproc.warpAffine(src, image, dst, src.size());
        HighGui.imshow("原圖", src);
        HighGui.imshow("仿射變換", image);
        HighGui.waitKey(0);
    }

}

2 透視變換

透視變換:透視變換是將一個平面投影到另一個平面的過程,也稱投影映射。是一種非線性變換,表現(xiàn)為可將梯形變換為平行四邊形,因此需要四個點來確定透視變換矩陣

package com.xu.opencv.image;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint2f;
import org.opencv.core.Point;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**
 * @author Administrator
 */
public class ImageChange {

    static {
        String os = System.getProperty("os.name");
        String type = System.getProperty("sun.arch.data.model");
        if (os.toUpperCase().contains("WINDOWS")) {
            File lib;
            if (type.endsWith("64")) {
                lib = new File("lib\\OpenCV-455\\x64\\" + System.mapLibraryName("opencv_java455"));
            } else {
                lib = new File("lib\\OpenCV-455\\x86\\" + System.mapLibraryName("opencv_java455"));
            }
            System.load(lib.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
        warpPerspective();
    }

    /**
     * OpenCV 透視變換
     *
     * @return void
     * @Author: hyacinth
     * @Title: warpPerspective
     * @Description: TODO
     * @date: 2022年2月22日12點32分
     */
    public static void warpPerspective() {
        Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Desktop\\1.png");
        MatOfPoint2f point1 = new MatOfPoint2f();
        List<Point> before = new ArrayList<>();
        before.add(new Point(0, 0));
        before.add(new Point(src.cols(), 0));
        before.add(new Point(0, src.rows()));
        before.add(new Point(src.cols(), src.rows()));
        point1.fromList(before);
        MatOfPoint2f point2 = new MatOfPoint2f();
        List<Point> after = new ArrayList<>();
        after.add(new Point(src.cols(), src.rows()));
        after.add(new Point(src.cols() * 0.1, src.rows() * 0.8));
        after.add(new Point(src.cols() * 0.7, src.rows() * 0.3));
        after.add(new Point(0, 0));
        point2.fromList(after);
        // 獲取 透視變換 矩陣
        Mat dst = Imgproc.getPerspectiveTransform(point1, point2);
        // 進行 透視變換
        Mat image = new Mat();
        Imgproc.warpPerspective(src, image, dst, src.size());
        HighGui.imshow("原圖", src);
        HighGui.imshow("透視變換", image);
        HighGui.waitKey(0);
    }

}

3 圖像旋轉

package com.xu.opencv.image;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint2f;
import org.opencv.core.Point;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**
 * @author Administrator
 */
public class ImageChange {

    static {
        String os = System.getProperty("os.name");
        String type = System.getProperty("sun.arch.data.model");
        if (os.toUpperCase().contains("WINDOWS")) {
            File lib;
            if (type.endsWith("64")) {
                lib = new File("lib\\OpenCV-455\\x64\\" + System.mapLibraryName("opencv_java455"));
            } else {
                lib = new File("lib\\OpenCV-455\\x86\\" + System.mapLibraryName("opencv_java455"));
            }
            System.load(lib.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
        rotate();
    }

    /**
     * OpenCV 透視變換
     *
     * @return void
     * @Author: hyacinth
     * @Title: rotate
     * @Description: TODO
     * @date: 2022年2月22日12點32分
     */
    public static void rotate() {
        Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Desktop\\1.png");
        // 圖像中心
        Point center = new Point(src.cols() / 2, src.rows() / 2);
        // 獲取 旋轉 矩陣
        Mat dst = Imgproc.getRotationMatrix2D(center, 45, 0.5);
        // 進行 圖像旋轉
        Mat image = new Mat();
        Imgproc.warpAffine(src, image, dst, src.size());
        HighGui.imshow("原圖", src);
        HighGui.imshow("圖像旋轉", image);
        HighGui.waitKey(0);
    }

}

到此這篇關于Java OpenCV圖像處理之仿射變換,透視變換,旋轉,平移,縮放詳解的文章就介紹到這了,更多相關Java OpenCV圖像處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 完美解決java double數(shù)相加和相減的方案

    完美解決java double數(shù)相加和相減的方案

    這篇文章主要介紹了完美解決java double數(shù)相加和相減的方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot如何指定某些類優(yōu)先啟動

    SpringBoot如何指定某些類優(yōu)先啟動

    這篇文章主要介紹了SpringBoot如何指定某些類優(yōu)先啟動,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 解讀SpringBoot接收List<Bean>參數(shù)問題(POST請求方式)

    解讀SpringBoot接收List<Bean>參數(shù)問題(POST請求方式)

    這篇文章主要介紹了解讀SpringBoot接收List<Bean>參數(shù)問題(POST請求方式),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java?Spring?boot實現(xiàn)生成二維碼

    Java?Spring?boot實現(xiàn)生成二維碼

    大家好,本篇文章主要講的是Java?Spring?boot實現(xiàn)生成二維碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務

    Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務

    最近做項目遇到動態(tài)管理定時任務的需求,剛拿到這個需求還真不知道從哪下手,經過一番思考,終于找出實現(xiàn)思路,接下來通過本文給大家介紹了Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務的相關知識,需要的朋友可以參考下
    2018-09-09
  • JAVA中的延遲隊列DelayQueue應用解析

    JAVA中的延遲隊列DelayQueue應用解析

    這篇文章主要介紹了JAVA中的延遲隊列DelayQueue應用解析,DelayQueue是一個根據(jù)元素的到期時間來排序的隊列,而并非是一般的隊列那樣先進先出,最快過期的元素排在隊首,越晚到期的元素排得越后,需要的朋友可以參考下
    2023-12-12
  • IDEA中打jar包的2種方式(Maven打jar包)

    IDEA中打jar包的2種方式(Maven打jar包)

    這篇文章主要給大家介紹了關于IDEA中打jar包的2種方式,分別是不使用Maven直接打Jar包與使用Maven打jar包的兩種方法,需要的朋友可以參考下
    2021-05-05
  • Spring?Cloud中Sentinel的兩種限流模式介紹

    Spring?Cloud中Sentinel的兩種限流模式介紹

    如何使用Sentinel做流量控制呢?這篇文章就來為大家詳細介紹了Spring?Cloud中Sentinel的兩種限流模式,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-05-05
  • 關于Hystrix的監(jiān)控及可視化面板

    關于Hystrix的監(jiān)控及可視化面板

    這篇文章主要介紹了關于Hystrix的監(jiān)控及可視化面板,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 基于java 線程的幾種狀態(tài)(詳解)

    基于java 線程的幾種狀態(tài)(詳解)

    下面小編就為大家?guī)硪黄趈ava 線程的幾種狀態(tài)(詳解)。小編覺得挺不錯的,現(xiàn)在就想給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

宁安市| 鄂温| 京山县| 康定县| 江源县| 乌拉特中旗| 启东市| 杭锦旗| 红桥区| 兴仁县| 安泽县| 庐江县| 太原市| 汽车| 舒城县| 吉木乃县| 婺源县| 娱乐| 白沙| 长沙县| 临夏市| 连城县| 牙克石市| 米泉市| 南京市| 秀山| 句容市| 绥宁县| 佛山市| 伽师县| 博客| 深州市| 陆丰市| 来凤县| 阜城县| 榆社县| 博乐市| 固原市| 龙里县| 运城市| 金塔县|