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

วิธีวาดเส้นตรงใน OpenCV C++

บทนำ

การวาดเส้นตรงต้องการจุดเริ่มต้นและจุดสิ้นสุด ฟังก์ชัน line() อยู่ใน header <opencv2/imgproc/imgproc.hpp> เป็นพื้นฐานของการวาดรูปทรงต่างๆ

Syntax

line(img, pt1, pt2, 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 pt1(50, 50);           // จุดเริ่มต้น
    Point pt2(150, 150);         // จุดสิ้นสุด
    Scalar color(0, 0, 0);       // สีดำ
    int thickness = 2;           // ความหนา 2 พิกเซล
    
    namedWindow("GrayImage");
    line(whiteMatrix, pt1, pt2, color, thickness);
    imshow("GrayImage", whiteMatrix);
    waitKey(0);
    return 0;
}

พารามิเตอร์ของ line()

  • pt1, pt2: จุดเริ่มต้นและสิ้นสุด (Point)
  • color: สีเส้น (Scalar B,G,R)
  • thickness: ความหนาเส้น (int)
  • lineType: LINE_8 (8-connected), LINE_4 (4-connected), LINE_AA (Anti-aliased)
  • shift: บิตเลขทศนิยมในพิกัด

ตัวอย่างการใช้งานขั้นสูง

// วาดเส้นจุด (Dash line) - ต้องเขียนเองด้วยลูป
for(int i=0; i<length; i+=10) {
    line(img, Point(x+i, y), Point(x+i+5, y), color, 2);
}

// วาดเส้น Anti-aliased (เรียบ)
line(img, pt1, pt2, color, 2, LINE_AA);

// วาดลูกศร (Arrowed Line) - OpenCV 3.0+
arrowedLine(img, pt1, pt2, color, 2);

ผลลัพธ์

วิธีวาดเส้นตรงใน OpenCV C++

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

  • วาดเส้นกริด (Grid lines)
  • Visualize Optical Flow, Matching lines
  • วาดกราฟ, Chart, Diagram
  • สร้าง Crosshair, Ruler
  • เชื่อม Keypoints ใน Feature Matching