python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)


Posted in Python onApril 12, 2021

最近学了下 python opencv,分享下使用 opencv 在图片上绘制常用图形的方法。

python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)

案例中实现了在图片中添加线段、圆形、矩形、椭圆形以及添加文字的方法,使用 opencv2 实现的。

实现方法

1)画线段 cv.line

在图片中绘制一段直线

# 绘制线段
# 参数1:图片
# 参数2:起点
# 参数3:终点
# 参数4:BGR颜色
# 参数5:宽度
cv2.line(img, (60, 40), (90, 90), (255, 255, 255), 2);

参数说明

 

参数 说明
参数1 img 原图片
参数2 (60, 40) 线段起点坐标(像素)
参数3 (90, 90) 线段终点坐标(像素)
参数4 (255, 255, 255) BGR颜色(0 - 255)
参数5 2 线段宽度

2)画圆形 cv.circle

在图片中绘制圆形

# 绘制圆形
# 参数1:图片
# 参数2:圆心
# 参数3:半径
# 参数4:BGR颜色
# 参数5:宽度 值为-1时填充
cv2.circle(img, (140, 120), 60, (0, 0, 255), 2);

参数说明

 

参数 说明
参数1 img 原图片
参数2 (140, 120) 圆心的坐标(像素)
参数3 60 圆的半径(像素)
参数4 (0, 0, 255) BGR颜色(0 - 255)
参数5 2 线段宽度,为-1时进行填充

3)画矩形 cv.rectangle

在图片中绘制矩形

# 绘制矩形
# 参数1:图片
# 参数2:左上角
# 参数3:右下角
# 参数4:BGR颜色
# 参数5:宽度 值为-1时填充
cv2.rectangle(img, (220, 50), (380, 220), (0, 255, 0), 2);

参数说明

 

参数 说明
参数1 img 原图片
参数2 (220, 50) 左上角的坐标(像素)
参数3 (380, 220) 右下角的坐标(像素)
参数4 (0, 255, 0) BGR颜色(0 - 255)
参数5 2 线段宽度,为-1时进行填充

4)画椭圆形 cv.ellipse

在图片中绘制椭圆形,这里参数就比较多了…

# 绘制椭圆
# 参数1:图片
# 参数2:圆心
# 参数3:横纵轴长
# 参数4:倾斜角度
# 参数5:绘制起点角度
# 参数6:绘制终点角度
# 参数7:BGR颜色
# 参数8:宽度 值为-1时填充
cv2.ellipse(img, (60, 20), (60, 20), 0, 0, 360, (255, 255, 255), 2);

参数说明

 

参数 说明
参数1 img 原图片
参数2 (60, 20) 椭圆中心坐标(像素)
参数3 (60, 20) 椭圆横、纵的距离(像素)
参数4 0 椭圆倾斜角度(0-360)
参数5 0 绘制起点角度(0-360)
参数6 0 绘制终点角度(0-360)
参数7 (255, 255, 255) BGR颜色(0 - 255)
参数8 2 线段宽度,为-1时进行填充

5)添加文本 cv.putText

给图片添加文本显示内容

# 添加文字
# 参数1:图片
# 参数2:文本内容
# 参数3:文字位置
# 参数4:文字类型
# 参数5:文字大小
# 参数6:BGR颜色
# 参数7:文字粗细
cv2.putText(img, "phone", (15, 30), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 1);

参数说明

 

参数 说明
参数1 img 原图片
参数2 “phone” 文本内容
参数3 (15, 30) 文本左上角坐标位置(像素)
参数4 cv2.FONT_HERSHEY_COMPLEX 文字类型
参数5 1 文字大小
参数7 (255, 255, 255) BGR颜色(0 - 255)
参数8 1 字体粗细

文字类型主要有下面几种:

1、cv.FONT_HERSHEY_SIMPLEX 正常尺寸无衬线
2、cv.FONT_HERSHEY_PLAIN 小尺寸无衬线
3、cv.FONT_HERSHEY_DUPLEX 正常尺寸(类型 1 的复制版)
4、cv.FONT_HERSHEY_COMPLEX 正常尺寸有衬线
5、cv.FONT_HERSHEY_TRIPLEX 正常尺寸有衬线(类型 4 的复杂版)
6、cv.FONT_HERSHEY_COMPLEX_SMALL (类型 4 的小尺寸)
7、cv.FONT_HERSHEY_SCRIPT_SIMPLEX 手写风格
8、cv.FONT_HERSHEY_SCRIPT_COMPLEX (类型 7 的复杂版)

以上字体可以试一下,可以看到不同的效果 (^_ ^)

完整代码

import cv2

# 读取图片。
img = cv2.imread("img.jpeg");

# 绘制线段
# 参数1:图片
# 参数2:起点
# 参数3:终点
# 参数4:BGR颜色
# 参数5:宽度
cv2.line(img, (60, 40), (90, 90), (255, 255, 255), 2);

# 绘制圆形
# 参数1:图片
# 参数2:圆心
# 参数3:半径
# 参数4:BGR颜色
# 参数5:宽度 值为-1时填充
cv2.circle(img, (140, 120), 60, (0, 0, 255), 2);

# 绘制椭圆
# 参数1:图片
# 参数2:圆心
# 参数3:横纵轴长
# 参数4:倾斜角度
# 参数5:绘制起点角度
# 参数6:绘制终点角度
# 参数7:BGR颜色
# 参数8:宽度 值为-1时填充
cv2.ellipse(img, (60, 20), (60, 20), 0, 0, 360, (255, 255, 255), 2);

# 绘制矩形
# 参数1:图片
# 参数2:左上角
# 参数3:右下角
# 参数4:BGR颜色
# 参数5:宽度 值为-1时填充
cv2.rectangle(img, (220, 50), (380, 220), (0, 255, 0), 2);

# 添加文字
# 参数1:图片
# 参数2:文本内容
# 参数3:文字位置
# 参数4:文字类型
# 参数5:文字大小
# 参数6:BGR颜色
# 参数7:文字粗细
cv2.putText(img, "phone", (15, 30), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 1);
cv2.putText(img, "36.4C", (250, 250), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2);

# 显示图像
cv2.imshow("title", img);

# 进程不结束,一直保持显示状态
cv2.waitKey(0);

#销毁所有窗口
cv2.destroyAllWindows();

到此这篇关于python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)的文章就介绍到这了,更多相关python opencv图形绘制内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python命令行参数sys.argv使用示例
Jan 28 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Python学习思维导图(必看篇)
Jun 26 Python
Python实现读取json文件到excel表
Nov 18 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
python定时关机小脚本
Jun 20 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
python机器学习库xgboost的使用
Jan 20 Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 Python
python利用后缀表达式实现计算器功能
Feb 22 Python
用Python实现屏幕截图详解
Jan 22 Python
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
python Tkinter的简单入门教程
PyQt5 显示超清高分辨率图片的方法
用Python提取PDF表格的方法
You might like
PHP 输出简单动态WAP页面
2009/06/09 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php判断是否为json格式的方法
2014/03/04 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
Python实现的爬虫功能代码
2017/06/24 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
python生成圆形图片的方法
2020/03/25 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
Windows下python3.6.4安装教程
2018/07/31 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
美的官方商城:Midea
2016/09/14 全球购物
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
办公室文秘自我评价
2013/09/21 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
如何写观后感
2015/06/19 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android