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学习笔记_数据排序方法
May 22 Python
python监控网站运行异常并发送邮件的方法
Mar 13 Python
简单介绍Python中的RSS处理
Apr 13 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
使用Python对Csv文件操作实例代码
May 12 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
Python requests模块session代码实例
Apr 14 Python
了解一下python内建模块collections
Sep 07 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
Python+DeOldify实现老照片上色功能
Jun 21 Python
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
python Tkinter的简单入门教程
PyQt5 显示超清高分辨率图片的方法
用Python提取PDF表格的方法
You might like
PHP安装攻略:常见问题解答(一)
2006/10/09 PHP
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
python三元运算符实现方法
2013/12/17 Python
python实现将文本转换成语音的方法
2015/05/28 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
企业管理部经理岗位职责
2013/12/24 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
舞出我人生观后感
2015/06/16 职场文书
文艺委员竞选稿
2015/11/19 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏