opencv|树莓派 opencv学习记录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)图片对象,左上角坐标,右下角坐标,颜色,宽度 |
椭圆 | 【opencv|树莓派 opencv学习记录DAY-2-图像绘画】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函数
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
一个cv函数
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 pltimg = 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()
效果展示:
文章图片
推荐阅读
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 丰盛派创始人安裘密语录
- 【文魁大脑实用记忆第五期】贤派张丽琼第8次案例一地理记忆有汽泡图
- 韵达基于云原生的业务中台建设 | 实战派
- 浙派名师-丁圆伟
- Python+树莓派制作IoT(物联网)门控设备
- 【思维导图实战派】刻意练习计划“遇见……”|【思维导图实战派】刻意练习计划“遇见……” 1/300 人教版数学五下第三单元《正方体和长方体的认识》
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- 青岛机情派iPhone5s指纹识别修复