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 相关文章推荐
Django实现自定义404,500页面教程
Mar 26 Python
Python遍历文件夹和读写文件的实现方法
May 10 Python
Python使用pickle模块实现序列化功能示例
Jul 13 Python
Python对切片命名的实现方法
Oct 16 Python
Python类装饰器实现方法详解
Dec 21 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
Python计算矩阵的和积的实例详解
Sep 10 Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 Python
jupyter 添加不同内核的操作
Feb 06 Python
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
python Tkinter的简单入门教程
PyQt5 显示超清高分辨率图片的方法
用Python提取PDF表格的方法
You might like
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
Vue实现购物车功能
2017/04/27 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
Python实现的HTTP并发测试完整示例
2020/04/23 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
给领导的检讨书
2014/02/16 职场文书
项目合作协议书范本
2014/04/16 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
街道务虚会发言材料
2014/10/20 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
刑事申诉状范文
2015/05/20 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书