บทนำ
การวาดเส้นตรงต้องการจุดเริ่มต้นและจุดสิ้นสุด ฟังก์ชัน 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);
ผลลัพธ์

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