python +oponcv的line,rectangle(),circle(),ellipse(),polylines(),putText()函数

python + openCV 进行最简单的图片绘制,我会尽量把所有涉及的参数讲明白。全填充的图像thickness是-1,别说你不知道全填充的意思。

标题中的所有函数基本上都涉及这么几个参数,大家需要注意一下:

python +oponcv的line,rectangle(),circle(),ellipse(),polylines(),putText()函数_第1张图片

line()函数:画一条线

import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#Draw a line with thinkness of 5 px
#(0,0)是起始坐标,
#(100,100)是终止坐标,
#(255,0,0)是颜色(蓝色),
#5是线的像素宽度,
cv2.line(img,(0,0),(100,100),(255,0,0),5)

#打开一个窗口展示
winname = 'example'
cv2.namedWindow(winname)
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindows(winname)

rectangle()函数:
矩形的绘制:

import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#画一个矩形框
#第一个参数:图片的数据
#第二个参数:左上角的坐标
#第三个参数:右下角的坐标
#第四个参数:颜色(这里选用了超级可爱的粉色)
#第五个参数:线的宽度,这里表示了全填充-1!-1!-1!!!
cv2.rectangle(img,(100,100),(200,200),(255,192,203),-1)

circle()函数
圆的绘制:

import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#绘制一个圆
#第一个参数 图片的数据
#第二个参数 圆心
#第三个参数 半径
#第四个参数 颜色
#第五个参数 线宽或者填充
cv2.circle(img,(150,150),50,color=(0,255,0),thickness=5)

ellipse()函数

椭圆的绘制:

import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#椭圆的绘制
#第一个参数 图片的数据
#第二个参数 椭圆的中心
#第三个参数 椭圆的长短轴的长度
#第四个参数  angle 偏转的角度
#第五个参数 start_angle 圆弧起始角的角度
#第六个参数 end_angle 圆弧终结角的角度
#第七个参数  color 线条的颜色
#第八个参数   thickness 线条的粗细程度
#第九个参数   line_type 线条的类型
cv2.ellipse(img,(300,300),(100,50),0,10,350,(0,255,255),-1)

polylines()函数
多边形的绘制:

import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#多线条的绘制,封闭的话也可以叫做多边形
#array reshape之后是4*1*2的三维数组没搞明白为啥这样写
#先确定连接的点 必须是int32
#做矩阵变换 reshape,估计是1*2的前二维表示一个点吧,一维没办法表示一个点
#最后绘制
#绘制[pts]是为了遍历,不加不行 isClosed表示是否封闭多边形true就是封闭

pts = np.array([[10,5],[20,30],[70,20],[50,10]],np.int32)
pts= pts.reshape((-1,1,2))
cv2.polylines(img,[pts],isClosed=True,color=(255,255,255),thickness=1)

完整代码:

import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#Draw a line with thinkness of 5 px
#(0,0)是起始坐标,(100,100)是终止坐标,(255,0,0)是颜色,5是线的像素宽度
cv2.line(img,(0,0),(100,100),(255,0,0),5)

#画一个矩形框
cv2.rectangle(img,(100,100),(200,200),(255,192,203),-1)
cv2.circle(img,(150,150),50,thickness=5,color=(0,255,0))
cv2.ellipse(img,(300,300),(100,50),0,10,350,(0,255,255),-1)
#多线条的绘制
#先确定连接的点
#在矩阵变换
#最后绘制:为什么要加中括号应该是方便矩阵遍历
pts = np.array([[10,5],[20,30],[70,20],[50,10]],np.int32)
pts= pts.reshape((-1,1,2))
print([pts])

cv2.polylines(img,[pts],isClosed=True,color=(255,255,255),thickness=1)
cv2.putText(img,'XSWL',(10,500),cv2.FONT_HERSHEY_SIMPLEX,4,(249,204,226),2)

winname = 'example'

cv2.namedWindow(winname)
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindows(winname)

代码运行效果:

python +oponcv的line,rectangle(),circle(),ellipse(),polylines(),putText()函数_第2张图片

 

你可能感兴趣的:(CV)