# cv2.line(...)

cv2.line(result_img,
         (x1,y1),
         (x2,y2),
         (0, 255, 0), 2, cv2.LINE_AA)

# 参数解释:

  • result_img: 要画线的目标图像(一般是 RGB 图像)。

  • (x1,y1): 线的起点坐标,x 坐标为 avg_x,y 从顶部 0 开始。

  • (x2,y2): 线的终点,x 坐标同样是 avg_x,y 为图像高度,即图像底部。

  • (0, 255, 0): 线的颜色,绿色(BGR 格式)。

  • 2: 线的粗细,单位是像素。

  • cv2.LINE_AA: 使用抗锯齿(Anti-Aliased)线,使得线条更平滑美观。


# cv2.putText(...)

cv2.putText(result_img, 'right_line',
            (x1- 120, y1 - 20),
            cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)

# 参数解释:

  • result_img: 要绘制文字的图像。

  • 'right_line': 要显示的文本内容。

  • (x1- 120, y1 - 20): 文本左下角的坐标,x 位置稍微偏左 120 像素,y 是图像底部往上偏移 20 像素。

  • cv2.FONT_HERSHEY_SIMPLEX: 字体样式(OpenCV 默认的无衬线字体)。

  • 0.7: 字体缩放因子(字体大小)。

  • (0, 255, 0): 文本颜色,绿色(BGR 格式)。

  • 2: 字体粗细。


# cv2.circle(...)

cv2.circle(result_img, 
			(x, y), 
			3, (0, 0, 255), -1)

# 参数解释:

  • result_img: 目标图像。

  • (x, y): 要描的点的坐标。

  • 3: 圆的半径(像素),可以根据需要调整。

  • (0, 0, 255): 点的颜色,这里是红色(BGR 格式)。

  • -1: 填充圆(-1 表示实心圆),你也可以写 1 表示只有边框。

# 连线

for pt in point_list:
    cv2.circle(result_img, (int(pt[0]), int(pt[1])), 2, (0, 0, 255), -1)

# cpp:

#include <opencv2/opencv.hpp>
#include <vector>

int main() {
    cv::Mat result_img = cv::Mat::zeros(480, 640, CV_8UC3);

    std::vector<cv::Point> points = {
        cv::Point(100, 150),
        cv::Point(120, 160),
        cv::Point(140, 170),
        cv::Point(160, 180)
    };

    // 描点
    for (const auto& pt : points) {
        cv::circle(result_img, pt, 2, cv::Scalar(0, 0, 255), -1);
    }

    // 连线
    cv::polylines(result_img, points, false, cv::Scalar(0, 255, 0), 2, cv::LINE_AA);

    // 显示图像
    cv::imshow("Result", result_img);
    cv::waitKey(0);
    return 0;
}

# 1. 逐个描点(cv::circle)

#include <opencv2/opencv.hpp>
#include <vector>

std::vector<cv::Point> points = {
    cv::Point(100, 150),
    cv::Point(120, 160),
    cv::Point(140, 170),
    cv::Point(160, 180)
};

for (const auto& pt : points) {//遍历 points 容器中的每一个元素
    cv::circle(result_img, pt, 2, cv::Scalar(0, 0, 255), -1);  // 红色实心圆
}
  • cv::circle() 在图像上画点。
  • cv::Scalar(B, G, R) 是颜色格式。

# 2. 将点连成线(cv::polylines)

cv::polylines(result_img, points, false, cv::Scalar(0, 255, 0), 2, cv::LINE_AA);
  • points: std::vector<cv::Point>,点的数组。
  • false: 表示这不是一个封闭的图形。
  • cv::Scalar(0, 255, 0): 绿色线条。
  • 2: 线宽。
  • cv::LINE_AA: 抗锯齿线。