python利用cv2在图片上标点

[复制链接]
发表于 2025-9-18 01:57:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在 Python 中利用 OpenCV (cv2) 在图片上标点(绘制点或小圆点)可以通过 cv2.circle() 函数实现。由于 OpenCV 没有直接提供“画点”的函数,通常可以通过绘制一个极小的圆来模拟标点效果。

方法:用 cv2.circle() 绘制小圆点
  1. import cv2
  2. import numpy as np
  3. # 创建黑色背景图像(或加载现有图像)
  4. img = np.zeros((400, 400, 3), dtype=np.uint8)  # 400x400 的黑色图像
  5. # 标点参数
  6. point_center = (200, 200)  # 圆心坐标 (x, y)
  7. radius = 3                 # 半径(像素,通常设为1-5)
  8. color = (0, 0, 255)        # 颜色(BGR格式,这里是红色)
  9. thickness = -1             # 填充圆(-1表示实心)
  10. # 绘制点(小圆)
  11. cv2.circle(img, point_center, radius, color, thickness)
  12. # 显示图像
  13. cv2.imshow("Points on Image", img)
  14. cv2.waitKey(0)
  15. cv2.destroyAllWindows()
复制代码

参数阐明


  • point_center: 点的坐标,格式为 (x, y)(OpenCV 的坐标系原点在左上角)。
  • radius: 点的半径(像素),通常设为 1 到 5,值越大点越显着。
  • color: 点的颜色,BGR 格式(例如 (255, 0, 0) 是蓝色)。
  • thickness:

    • -1:添补圆(实心点)。
    • 正数:圆边框的粗细(但通常用 -1 绘制实心点更直观)。


示例扩展:在图像上标多个点
  1. # 定义多个点的坐标
  2. points = [(100, 100), (300, 100), (200, 300)]
  3. for (x, y) in points:
  4.     cv2.circle(img, (x, y), 3, (0, 255, 0), -1)  # 绿色实心点
  5. cv2.imshow("Multiple Points", img)
  6. cv2.waitKey(0)
  7. cv2.destroyAllWindows()
复制代码

留意事项


  • 图像加载:假如是对现有图像标点,利用 cv2.imread() 加载图像:
    1. img = cv2.imread("path/to/image.jpg")
    复制代码
  • 坐标范围:确保点的坐标在图像范围内(0 ≤ x < img.shape[1], 0 ≤ y < img.shape[0])。
  • 抗锯齿:如需更平滑的点,可设置 lineType=cv2.LINE_AA:
    1. cv2.circle(img, (x, y), 2, (255, 0, 0), -1, lineType=cv2.LINE_AA)
    复制代码

替代方案:直接修改像素值

假如需要更机动地控制单个像素(不保举,通常用 cv2.circle 更简朴):
  1. # 将 (x, y) 处的像素设为红色(BGR)
  2. img[y, x] = [0, 0, 255]
复制代码
但这种方法仅适用于单个像素,且无法直接设置点的半径或颜色透明度。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表