php画直线圆矩形,线段&矩形&圆形&文字&图片 绘制

线段绘制

利用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)

结果:

ddc154d4563237a8b2bee298e16f4c92.png

矩形&圆形&椭圆&任意多边形绘制

任意多边形实质就是折线围成的封闭图形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)

结果:

3b3fb84c2aee20fd6b6d58b15e6949f4.png

文字绘制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)

结果:

9f03a85870814e49e16f40859243a8e9.png

图片绘制

图片的绘制实质上就是进行像素循环替换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)

结果:

059eb9c9ec1cf1fb91c0fae3118f8466.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值