Python学习笔记第七十七天(OpenCV绘画功能)

2023-12-16 19:45

本文主要是介绍Python学习笔记第七十七天(OpenCV绘画功能),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python学习笔记第七十七天

  • OpenCV绘画功能
    • 画线
    • 画矩形
    • 画圆
    • 画椭圆
    • 画多边形
    • 向图像添加文本
    • 向图像添加对角线
  • 后记

OpenCV绘画功能

画线

在OpenCV中,我们可以使用cv2.line()函数来绘制一条线。该函数接受以下参数:

  • img:要在其上绘制线条的图像。
  • pt1:线条的起始点坐标。
  • pt2:线条的结束点坐标。
  • color:线条的颜色。对于彩色图像,可以使用BGR格式表示颜色,例如(255, 0, 0)表示蓝色。
  • thickness:线条的粗细。
  • lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  • shift:线条的精度。

下面是一个简单的例子,演示如何在图像上绘制一条蓝色的线:

import cv2
import numpy as np# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")# 绘制一条蓝色的线
cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)# 显示图像
cv2.imshow("Line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

画矩形

在OpenCV中,我们可以使用cv2.rectangle()函数来绘制矩形。该函数接受以下参数:

  • img:要在其上绘制矩形的图像。
  • pt1:矩形的左上角坐标。
  • pt2:矩形的右下角坐标。
  • color:矩形的颜色。对于彩色图像,可以使用BGR格式表示颜色。
  • thickness:矩形边框的粗细。如果thickness为负数(通常为-1),则绘制填充矩形。
  • lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  • shift:线条的精度。

下面是一个简单的例子,演示如何在图像上绘制一个蓝色的矩形:

import cv2
import numpy as np# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")# 绘制一个蓝色的矩形
cv2.rectangle(img, (128, 128), (480, 480), (255, 0, 0), 3)# 显示图像
cv2.imshow("Rectangle", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

画圆

在OpenCV中,我们可以使用cv2.circle()函数来绘制圆形。该函数接受以下参数:

  • img:要在其上绘制圆形的图像。
  • center:圆心的坐标。
  • radius:圆的半径。
  • color:圆形的颜色。对于彩色图像,可以使用BGR格式表示颜色。
  • thickness:圆的边框粗细。如果thickness为负数(通常为-1),则绘制填充圆形。
  • lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  • shift:线条的精度。

下面是一个简单的例子,演示如何在图像上绘制一个蓝色的圆形:

import cv2
import numpy as np# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")# 绘制一个蓝色的圆形
cv2.circle(img, (256, 256), 100, (255, 0, 0), 3)# 显示图像
cv2.imshow("Circle", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

画椭圆

在OpenCV中,我们可以使用cv2.ellipse()函数来绘制椭圆。该函数接受以下参数:

  • img:要在其上绘制椭圆的图像。
  • center:椭圆中心的坐标。
  • axes:椭圆的长轴和短轴。
  • angle:椭圆的旋转角度。
  • startAngle:起始角度。
  • endAngle:结束角度。
  • color:椭圆的颜色。对于彩色图像,可以使用BGR格式表示颜色。
  • thickness:椭圆边框的粗细。如果thickness为负数(通常为-1),则绘制填充椭圆。
  • lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  • shift:线条的精度。

下面是一个简单的例子,演示如何在图像上绘制一个蓝色的椭圆:

import cv2
import numpy as np# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")# 绘制一个蓝色的椭圆
cv2.ellipse(img, (256, 256), (100, 50), 0, 0, 180, (255, 0, 0), 3)# 显示图像
cv2.imshow("Ellipse", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

画多边形

在OpenCV中,我们可以使用cv2.polylines()函数来绘制多边形。该函数接受以下参数:

  • img:要在其上绘制多边形的图像。
  • points:多边形的顶点坐标列表。每个顶点都是一个(x, y)坐标对。
  • isClosed:是否闭合多边形。如果为True,则多边形闭合;如果为False,则不闭合。
  • color:多边形的颜色。对于彩色图像,可以使用BGR格式表示颜色。
  • thickness:多边形边框的粗细。如果thickness为负数(通常为-1),则绘制填充多边形。
  • lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  • shift:线条的精度。

下面是一个简单的例子,演示如何在图像上绘制一个蓝色的三角形:

import cv2
import numpy as np# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")# 绘制一个蓝色的三角形
points = np.array([[100, 100], [200, 100], [150, 200]], dtype="int32")
cv2.polylines(img, [points], True, (255, 0, 0), 3)# 显示图像
cv2.imshow("Polygon", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

向图像添加文本

在OpenCV中,我们可以使用cv2.putText()函数向图像添加文本。该函数接受以下参数:

  1. img:要在其上添加文本的图像。
  2. text:要添加的文本内容。
  3. org:文本字符串的左上角坐标(即基线坐标)。它是一个包含两个元素(x坐标和y坐标)的元组,例如(x, y)。
  4. fontFace:字体类型。OpenCV支持多种字体类型,包括HersheySimplex、HersheyComplex等。
  5. fontScale:字体大小。这是一个缩放因子,表示字体的宽度和高度与默认大小的比例。默认情况下,字体大小为1.0。
  6. thickness:可选参数,用于指定文本线条的粗细。如果thickness为负数(通常为-1),则绘制填充文本。
  7. lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  8. bottomLeftOrigin:布尔值,当它为True时,图像数据原点位于左下角。默认值为False。

在使用cv2.putText()函数时,需要确保图像是可写的,并且图像的数据类型和范围适合文本的绘制。此外,还需要根据具体的字体类型和字体大小选择合适的参数值。

以下是一个使用cv2.putText()函数向图像添加文本的简单示例:

import cv2
import numpy as np# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")# 在图像上添加蓝色的文本
cv2.putText(img, "Hello World", (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 0, 0), 2)# 显示图像
cv2.imshow("Text", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

向图像添加对角线

在OpenCV中,我们可以使用cv2.line()函数向图像添加对角线。该函数接受以下参数:

  • img:要在其上添加对角线的图像。
  • pt1:对角线的起点坐标。
  • pt2:对角线的终点坐标。
  • color:对角线的颜色。对于彩色图像,可以使用BGR格式表示颜色。
  • thickness:对角线线条的粗细。
  • lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  • shift:线条的精度。

下面是一个简单的例子,演示如何在图像上添加一条蓝色的对角线:

import cv2
import numpy as np# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")# 添加一条蓝色的对角线
cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)# 显示图像
cv2.imshow("Diagonal Line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

后记

今天学习的是Python OpenCV绘画功能学会了吗。 今天学习内容总结一下:

  1. 画线
  2. 画矩形
  3. 画圆
  4. 画椭圆
  5. 画多边形
  6. 向图像添加文本
  7. 向图像添加对角线

这篇关于Python学习笔记第七十七天(OpenCV绘画功能)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/501670

相关文章

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息