1.opencv画线 cv.line()

import cv2 as cv
import numpy as np
# 创建黑色背景
img = np.zeros((512,512,3),np.uint8)
#绘制厚度为5的白色对角线
cv.line(img,(0,0),(512,512),(255,255,255),5)   #参数:图片,起点,终点,线条颜色,宽度
cv.imshow('img', img)
cv.waitKey(0)

2.opencv画矩形 cv.rectangle()

import cv2 as cv
import numpy as np
# 创建黑色背景
img = np.zeros((512,512,3),np.uint8)
#绘制绿色矩形

cv.rectangle(img,(384,0),(510,128),(0,255,0),3)  #参数:图片,左上角,右下角,颜色,宽度
cv.imshow('img', img)
cv.waitKey(0)

3.opencv画圆 cv.circle()

import cv2 as cv
import numpy as np
# 创建黑色背景
img = np.zeros((512,512,3),np.uint8)
#绘制一个黄色圆形
cv.circle(img,(447,63), 50, (0,255,255), -1)  #参数:图片,圆心,半径,颜色,宽度(-1则为实心圆)
cv.imshow('img', img)
cv.waitKey(0)

4.opencv画椭圆 cv.ellipse()

import cv2 as cv
import numpy as np
# 创建黑色背景
img = np.zeros((512,512,3),np.uint8)
#绘制椭圆
cv.ellipse(img,(256,256),(180,100),0,0,280,100,-1)
#参数:图片,中心位置(x,y),轴长度(长轴长度,短轴长度),angle是椭圆沿逆时针方向旋转的角度,startAngle和endAngle表示从主轴沿顺时针方向测量的椭圆弧的开始和结束,100为color,最后一个为宽度。
cv.imshow('img', img)
cv.waitKey(0)

5.opencv绘制多边形 cv.polylines()

要绘制多边形,首先需要顶点的坐标。将这些点组成形状为 R O W S ∗ 1 ∗ 2 ROWS *1 * 2 ROWS12 的数组,其中 R O W S ROWS ROWS 是顶点
数,并且其类型应为int32。在这里,我们绘制了一个带有四个顶点的黄色小多边形。

import cv2 as cv
import numpy as np
# 创建黑色背景
img = np.zeros((512,512,3),np.uint8)

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(0,255,255))  #Ture/False 代表是否闭合

cv.imshow('img', img)
cv.waitKey(0)

6.opencv在图片中添加文字 cv.putText()

import cv2 as cv
import numpy as np
# 创建黑色背景
img = np.zeros((512,512,3),np.uint8)
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'OpenCV',(10,500), font, 4,(0,0,255),2,cv.LINE_AA)
# 图片,文字,
cv.imshow('img', img)
cv.waitKey(0)

鼠标画图 cv.setMouseCallback()

events = [i for i in dir(cv) if 'EVENT' in i]   #这个可以查看cv中的所有事件
import cv2 as cv
import numpy as np
# 鼠标回调函数
def draw_circle(event,x,y,flags,param):
    if event == cv.EVENT_LBUTTONDBLCLK:
        cv.circle(img,(x,y),100,(255,0,0),-1)   #设置事件 画一个圆
# 创建一个黑色的图像,一个窗口,并绑定到窗口的功能
img = np.zeros((512,512,3), np.uint8)
cv.namedWindow('image')    #新建一个显示窗口
cv.setMouseCallback('image',draw_circle)   #绑定窗口函数
while(1):
    cv.imshow('image',img)
    cv.imwrite('img1.jpg',img)
    if cv.waitKey(20) & 0xFF == 27:
        break
cv.destroyAllWindows()