youcans 的 OpenCV 例程 300篇254.绘制标记

Posted YouCans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了youcans 的 OpenCV 例程 300篇254.绘制标记相关的知识,希望对你有一定的参考价值。

『youcans 的 OpenCV 例程300篇 - 总目录』


【youcans 的 OpenCV 例程 300篇】254. OpenCV 绘制标记


7.1 绘图函数基本参数

OpenCV提供了绘图功能,可以在图像上绘制直线、矩形、圆、椭圆等各种几何图形。

函数 cv.line()、cv.rectangle()、cv.circle()、cv.polylines() 等分别用来在图像中绘制直线、矩形、圆形、多边形等几何形状,这些绘图函数中有一些的设置参数,介绍如下:

  • img:输入输出图像,格式不限
  • color:绘图线条的颜色,(b,g,r) 格式的元组,或者表示灰度值的标量
    • thickness:绘制线条的粗细,默认值 1px,-1 表示内部填充
  • lineType:绘制线段的线性,默认为 LINE_8
    • cv.FILLED:内部填充(实心图形)
    • cv.LINE_4:4 邻接线型
    • cv.LINE_8:8 邻接线型
    • cv.LINE_AA:抗锯齿线型,图像更平滑
  • shift:点坐标的小数位数,默认为 0

7.2 绘制标记

函数原型:

函数 cv.drawMarker 用来在图像上的指定位置绘制标记。

cv.drawMarker(img, position, color[, markerType=MARKER_CROSS, markerSize=20, thickness=1, line_type=8]) → img

参数说明:

  • img:输入输出图像,允许单通道灰度图像或多通道彩色图像
  • position:标记点的坐标,(x1, y1) 格式的元组
  • color:绘制标记的颜色
  • markerType:标记类型,默认为 cv.MARKER_CROSS(十字标记)
    • cv.MARKER_CROSS:十字标记(类似加号),+
    • cv.MARKER_TILTED_CROSS:,倾斜的十字标记(类似乘号), × \\times ×
    • cv.MARKER_STAR:星形标记(类似米字), ★ \\bigstar
    • cv.MARKER_DIAMOND:钻石菱形标记, ⋄ \\diamond
    • cv.MARKER_SQUARE:方块标记, □ \\Box
    • cv.MARKER_TRIANGLE_UP:上三角标记, △ \\triangle
    • cv.MARKER_TRIANGLE_DOWN:下三角标记, ▽ \\triangledown
  • markerSize:标记的轴向长度,默认值 20pixels

注意事项:

  1. 绘图操作会直接对传入的图像 img 进行修改,是否接受函数返回值都可以。如果要保持输入图像不变则要用 img.copy() 进行复制。

例程 A4.15:在图像上绘制标记

本例程示例在图像上绘制标记。

    # A4.15 绘制标记
    img = np.ones((600, 800, 3), np.uint8)*205
    for i in range(7):  # 7 种标记
        cx = 100*(i+1)
        color = (0,0,255)
        cv.drawMarker(img, (cx, 100), color, markerType=i, markerSize=10)
        cv.drawMarker(img, (cx, 200), color, markerType=i, markerSize=20)
        cv.drawMarker(img, (cx, 300), color, markerType=i, markerSize=30)
        cv.drawMarker(img, (cx, 400), color, markerType=i, markerSize=40)
        cv.drawMarker(img, (cx, 500), color, markerType=i, markerSize=50)

    plt.figure(figsize=(9, 4))
    plt.subplot(121), plt.title("Draw marker"), plt.axis('off')
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.subplot(122), plt.title("Draw marker"), plt.axis('off')
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.tight_layout()
    plt.show()


【本节完】

版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/128466627)
Copyright 2022 youcans, XUPT
Crated:2023-1-2

以上是关于youcans 的 OpenCV 例程 300篇254.绘制标记的主要内容,如果未能解决你的问题,请参考以下文章

youcans 的 OpenCV 例程 300篇244. 特征检测之 BRIEF 特征描述

youcans 的 OpenCV 例程 300篇244. 特征检测之 BRIEF 特征描述

OpenCV 例程 300篇255.OpenCV 实现图像拼接

OpenCV 例程 300篇255.OpenCV 实现图像拼接

OpenCV 例程 300篇254.OpenCV 绘制图像标记

OpenCV 例程 300篇241. 尺度不变特征变换(SIFT)