zoukankan      html  css  js  c++  java
  • 【opencv系列04】OpenCV4.X图形绘制

    一、 基本图形绘制

    1. 基本函数与参数

    cv2.line(): 线
    cv2.circle(): 圆
    cv2.rectangle(): 矩形
    cv2.ellipse(): 椭圆
    cv2.putText(): 文字

    • img:需要绘制形状的图像。
    • color:颜色的形式,对于BGR,将作为元组传递比如(255,0,0)表示蓝色;对于灰度图,只需要传递标量值。
    • thickness: 线或圆形等图像的厚度,如果对闭合图像像圆形传递“-1”,它将填充形状, 默认厚度 = 1。
    • lineType:线的类型,默认情况下为8连接,cv2.LINE_AA 是适合曲线的抗锯齿线。

    2. 画线

    line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

    • pt1:直线起点
    • pt2:直线终点

    创建一个白色图像,并在其上从左上角到右下角绘制一条蓝线。

    代码

    import numpy as np
    import cv2
    
    # 创建黑底图像(像素值【0,255】,白色为255)
    img = np.ones((512, 512, 3), np.uint8) * 255
    
    # 绘制宽度为 5 px 的蓝线(B,G,R)
    cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
    cv2.imshow('line', img)
    cv2.waitKey()
    


    3. 矩形

    rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

    • pt1:矩形左上角坐标
    • pt2:矩形右下角坐标

    在图像的右上角绘制一个绿色矩形。

    代码

    import numpy as np
    import cv2
    
    # Create a black image
    img = np.zeros((512, 512, 3), np.uint8)
    
    cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
    
    cv2.imshow('rectangle', img)
    cv2.waitKey()
    


    4. 画圆

    circle(img, center, radius, color, thickness=None, lineType=None, shift=None)

    • center:圆心位置
    • radius:半径

    在图像的右上角绘制一个绿色矩形。

    代码

    import numpy as np
    import cv2
    
    # Create a black image
    img = np.zeros((512, 512, 3), np.uint8)
    
    cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
    cv2.circle(img, (447, 63), 63, (0, 0, 255), -1)
    
    cv2.imshow('circle',img)
    cv2.waitKey()
    


    5. 椭圆

    ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None)

    • center:中心位置
    • axes:轴长度(长轴长度,短轴长度)
    • angle:椭圆在逆时针方向上的旋转角度
    • startAngle:主轴顺时针方向测量的椭圆弧的起点
    • endAngle:主轴顺时针方向测量的椭圆弧的终点

    在图像的右上角绘制一个绿色矩形。

    代码

    import numpy as np
    import cv2
    
    # Create a black image
    img = np.zeros((512, 512, 3), np.uint8)
    
    cv2.ellipse(img, (256, 256), (100, 50), 0, 0, 180, 255, -1)
    
    cv2.imshow('ellipse', img)
    cv2.waitKey()
    


    6. 多边形

    polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)

    要绘制多边形,首先需要顶点坐标.将这些点转换为ROWSx1x2形状的数组,其中ROWS是顶点数,它应该是int32类型.

    绘制一个带有四个黄色顶点的小多边形。

    代码

    import numpy as np
    import cv2
    
    # Create a black image
    img = np.zeros((512, 512, 3), np.uint8)
    
    pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
    pts = pts.reshape((-1,1,2))
    cv2.polylines(img,[pts],True,(0,255,255))
    
    
    cv2.imshow('polylines',img)
    cv2.waitKey()
    

    Note:
    如果第三个参数为False,您将获得连接所有点的折线,而不是闭合形状。
    cv2.polylines()可用于绘制多条线,只需创建要绘制的所有行的列表并将其传递给函数, 所有线条都将单独绘制,绘制一组行比为每行调用cv2.line() 要好得多,速度更快。


    7. 添加文字

    putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
    要将文本放入图像中,您需要指定以下内容。

    • text:要写入的文本数据
    • org:您想要放置它的位置坐标(即数据开始的左下角)。
    • fontFace:字体类型(检查cv2.putText() 文档以获取支持的字体)
    • fontScale:字体比例(指定字体大小)

    常规的东西,如颜色,粗细,线型等。为了更好看,建议使用lineType = cv.LINE_AA。

    图像上写白色的opencv几个字母

    代码

    import numpy as np
    import cv2
    
    # Create a black image
    img = np.zeros((512, 512, 3), np.uint8)
    
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 2 , cv2.LINE_AA)
    
    cv2.imshow('text', img)
    cv2.waitKey()
    

  • 相关阅读:
    ASP.NET MVC分部类的使用
    窗体初始化完毕后隐藏窗体
    让每个用户都有同样的输入法配置
    昨夜的失眠--从数据备份所想到的.
    电子书下载
    Microsoft .Net 框架 SDK 快速入门教程
    .net书籍代码下载 [雪冬寒'Blog]
    VISUAL C#.NET中文版WEB服务开发基础
    Citrix相关技术
    OA在线试用
  • 原文地址:https://www.cnblogs.com/fahaihappy/p/12607737.html
Copyright © 2011-2022 走看看