一、绘制线段
cv2.line()
参数说明:
- img:图像
- color:线条颜色,元组形式。
- pts:起始点
- thickness:线条的粗细。-1为填充,默认为1。
- linetype:线条类型。8型或者cv2.LINE_AA,默认为8型。
import cv2
import numpy as np
img = np.zeros((512,512,3), np.uint8)
cv2.line(img, (0,0), (511,511), (255,0,0), 5) # 起始点,颜色,线条
cv2.imshow("example",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、绘制矩形
cv2.rectangle()
参数说明:
- img:图像
- pts:左上角和右下角坐标点
- color:颜色,元组形式。
- thickness:线条的粗细。-1为填充,默认值为1。
- linetype:线条的类型,使用默认值即可。
import cv2
import numpy as np
img = np.zeros((512,512,3),np.uint8)
cv2.rectangle(img,(0,0),(122,122), (255,0,0),3) # 左上角+右下角坐标,颜色,粗细
cv2.imshow("example", img)
cv2.waitKey(0)
cv2.destroyWindow()
三、画圆
cv2.circle()
参数说明:
- img:图像
- pts:圆心
- radius:半径
- color:颜色
- thickness:线条粗细。-1为填充,默认值为1。
- linetype:线条类型,使用默认值即可。
import cv2
import numpy as np
img = np.zeros((255,225,3),np.uint8)
cv2.circle(img,(122,122),64,(0,255,255),-1) # -1表示填充
cv2.imshow("exmple",img)
cv2.waitKey(0)
cv2.destroyWindow()
四、绘制椭圆
cv2.ellipse()
参数说明:
- 参数1:图片
- 参数2:椭圆中心点
- 参数3:x/y轴的长度
- 参数4:angle--椭圆的旋转角度
- 参数5:startAngle-椭圆的起始角度
- 参数6:endAmgle-椭圆的结束角度
import cv2
import numpy as np
img = np.zeros((255, 255, 3), np.uint8)
# 中心点+长短轴+旋转角度+起始角度+终止角度
cv2.ellipse(img, (122, 122), (50, 10), 0, 0, 180, (255, 0, 0), -1)
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyWindow()
五、绘制多边形
cv2.polylines()
参数说明:
- 参数1:图片
- 参数2:pts,表示的是点对
- 参数3:isClosed,布尔型,Ture表示的是线段闭合,False表示的是仅保留线段
- 参数4:color,线段的颜色,格式是(R,G,B)值
- 参数5:thickness,线段粗细
- 参数6:lineType,线型
import cv2
import numpy as np
img = np.zeros((255,255,3), np.uint8)
pts = np.array([[10,5], [50,10], [70,20], [20,30]])
print(pts.shape)
# 顶点个数:4,矩阵变成4*1*2维
pts = pts.reshape((-1, 1, 2))
print(pts.shape)
cv2.polylines(img,[pts],True,(0,255,0)) # Ture表示线段闭合
cv2.imshow("example",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
六、添加文字
cv2.putText()
参数说明:
- 参数1:图片
- 参数2:要添加的文字
- 参数3:文字的起始位置,左下角为起点
- 参数4:字体
- 参数5:文字大小(缩放比例)
- 参数6:颜色
- 参数7:线条宽高
- 参数8:线条形状
import cv2
import numpy as np
img = np.zeros((255, 255, 3), np.uint8)
font = cv2.FONT_HERSHEY_SCRIPT_SIMPLEX # 设置字体
cv2.putText(img, "hello", (10, 110), font, 3, (255, 255, 0), 2, cv2.LINE_AA)
cv2.imshow("example", img)
cv2.waitKey(0)
cv2.destroyWindow()
综合案例:
import cv2
import numpy as np
img = np.zeros((640, 640, 3), np.uint8)
# 绘制直线
cv2.line(img, (0, 0), (255, 255), (255, 255, 0), 1)
# 绘制矩形
cv2.rectangle(img, (10, 10), (30, 20), (0, 255, 0), 3)
# 绘制圆形
cv2.circle(img, (120, 122), 23, (0, 255, 0), -1)
# 绘制椭圆
cv2.ellipse(img, (220, 220), (100, 50), 0, 0, 320, (250, 250, 0), -1)
# 绘制多边形
pts = np.array([[10, 5], [20, 30], [70, 20], [50, 10]])
pts.reshape([-1, 1, 2])
cv2.polylines(img, [pts], True, (0, 0, 255), 2)
# 添加文字
font = cv2.FONT_HERSHEY_SCRIPT_SIMPLEX
cv2.putText(img, "opencv", (100, 50), font, 4, (255, 250, 10), 2)
cv2.imshow("example", img)
cv2.waitKey(0)
cv2.destroyWindow()