# 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: 抗锯齿线。