美文网首页
1.3 GUI - 绘图方法

1.3 GUI - 绘图方法

作者: sumpig | 来源:发表于2019-03-13 20:17 被阅读0次

    在绘图方法中,有一些通用的参数如下:

    • img : 你将要在其中绘制形状的图像
    • color : 对于 BGR 格式,传入一个元祖,例如(255,0,0)表示蓝色。对于 灰度 图像,只需传入一个标量。
    • thickness : 线条、圆等图形的厚度,默认是 1,如果传入对封闭图像比如圆 传入 -1,将会填充整个图形。
    • lineType :线条的类型,8连接,反锯齿等。默认是 8-connected

    线条

    要画一条线,您需要给定线的起始和结束坐标。我们将创建一个黑色图像,并在其上从左上角到右下角绘制一条蓝线。

    import numpy as np
    import cv2
    
    # Create a black image
    img = np.zeros((512,512,3), np.uint8)
    
    # Draw a diagonal blue line with thickness of 5 px
    img = cv2.line(img,(0,0),(511,511),(255,0,0),5)
    

    矩形

    要绘制矩形,需要使用矩形的左上角和右下角。这次我们将在图像的右上角绘制一个绿色矩形。

    img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
    

    要画一个圆,你需要它的中心坐标和半径。我们将在上面绘制的矩形内绘制一个圆。

    img = cv2.circle(img,(447,63), 63, (0,0,255), -1)
    

    椭圆

    要绘制椭圆,我们需要传递几个参数。一个参数是中心位置(x,y)。下一个参数是轴长度(长轴长度、短轴长度)。角度是椭圆逆时针旋转的角度。startangle 和 endangle表示从长轴顺时针方向测量的椭圆弧的起点和终点。也就是说,给定值0和360表示整个椭圆。下面的示例在图像中心绘制一个半椭圆。

    img = cv2.ellipse(img,(256,256),(100,50),0,0,270,(255,255,255),-1)
    # 0,0,270 分别代表
    # axes:椭圆尺寸(即长短轴)
    # angle:旋转角度(顺时针方向)
    # startAngle:绘制的起始角度(顺时针方向)
    

    多边形

    要绘制多边形,首先需要顶点的坐标。然后把这些顶点变成 (定点数, 1, 2) 维的矩阵,它的类型应为Int32。在这里,我们画一个有四个黄色顶点的小多边形。

    # 定义四个顶点坐标
    pts = np.array([[10, 5],  [50, 10], [70, 20], [20, 30]], np.int32)
    # 顶点个数:4,矩阵变成4*1*2维
    pts = pts.reshape((-1, 1, 2))
    cv2.polylines(img, [pts], True, (0, 255, 255))
    

    cv2.polylines() 的参数3如果是False的话,多边形就不闭合。

    如果需要绘制多条直线,使用cv2.polylines()要比cv2.line()高效很多,例如:

    line1 = np.array([[100, 20],  [300, 20]], np.int32).reshape((-1, 1, 2))
    line2 = np.array([[100, 60],  [300, 60]], np.int32).reshape((-1, 1, 2))
    line3 = np.array([[100, 100],  [300, 100]], np.int32).reshape((-1, 1, 2))
    cv2.polylines(img, [line1, line2, line3], True, (0, 255, 255))
    

    添加文字

    文字添加需要指定以下参数:

    • 文本数据
    • 定位要放置它的位置坐标(即数据开始的左下角)。
    • 字体类型
    • 字体大小
    • 常规样式,如颜色、厚度、线型等。为获得更好的外观,建议使用linetype=cv2.line_aa。

    我们将添加一个白色文字

    cv2.putText(img,'OpenCV',(10,500), font, 1,(255,255,255),4,cv2.LINE_AA)
    

    相关文章

      网友评论

          本文标题:1.3 GUI - 绘图方法

          本文链接:https://www.haomeiwen.com/subject/nptxmqtx.html