线段绘制
利用cv2.line()函数import cv2
import numpy as np
newImageInfo = (500,500,3)
dst = np.zeros(newImageInfo,np.uint8)
# 绘制线段(目标图片数据,起始位置,终止为止,颜色BGR,宽度,线段类型)
cv2.line(dst,(100,300),(400,300),(0,255,0),20,cv2.LINE_AA)
# 线段绘制三角形
cv2.line(dst,(200,150),(50,250),(25,100,255))
cv2.line(dst,(50,250),(400,380),(25,100,255))
cv2.line(dst,(400,380),(200,150),(25,100,255))
cv2.imshow('dst',dst)
cv2.waitKey(0)
结果:
矩形&圆形&椭圆&任意多边形绘制
任意多边形实质就是折线围成的封闭图形import cv2
import numpy as np
newImageInfo = (500,500,3)
dst = np.zeros(newImageInfo,np.uint8)
# 矩形绘制(目标图片数据,左上角,右下角,颜色BGR,是否填充:-1为填充、大于零时为线条宽度)
cv2.rectangle(dst,(50,100),(200,300),(255,0,0),5)
# 圆形绘制(目标图片数据,圆心位置,半径,颜色,是否填充:-1为填充、大于零时为线条宽度)
cv2.circle(dst,(250,250),(50),(0,255,0),2)
# 椭圆(目标图片数据,圆心位置,长短轴长度,偏转角度,起始角度,终止角度,颜色BGR,是否填充:-1为填充、大于零时为线条宽度)
cv2.ellipse(dst,(256,256),(150,100),0,0,180,(255,255,0),-1)
# 任意多边形
points = np.array([[150,50],[140,140],[200,170],[250,250],[150,50]],np.int32)
print(points.shape)
points = points.reshape((-1,1,2)) # 矩阵转置,转成顶点数×1×2维的矩阵
print(points.shape)
cv2.polylines(dst,[points],True,(0,255,255)) # 折线绘制(目标图片数据,顶点矩阵,是否闭合,颜色BGR)
cv2.imshow('dst',dst)
cv2.waitKey(0)
结果:
文字绘制import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.rectangle(img,(200,100),(500,400),(0,255,0),3)
# 文字绘制(目标图片数据,文字内容,写入坐标,字体,字体大小,颜色BGR,粗细,线段类型)
cv2.putText(img,'this is flow',(100,300),font,1,(200,100,255),2,cv2.LINE_AA)
cv2.imshow('src',img)
cv2.waitKey(0)
结果:
图片绘制
图片的绘制实质上就是进行像素循环替换import cv2
img = cv2.imread('image0.jpg',1)
height = int(img.shape[0]*0.2) # 新高度
width = int(img.shape[1]*0.2) # 新宽度
imgResize = cv2.resize(img,(width,height)) # 缩放图片
for i in range(0,height):
for j in range(0,width):
img[i+200,j+350] = imgResize[i,j] # 遍历新图数据,写入替换原图片的像素
cv2.imshow('src',img)
cv2.waitKey(0)
结果: