บทนำ
การวาดวงรี (Ellipse) ต้องการจุดศูนย์กลาง แกนหลัก (major axis) และแกนรอง (minor axis) รวมถึงมุมหมุน จุดเริ่มต้นและจุดสิ้นสุดของโค้ง ฟังก์ชัน ellipse() อยู่ใน header <opencv2/imgproc/imgproc.hpp>
Syntax
ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness);
ตัวอย่างโค้ด
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
Mat whiteMatrix(200, 200, CV_8UC3, Scalar(255, 255, 255));
Point center(100, 100); // จุดศูนย์กลาง
Size axes(100, 50); // แกนหลัก=100, แกนรอง=50
int angle = 50; // มุมหมุน 50 องศา
int startAngle = 0; // เริ่มที่ 0 องศา
int endAngle = 360; // วาดครบวงกลม
Scalar line_Color(0, 0, 0); // สีดำ
int thickness = 2; // ความหนา 2 พิกเซล
namedWindow("whiteMatrix");
ellipse(whiteMatrix, center, axes, angle, startAngle, endAngle,
line_Color, thickness);
imshow("WhiteMatrix", whiteMatrix);
waitKey(0);
return 0;
}
พารามิเตอร์สำคัญ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| center | จุดศูนย์กลางของวงรี (Point) |
| axes | ขนาดแกนครึ่งหนึ่ง Size(major/2, minor/2) |
| angle | มุมหมุนของแกนหลัก (องศา) วัดจากแกน X |
| startAngle | มุมเริ่มต้นของโค้ง (องศา) |
| endAngle | มุมสิ้นสุดของโค้ง (องศา) |
| color | สีเส้น (Scalar) |
| thickness | ความหนาเส้น (-1 = เติมสี) |
การวาดวงรีไม่ครบวง (Arc)
// วาดโค้งวงรี 90 องศา
ellipse(img, center, axes, 0, 0, 90, color, 2);
ผลลัพธ์

การประยุกต์ใช้
- วาดวงรีแทน Object ที่เอียง
- สร้าง Gauge / Speedometer UI
- วาดโค้งโค้งมนสำหรับ UI Design
- Visualize Covariance Matrix (Error Ellipse)