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爬取Coursera课程资源的详细过程
Nov 04 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
python实践项目之监控当前联网状态详情
May 23 Python
详解Django定时任务模块设计与实践
Jul 24 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
python实现while循环打印星星的四种形状
Nov 23 Python
Python通过socketserver处理多个链接
Mar 18 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
Python获取android设备cpu和内存占用情况
Nov 15 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
django注册用邮箱发送验证码的实现
Apr 18 Python
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
python Tkinter的简单入门教程
PyQt5 显示超清高分辨率图片的方法
用Python提取PDF表格的方法
You might like
星际争霸任务指南——虫族
2020/03/04 星际争霸
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
javascript textContent与innerText的异同分析
2010/10/22 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
敏捷开发的主要原则都有哪些
2015/04/26 面试题
三个Unix的命令面试题
2015/04/12 面试题
大学学习生活感言
2014/01/18 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
学习两会精神心得范文
2014/03/17 职场文书
项目合作协议书
2014/04/16 职场文书
住宅使用说明书
2014/05/09 职场文书
母亲节演讲稿
2014/05/27 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
JS数组的常用方法整理
2021/03/31 Javascript