แพ็กเกจ org.opencv.imgproc ของ Java OpenCV library มีคลาสชื่อ Imgproc เพื่อวาดพหุเหลี่ยมทึบ ให้ใช้เมธอด fillPoly() ของคลาสนี้ เมธอดนี้รับพารามิเตอร์:
- อ็อบเจ็กต์ Mat แทนภาพที่จะวาด polygon
- List object ที่เก็บอ็อบเจ็กต์ประเภท MatOfPoint
- อ็อบเจ็กต์ Scalar แทนสีของ polygon
- ค่า integer แทน line type
ตัวอย่างโค้ด
import java.util.ArrayList;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DrawingFilledPolygon {
public static void main(String[] args) {
// โหลด OpenCV core library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// อ่านภาพต้นทางเข้า Mat object
Mat src = Imgcodecs.imread("D:\\images\\blank.jpg");
// วาดพหุเหลี่ยม
List list = new ArrayList();
list.add(new MatOfPoint(
new Point(208, 71), new Point(421, 161),
new Point(332, 52), new Point(369, 250),
new Point(421, 161), new Point(226, 232),
new Point(369, 250), new Point(208, 71),
new Point(226, 232), new Point(332, 52)));
Scalar color = new Scalar(64, 64, 64);
int lineType = Imgproc.LINE_8;
Imgproc.fillPoly(src, list, color, lineType);
// บันทึกและแสดงภาพ
Imgcodecs.imwrite("arrowed_line.jpg", src);
HighGui.imshow("Drawing a polygon", src);
HighGui.waitKey();
}
}
ผลลัพธ์
เมื่อรันโปรแกรมจะได้หน้าต่างดังนี้:
