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将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、