python opencv:绘图 基本图形
参数说明
• img:你想要绘制图形的那幅图像。
• color:形状的颜色。以 RGB 为例,需要传入一个元组,例如:( 255,0,0)代表蓝色。对于灰度图只需要传入灰度值。
• thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形就会被填充。默认值是 1.
• linetype:线条的类型, 8 连接,抗锯齿等。默认情况是 8 连接。 cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。
画线
要画一条线,你只需要告诉函数这条线的起点和终点。我们下面会画一条从左上方到右下角的蓝色线段
cv2.line(img,(0,0),(511,511),(255,0,0),5)
画矩形
要画一个矩形,你需要告诉函数的左上角顶点和右下角顶点的坐标。这次我们会在图像的右上角话一个绿色的矩形
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
画圆
要画圆的话,只需要指定圆形的中心点坐标和半径大小。我们在上面的矩形中画一个圆
cv2.circle(img,(447,63), 63, (0,0,255), -1)
画椭圆
画椭圆比较复杂,我们要多输入几个参数。
一个参数是中心点的位置坐标。下一个参数是长轴和短轴的长度。
椭圆沿逆时针方向旋转的角度。
椭圆弧演顺时针方向起始的角度和结束角度,如果是 0 很 360,就是整个椭圆。
查看cv2.ellipse() 可以得到更多信息。
下面的例子是在图片的中心绘制半个椭圆
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
画多边形
画多边形,需要指点每个顶点的坐标。
用这些点的坐标构建一个大小等于行数 X1X2 的数组,行数就是点的数目。
这个数组的数据类型必须为 int32。
这里画一个黄色的具有四个顶点的多边形
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts=pts.reshape((-1,1,2))
这里 reshape 的第一个参数为-1, 表明这一维的长度是根据后面的维度的计算出来的
如果第三个参数是 False,我们得到的多边形是不闭合的(首尾不相连)
cv2.polylines() 可以被用来画很多条线。
只需要把想要画的线放在一个列表中,将这个列表传给函数就可以了。
每条线都会被独立绘制。这会比用cv2.line() 一条一条的绘制要快一些
添加文字
• 你要绘制的文字
• 你要绘制的位置
• 字体类型(通过查看 cv2.putText() 的文档找到支持的字体)
• 字体的大小
• 文字的一般属性如颜色,粗细,线条的类型等。为了更好看一点推荐使用linetype=cv2.LINE_AA。
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)
注意
所 有 的 绘 图 函 数 的 返 回 值 都 是 None,
所 以 不 能 使 用 img = cv2.line(img,(0,0),(511,511),(255,0,0),5)
python opencv:绘图 基本图形的更多相关文章
- 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化
一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...
- 【python+opencv】直线检测+圆检测
Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...
- 10个Python 统计报表/图表图形类库
matplotlib,官网:http://matplotlib.sourceforge.net/,Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模 ...
- Python + opencv 实现图片文字的分割
实现步骤: 1.通过水平投影对图形进行水平分割,获取每一行的图像: 2.通过垂直投影对分割的每一行图像进行垂直分割,最终确定每一个字符的坐标位置,分割出每一个字符: 先简单介绍一下投影法:分别在水平和 ...
- 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台
搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...
- .NET + OpenCV & Python + OpenCV 配置
最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省 ...
- RPi 2B python opencv camera demo example
/************************************************************************************** * RPi 2B pyt ...
- python常用绘图软件包记录
在没有使用python之前,觉得matlab的绘图功能还算可以~但现在发现python的绘图包真的好强大,绘制出的图像非常专业漂亮,但具体使用还有待学习,这里记录学习过程中遇到的python绘图包,以 ...
- Python+OpenCV图像处理(一)
Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...
- python opencv show图片,debug技巧
debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...
随机推荐
- 找到所有的txt文件并删除
1.find /oldboy/ -type f -name "*.txt" -delete 2.find /oldboy/ -type f -name "*.txt&qu ...
- [MC] 我的世界 craftbukkit-1.12.2 卡爆
昨天晚上的时候,和朋友玩我的世界 结果我这边卡爆了,牛圈里面的牛都是一动一动的... 然后我登陆服务器,发现CPU爆炸了... 100%的使用率 mstsc都卡爆了 内存占用了800多MB (服务器是 ...
- 题解【Codeforces438D】The Child and Sequence
题目描述 At the children's day, the child came to Picks's house, and messed his house up. Picks was angr ...
- Go网络编程UDP
package main import ( "fmt" "net" "strings" ) // UDP server func main( ...
- HTML学习(14)表单
HTML 表单用于收集不同类型的用户输入. HTML 表单 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中输入内容,比如:文本域(textarea).下拉列表.单选框(radio-butt ...
- go使用错误概览
1. 解决:GO语言中要提供给外面访问的方法或是结构体必须是首字母大写.这个结构体只有结构体名大写了,而里面的字段没有首字母大写,而GO语言在模板调用时应该认为是两个不同的过程,所以找不到值.于是把结 ...
- linux下实现keepalived+nginx高可用
1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...
- 【PAT甲级】1111 Online Map (30分)(dijkstra+路径记录)
题意: 输入两个正整数N和M(N<=500,M<=N^2),分别代表点数和边数.接着输入M行每行包括一条边的两个结点(0~N-1),这条路的长度和通过这条路所需要的时间.接着输入两个整数表 ...
- 【做题笔记】P1531 I Hate It
线段树裸题. 需要注意的地方: 对于一次单点修改操作,需要先判断是否需要修改.注意题目中是"如果当前A学生的成绩低于B,则把ID为A的学生的成绩更改为B,否则不改动.".所以判断条 ...
- JEECG用户录入时用户账号长度修改
JEECG用户账号默认长度为10字符,但实际运用中很大可能大于10字符. 解决方法: 1.找到\webpage\system\user\user.jsp文件 <input id="us ...