Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีวาดรูปวงรีใน OpenCV C++

บทนำ

การวาดวงรี (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);

ผลลัพธ์

วิธีวาดรูปวงรีใน OpenCV C++

การประยุกต์ใช้

  • วาดวงรีแทน Object ที่เอียง
  • สร้าง Gauge / Speedometer UI
  • วาดโค้งโค้งมนสำหรับ UI Design
  • Visualize Covariance Matrix (Error Ellipse)