OpenCV - 画图函数

  • zeros()
  • line()
  • rectangle()
  • circle()
  • ellipse()
  • polylines()
  • putText()

import numpy as np
import cv2 as cv
import matplotlib.pylab as plt

# 生成一张黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# print(img)  # 三维全0数组,全0表示不亮-黑,全1表示全亮-白

# 画出一条粗细为5px的蓝色线段:参数起点和终点
cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
# print(img)

# 画方形,参数:左上角和右下角坐标
# 绿色bgr中g为255,粗细3px
cv.rectangle(img, (300, 300), (400, 400), (0, 255, 0), 3)

# 画圆,参数:圆心和半径大小
cv.circle(img, (350, 350), 100, (0, 0, 255), 6)

# 画椭圆,参数:中心点位置坐标,长轴和短轴长度,整个椭圆顺时针方向旋转的角度,椭圆弧面顺时针起始角度,结束角度(如(0, 360)为整个椭圆,(90, 270)为半个椭圆,和旋转角度没有关系)
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, (255, 255, 255), 1)  # -1表示全填充
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 180, (255, 255, 0), -1)
cv.circle(img, (256, 256), 10, (0, 0, 255), -1)  # 椭圆中心点

# 画多边形,实际上是画一组线段
# 画多边形首先需要顶点的坐标,由这些顶点坐标连接成多边形
img = np.zeros((512, 512, 3), np.uint8)  # 重置了!
# 指定顶点的坐标,这些点组成一个形状为ROWS*1*2的数组,其中ROWS是顶点的数量,2是顶点的维度(二维),注意:类型必须为int32
pts = np.array([[100, 100], [300, 150], [400, 400], [50, 350]], np.int32)
print(pts)
print(np.shape(pts))
pts = pts.reshape((-1, 1, 2))
print(pts)
print(np.shape(pts))
cv.polylines(img, [pts], True, (0, 255, 255), 10)  # True表示封闭多变形,False表示不封闭即线条
cv.polylines(img, [pts], False, (255, 0, 255), 10)  # False表示不封闭即线条

# 在图片上添加文字
# 参数:绘制的文字,绘制的位置,字体类型,字体大小,文字属性(如颜色,粗细,线条类型等)
img = np.zeros((512, 512, 3), np.uint8)  # 又重置了!
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img, 'OpenCV', (10, 300), font, 4, (255, 255, 255), 10)

# cv.imshow("b", img)
# cv.waitKey(0)  # 无限等待直到键盘输入
# cv.destroyAllWindows()
plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))  # matplotlib显示必须转换显示方式brg->rgb
plt.show()

上一篇:noip模拟4


下一篇:Linux系统登陆过程