画这些图形时需要指定在哪个图片上画比如img,显示时,只需要显示图片​​cv.imshow("image", img)​​即可

import cv2 as cv
import numpy as np

"""
绘图函数:cv2.line(),cv2.circle(),cv2.rectangle(), cv2.ellipse(),cv2.putText() 等。
"""

def draw(img):

# img, pt1(起点坐标), pt2(终点坐标), color, thickness
cv.line(img, (0, 0), (511, 511), (0, 0, 180), 5)
cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
cv.circle(img, (447, 63), 63, (0, 0, 255), -1)

# 椭圆弧沿着顺时针方向起始的角度和结束角度(只画出一部分椭圆),如果是 0 和 360,就是整个椭圆.
# img, center, axes(长轴长度的一半, 短轴长度的一半), angle(沿水平方向逆时针旋转的角度), startAngle(沿长轴顺时针方向开始显示的角度), endAngle(沿长轴顺时针结束显示的角度), color, thickness
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 180, (0, 255, 0), -1)

# 这里 reshape 的第一个参数为 -1, 表明这一维的长度是根据其他的维度的计算出来的
# 注意:如果isClosed=False,我们得到的多边形是不闭合的(首尾不相连)。
# 注意:cv2.polylines() 可以被用来画很多条线.
# 只需要把想要画的线放在一个列表中,将这个列表传给函数就可以了.每条线都会被独立绘制.
# 这会比用 cv2.line() 一条一条的绘制要快一些
pts = np.array([[10, 5], [20, 30], [70, 20], [50, 10]], np.int32)
pts = pts.reshape((-1, 2, 2))
cv.polylines(img, pts=pts, isClosed=True, color=(0, 0, 0), thickness=3)

# pts = pts.reshape((-1, 1, 2))
# cv.polylines(img, pts=pts, isClosed=True, color=(0, 0, 0), thickness=3)
"""
要在图片上绘制文字,你需要设置下列参数:
• 你要绘制的文字
• 你要绘制的位置
• 字体类型(通过查看 cv2.putText() 的文档找到支持的字体)
• 字体的大小
• 文字的一般属性如颜色,粗细,线条的类型等。
为了更好看一点推荐使用 linetype=cv2.LINE_AA。

警告:所有的绘图函数的返回值都是 None,
所以不能使用 img = cv2.line(img,(0,0),(511,511),(255,0,0),5)。
"""
font = cv.FONT_HERSHEY_SIMPLEX
# img, text, org(左下角坐标), fontFace字体, fontScale(字体大小), color, thickness
cv.putText(img, 'OpenCV', (10, 500), font, 4, (0, 0, 0), 2)

cv.imshow("example", img)

def main():
cv.namedWindow("example")
img = np.ones((512, 512, 3), np.uint8)
img.fill(255)
draw(img)

cv.waitKey(0)
cv.destroyAllWindows()

if __name__ == "__main__":
main()

opencv常用画图函数_顺时针