package hsytest;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.utils.Converters;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class HsyOpencvUtils {
static {
// 解决awt报错问题
System.setProperty("java.awt.headless", "false");
System.out.println("java.library.path = " + System.getProperty("java.library.path"));
// 加载动态库
// URL url = ClassLoader.getSystemResource("opencv_java341.dll");
// URL url = HsyOpencvTest.class.getResource("opencv_java320.dll");
// String path = url.toString();
// System.out.println( "path = " + path );
System.load( "E:\\git\\study\\opencvHandleImg-master\\out\\production\\Opencv\\opencv_java320.dll" );
}
/**
* 图片的透视变换
*/
public static void perspectiveTransform( String imagePath_src,
String outputPath,
Point p1_src,
Point p2_src,
Point p3_src,
Point p4_src,
Point p1_output,
Point p2_output,
Point p3_output,
Point p4_output ) {
try{
Mat mat_src = Imgcodecs.imread( imagePath_src );
Mat mat_output = new Mat();
List<Point> points_src = Arrays.asList( p1_src,p2_src,p3_src,p4_src );
Mat mat_points_src= Converters.vector_Point_to_Mat( points_src,CvType.CV_32F );
List<Point> points_output = Arrays.asList( p1_output,p2_output,p3_output,p4_output );
Mat mat_points_output = Converters.vector_Point_to_Mat( points_output,CvType.CV_32F );
Mat mat_transform_map = Imgproc.getPerspectiveTransform( mat_points_src, mat_points_output );
Imgproc.warpPerspective( mat_src, mat_output, mat_transform_map, mat_src.size(),Imgproc.INTER_LINEAR );
Imgcodecs.imwrite( outputPath,mat_output );
}catch(Exception e){
e.printStackTrace();
}
}
}
java + opencv 实现图片透视变换
猜你喜欢
转载自blog.csdn.net/heshiyuan1406146854/article/details/130149603
今日推荐
周排行