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 初始化多维数组代码
Sep 06 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
django创建简单的页面响应实例教程
Sep 06 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
python中str内置函数用法总结
Dec 27 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 Python
python urllib和urllib3知识点总结
Feb 08 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
opencv 分类白天与夜景视频的方法
Jun 05 Python
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
python Tkinter的简单入门教程
PyQt5 显示超清高分辨率图片的方法
用Python提取PDF表格的方法
You might like
php&java(二)
2006/10/09 PHP
随时给自己贴的图片加文字的php代码
2007/03/08 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
python实现最小二乘法线性拟合
2019/07/19 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
django自带调试服务器的使用详解
2019/08/29 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
python线性插值解析
2020/07/05 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
酒店管理毕业生自荐信
2014/05/25 职场文书
还款承诺书范本
2015/01/20 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸