图像绘画-树莓派 Opencv-基于Python学习记录DAY-2

绘制直线、圆、矩形、椭圆、多边形、文字

图形函数
直线cv.line(img,start,end,color,thickness)
图片对象,起始坐标(x轴,y轴),结束坐标,颜色,宽度

cv.circle(img,centerpoint, r, color, thickness)

图片对象,中心点坐标,半径大小,颜色,宽度
矩形

cv.rectangle(img,leftupper,rightdown,color,thickness)

图片对象,左上角坐标,右下角坐标,颜色,宽度
椭圆

cv.ellipse(img,centerpoint,axesLength,angle,stratAngle,endAngle,color,thickness)

图片对象,中心点坐标,长短轴,顺时针旋转度数,开始角度,颜色,宽度
文字

cv.putText(img,text,station, font, fontsize,color,thickness,lineType)

图片对象,文字,坐标,字体,大小,颜色,宽度,线型

这里给出font的样式:

cv.FONT_HERSHEY_SIMPLEX
cv.FONT_HERSHEY_PLAIN
cv.FONT_HERSHEY_DUPLEX
cv.FONT_HERSHEY_COMPLEX
cv.FONT_HERSHEY_TRIPLEX
cv.FONT_HERSHEY_COMPLEX_SMALL
cv.FONT_HERSHEY_SCRIPT_SIMPLEX
cv.FONT_HERSHEY_SCRIPT_COMPLEX
cv.FONT_ITALIC
 

多边形绘画

需要用到2个np函数和1个cv函数

array创建各点坐标的数组
np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)# array必须是int32型
reshape变换数组排列格式,将数组设置成cv函数中通用格式
pts = pts.reshape((-1,1,2,))
#括号里的3给参数分别是行数、列数、维数,意思是以一列显示这个二维数组

这里举个简单的例子

np.arange(16).reshape(2,8) #生成16个自然数,以2行8列的形式显示
# Out: 
# array([[ 0,  1,  2,  3,  4,  5,  6,  7],
#       [ 8,  9, 10, 11, 12, 13, 14, 15]])

参数为-1时,会自动计算
np.arange(16).reshape(2,-1) #生成16个自然数,以2行x列的形式显示
x = 16 / 2 = 8
cv2.polylines将各点连线
cv2.polylines(img,array,isClosed=True/False, color, thickness)
#图片对象,点坐标,是否闭合,颜色,宽度

例程:


pts = np.array([[10, 10], [80, 10], [80, 100], [10, 100]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv2.polylines(img, [pts], True, (255, 255, 0), 1)

综合示例:

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img = np.zeros((512,512,3),np.uint8)
#img = cv.imread('islands.jpg',0)
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.circle(img,(50,50), 30, (255,55,0), 10)
cv.putText(img,"text",(36,400),cv.FONT_HERSHEY_SCRIPT_COMPLEX,4,(55,55,0),2,cv.LINE_AA)
cv.ellipse(img,(333,333),(100,50),0,0,360,(255,222,222),-1)
pts = np.array([[10, 10], [80, 10], [80, 150], [10, 200]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(img, [pts], True, (255, 255, 0), 1)

cv.imshow('image',img)
cv.waitKey(0)
plt.imshow(img[:,:,::-1])

plt.show()

效果展示:

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉山有客不自赏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值