java opencv 获取视频变换矩阵

来源:互联网 发布:成龙女儿知乎 编辑:程序博客网 时间:2024/06/05 11:16
package com.opencv;import org.opencv.core.Core;import org.opencv.core.CvType;import org.opencv.core.Mat;import org.opencv.imgproc.Imgproc;/** * opencv 工具类 *  * @author  *  * @since 2017年6月1日11:22:35 * */public class Utils {static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);  }/** * 获取变换矩阵 * @return */public static Mat getMatrix(){Mat src_mat=new Mat(4,1,CvType.CV_32FC2);//第一帧四点位置坐标储存对象(4行1列32位2通道)        Mat dst_mat=new Mat(4,1,CvType.CV_32FC2);//第二帧四点位置坐标存储对象(4行1列32位2通道)                //int org.opencv.core.Mat.put(int row, int col, double... data)指定初始位置坐标,多出的数据自动下一行填充        src_mat.put(0,0,703.624573,432.514771,982.845703,432.499115,986.821472,588.753723,703.555298,589.566284);        dst_mat.put(0,0,703.44342,432.491852,982.675049,432.485107,986.639221,588.751526,703.371582,589.557251);                        //Mat org.opencv.imgproc.Imgproc.getPerspectiveTransform(Mat src, Mat dst) 返回变化矩阵储存对象(3*3)        return Imgproc.getPerspectiveTransform(src_mat, dst_mat);}/** * 根据上一帧四点坐标和变换矩阵 获取下一帧四点坐标 * @param src 上一帧四点坐标 * @param matrix 变换矩阵(3*3) * @return 下一帧四点坐标字符串(json格式) */public static String getCoordinate(Mat src, Mat matrix){Mat dst=new Mat(4,1,CvType.CV_32FC2);//任意知道两个参数,将会得到第三个参数的值并填充到第三个参数中        Core.perspectiveTransform(src, dst,  matrix);        String coordinate = "{next:[";        for(int i=0;i<4;i++){        if(i<3){        coordinate += dst.get(i, 0)[0]+",";        coordinate += dst.get(i, 0)[1]+",";        }else{        coordinate += dst.get(i, 0)[0]+",";        coordinate += dst.get(i, 0)[1];        }        }        coordinate += "]}";return coordinate;}}

原创粉丝点击