OpenCV-Python学习之路-3:Drawing Function in OpenCV(使用opencv中的绘图功能)

参考依据

参考自OpenCV-Python官方教程:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_drawing_functions/py_drawing_functions.html

目标

  1. 学习使用OpenCV绘制不同的几何图形
  2. 学习的函数:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText()等

0. 参数

上面所述的函数,有一些共同参数:

  1. img: 你想要去绘制的图片
  2. color:如果是RGB就传入一个元组,例如(255,0,0);如果是灰度图像,传入一个灰度值即可
  3. thickness:图形的厚度(例如圆、直线的粗细),如果为-1,则会填充图形内部;默认厚度为1
  4. lineType:线的类型,有三个值cv2.LINE_8,cv2.LINE_4,cv2.LINE_AA(cv2.LINE_8速度最快,cv.LINE_AA最适合曲线)

1. 直线

需要传入线的起始和结束坐标。
在这里插入图片描述

import numpy as np
import cv2

img = np.zeros((256, 256, 3), np.uint8)
img = cv2.line(img,(0,0),(255,255),color=(255,0,0),thickness=5)
img = cv2.line(img,(255,0),(0,255),color=(255,0,0),thickness=5)
cv2.imshow("1", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

2. 矩形

绘制矩形,需要传入左上角和右下角的坐标点。
在这里插入图片描述

img = cv2.rectangle(img,(0,0),(100,100),color=(0,255,0),thickness=3)
cv2.imshow("2", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

3. 圆形

绘制圆形,需要传入圆心坐标点和半径值。
在这里插入图片描述

img = cv2.circle(img,(50,50),50,color=(0,0,255),thickness=-1)
cv2.imshow("3", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

4. 椭圆

椭圆的绘制就比较复杂了,你需要传递以下几个额外的参数。参数center就是中心位置(x, y),参数axes就是轴长度(长轴,短轴)。angle是椭圆沿逆时针旋转的角度,startAngleendAngle表示从长轴沿顺时针方向测量的椭圆弧开始和结束(例如,传入0,360就会给出一个完整的椭圆)。
在这里插入图片描述
各参数的意义可以参考下图:
在这里插入图片描述

img = cv2.ellipse(img,(128,128),(50,25),0,0,180,color=(0,255,255),thickness=-1)
cv2.imshow("4", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

5. 多边形

要绘制多边形,首先需要顶点的坐标。将这些点组成形状为ROWSx1x2的数组,其中ROWS是顶点个数,并且其类型应为int32。
在这里插入图片描述
在这里插入图片描述

pts = np.array([[0,205],[55,255],[0,255],[55,205]], dtype=np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(255,255,0),thickness=3)
cv2.imshow("5", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
P.S.如果传入的第三个参数为False,那么就只是一条连接多个点的折线,而非封闭图像。

6. 在图像中添加文本

需要传入的主要参数有:

  1. 你需要展示的文本数据
  2. 你要想放置的位置(左下角坐标点)
  3. 字体类型
  4. 字体大小
  5. 建议使用lineType = cv2.LINE_AA,这会使得美观。
    在这里插入图片描述
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'Classmate Huang',(10,200),font,0.8,color=(255,255,255),thickness=2,lineType=cv2.LINE_AA)
cv2.imshow("6", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

更多的图像绘制函数请见:
https://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值