Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để vẽ các hình dạng hình học trên hình ảnh bằng Thư viện Java OpenCV?

Gói org.opencv.imgproc của thư viện Java OpenCV chứa một lớp có tên là Imgproc lớp này cung cấp các phương thức khác nhau như, resize (), wrapAffine (), filter2D, để xử lý hình ảnh đầu vào.

Ngoài ra, nó còn cung cấp một tập hợp các phương pháp để vẽ các hình dạng hình học trên hình ảnh, Sau đây là một số phương pháp trong số đó -

Hình dạng Phương pháp và Mô tả
Hình elip Bạn có thể vẽ hình elip trên hình ảnh bằng cách sử dụng ellipse () phương pháp.
Vòng kết nối Bạn có thể vẽ hình tròn trên hình ảnh bằng cách sử dụng circle () phương pháp.
Hình chữ nhật Bạn có thể vẽ hình chữ nhật trên hình ảnh bằng cách sử dụng chữ nhật () phương pháp.
Đa giác Bạn có thể vẽ đa giác trên hình ảnh bằng cách sử dụng polygon () phương pháp.
Dòng Bạn có thể vẽ một đường thẳng trên hình ảnh bằng cách sử dụng line () phương pháp

Ví dụ

Ví dụ Java sau đây vẽ các hình dạng khác nhau trên một hình ảnh OpenCV trống -

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.RotatedRect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.highgui.HighGui;
public class DrawingGeometricalShapes {
   public static void main(String args[]) {
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      Mat src = Imgcodecs.imread("D:\\blank.jpg");
      Scalar color = new Scalar(0, 0, 120);
      //Drawing a Circle
      Imgproc.circle(src, new Point(75, 65), 40, color, Imgproc.FILLED);
      // Drawing an Ellipse
      Imgproc.ellipse(src, new RotatedRect(new Point(330, 60), new Size(100, 65), 180), color, Imgproc.FILLED);
      //Drawing a line
      Imgproc.line(src, new Point(540,30), new Point(540, 90), color, 5);
      //Drawing filled polygon
      List<MatOfPoint> list = new ArrayList();
      list.add(new MatOfPoint (
         new Point(410, 60), new Point(430, 30),
         new Point(470, 30), new Point(490, 60),
         new Point(470, 100), new Point(430, 100))
      );
      Imgproc.fillPoly (src, list, color, 8);
      //Drawing a Rectangle
      Imgproc.rectangle(src, new Point(150, 30), new Point(250, 95),color, Imgproc.FILLED);
      HighGui.imshow("Geometrical shapes", src);
      HighGui.waitKey();
   }
}

Đầu ra

Làm thế nào để vẽ các hình dạng hình học trên hình ảnh bằng Thư viện Java OpenCV?