init - 初始化项目
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import org.opencv.core.Core;
|
||||
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;
|
||||
|
||||
class GeometricTransforms {
|
||||
public void run(String[] args) {
|
||||
//! [Load the image]
|
||||
String filename = args.length > 0 ? args[0] : "../data/lena.jpg";
|
||||
Mat src = Imgcodecs.imread(filename);
|
||||
if (src.empty()) {
|
||||
System.err.println("Cannot read image: " + filename);
|
||||
System.exit(0);
|
||||
}
|
||||
//! [Load the image]
|
||||
|
||||
//! [Set your 3 points to calculate the Affine Transform]
|
||||
Point[] srcTri = new Point[3];
|
||||
srcTri[0] = new Point( 0, 0 );
|
||||
srcTri[1] = new Point( src.cols() - 1, 0 );
|
||||
srcTri[2] = new Point( 0, src.rows() - 1 );
|
||||
|
||||
Point[] dstTri = new Point[3];
|
||||
dstTri[0] = new Point( 0, src.rows()*0.33 );
|
||||
dstTri[1] = new Point( src.cols()*0.85, src.rows()*0.25 );
|
||||
dstTri[2] = new Point( src.cols()*0.15, src.rows()*0.7 );
|
||||
//! [Set your 3 points to calculate the Affine Transform]
|
||||
|
||||
//! [Get the Affine Transform]
|
||||
Mat warpMat = Imgproc.getAffineTransform( new MatOfPoint2f(srcTri), new MatOfPoint2f(dstTri) );
|
||||
//! [Get the Affine Transform]
|
||||
|
||||
//! [Apply the Affine Transform just found to the src image]
|
||||
Mat warpDst = Mat.zeros( src.rows(), src.cols(), src.type() );
|
||||
|
||||
Imgproc.warpAffine( src, warpDst, warpMat, warpDst.size() );
|
||||
//! [Apply the Affine Transform just found to the src image]
|
||||
|
||||
/** Rotating the image after Warp */
|
||||
|
||||
//! [Compute a rotation matrix with respect to the center of the image]
|
||||
Point center = new Point(warpDst.cols() / 2, warpDst.rows() / 2);
|
||||
double angle = -50.0;
|
||||
double scale = 0.6;
|
||||
//! [Compute a rotation matrix with respect to the center of the image]
|
||||
|
||||
//! [Get the rotation matrix with the specifications above]
|
||||
Mat rotMat = Imgproc.getRotationMatrix2D( center, angle, scale );
|
||||
//! [Get the rotation matrix with the specifications above]
|
||||
|
||||
//! [Rotate the warped image]
|
||||
Mat warpRotateDst = new Mat();
|
||||
Imgproc.warpAffine( warpDst, warpRotateDst, rotMat, warpDst.size() );
|
||||
//! [Rotate the warped image]
|
||||
|
||||
//! [Show what you got]
|
||||
HighGui.imshow( "Source image", src );
|
||||
HighGui.imshow( "Warp", warpDst );
|
||||
HighGui.imshow( "Warp + Rotate", warpRotateDst );
|
||||
//! [Show what you got]
|
||||
|
||||
//! [Wait until user exits the program]
|
||||
HighGui.waitKey(0);
|
||||
//! [Wait until user exits the program]
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
public class GeometricTransformsDemo {
|
||||
public static void main(String[] args) {
|
||||
// Load the native OpenCV library
|
||||
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
|
||||
|
||||
new GeometricTransforms().run(args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user