树莓派应用--AI项目实战篇来啦-5.OpenCV绘画函数的使用

1. 介绍

        OpenCV作为一款功能强大的计算机视觉库,被广泛地应用于图像处理和计算机视觉领域。
除了在机器视觉和人工智能领域有者广泛的应用,OpenCV 还能够媲美艺术家的创造力,通过其强大的绘图函数,绘制出令人叹为观止的艺术画作。
        OpenCV中的绘图函数为我们提供了丰富多样的工具,能够绘制出各种形状和效果。例如,我们可以使用线条函数画出细腻的轮廓,使用填充函数给图像增添色彩和渐变效果,使用文本函数添加文字说明等等。这些绘图函数结合起来,让我们能够在图像中创造出各种想象力丰富的人物形象。
        除了线条和填充函数,OpenCV 还提供了文本函数,可以方便地在图像中添加文字说明或者签名。我们可以选择合适的字体、大小和位置, 我们的艺术画作增添独特的个性和风格。
        OpenCV 提供了丰富多样的绘图函数,赋予了我们绘制令人叹为观止的艺术画作的能力。通过灵活运用这些函数,我们可以创造出多样化、创新化的艺术形象。当然,艺术创作需要艺术家自身的创造力和个性的体现,OpenCV 只是辅助工具之一。无论如何,OpenCV 为我们打造艺术画作提供了更为便捷和丰富的方式和可能性,这也是现代科技给艺术创作带来的一大进步。

2. 操作步骤

1)画线

        要画一条线,只需要告诉函数这条线的起点和终点。即可画一条从左上方到右下角的线段。

cv2.line(image,starting cordinates, ending cordinates, color, thickness)
# 载入库
import cv2
import numpy as np
from matplotlib import pyplot as plt# 画一条5像素的对角蓝线
image = np.zeros((512,512,3), np.uint8)
#cv2.line(image, (startposition), (endposition), (Farbe der Linie), Linienbreite)
cv2.line(image, (0,0), (511,511), (255,127,0), 5)
cv2.line(image, (511,0), (0,511), (255,127,0), 5)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image),plt.title('Blue Line')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

2) 画矩形

        要画一个矩形,需要告诉函数的左上角顶点和右下角顶点的坐标。

# 绘制一个矩形
image = np.zeros((512,512,3), np.uint8)
# eine negative Linienbreite füllt das viereck aus
cv2.rectangle(image, (100,100), (300,250), (127,50,127), -1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image),plt.title('Rectangle')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

3) 画圆

       要面圆的话,只需要指定圆形的中心点坐标和半径大小。

cv2.cirlce(image, center, radius, color, fill)
image = np.zeros((512,512,3), np.uint8)
#cv2.circle(image, (Zentrum), Radius, (15,75,50), -1) 
cv2.circle(image, (350, 350), 100, (15,75,50), 10) 
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image),plt.title('Circle')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

4) 画椭圆

        画椭圆比较复杂,我们要多输入几个参数。

        一个参数是中心点的位置坐标。另一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演顺时针方向起始的角度和结束角度,如果是0和360,就是整个椭圆。查看cv2.ellipse()可以得到更多信息。

image = np.zeros((512,512,3), np.uint8)
cv2.ellipse(image,(256,256),(100,50),0,0,180,255,-1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image),plt.title('ellipse')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

5) 画多边形

        画多边形,需要指定每个顶点的坐标。用这些点的坐标构建一个大小等于行数X1,X2的数组,行数就是点的数目。这个数组的数据类型必须为int32。

image = np.zeros((512,512,3), np.uint8)# 让我们定义四个点
pts = np.array( [[10,50], [400,50], [90,200], [50,500]], np.int32)print(pts.shape)
# 现在让我们定义折线
pts = pts.reshape((-1,1,2))
print(pts.shape)cv2.polylines(image, [pts], True, (0,0,255), 3)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image),plt.title('Polygon')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

6)在图片上添加文字

        要在图片上绘制文字,需要设置下列参数:
        •要绘制的文字
        •你要绘制的位置
        •字体类型(通过查看cv2.putText()的文档找到支持的字体)
        • 字体的大小
        •文字的一般属性如颜色,粗细,线条的类型等。
        为了更好看一点推荐使用 linetype=cv2. LINE_AA。

image = np.zeros((512,512,3), np.uint8)cv2.putText(image, 'Hello World!', (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image),plt.title('Hello World!')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flask项目框架搭建

目录结构 blueprints python包,蓝图文件,相当于路由组的概念,方便模块化开发 例如auth.py文件 from flask import Blueprint, render_templatebp Blueprint("auth", __name__, url_prefix"/auth")bp.route("/login") d…

Python数据可视化常用工具,值得收藏!!!

我们了解了如何使用 Pandas 进行简单的绘图,使用 Pandas 自带的绘图功能能够快速地生成一些基本的图表,例如折线图、柱状图等.但为了实现更复杂或专业的可视化效果,我们通常还需要借助更为强大的绘图库——Matplotlib. 本篇文章将详细介绍如何结合 Matplotlib 和 Pandas 实现数…

Redis-缓存一致性

缓存双写一致性 更新策略探讨 面试题 缓存设计要求 缓存分类: 只读缓存:(脚本批量写入,canal 等)读写缓存 同步直写:vip数据等即时数据异步缓写:允许延时(仓库,物流&a…

C++: AVL树的实现

一.AVL树的旋转 AVL树是平衡搜索二叉树的一种。 平衡因子:节点右树的高度减左树的高度,AVL树规定平衡因子的绝对值小于2。若不在这个范围内,说明该树不平衡。 AVL树节点: struct AVLTreeNode {AVLTreeNode(const T& data …

数据结构--堆的深度解析

目录 引言 一、基本概念 1.1堆的概念 1.2堆的存储结构 1.3堆的特点 二、 堆的基本操作 2.1初始化 2.2创建堆 2.3插入元素 2.4删除元素 2.5堆化操作 2.6堆的判空 2.7获取堆顶元素 三、堆的常见应用 1. 优先队列 2. 堆排序 3. Top-k 问题 4. 图论中的应用 四…

rom定制系列------小米5x_miui12安卓11定制固件界面预览 小米5x第三方固件

💝💝💝此固件来源于客户卡刷固件定制。客户需要修改为线刷。并且修改账号锁功能。 可以让客户使用官方平台批量进行刷写。方便操作。 定制机型以及功能预览💝💝💝 小米5x版本miui12.5.8安卓11固件。此机型…

MySQL 连接

使用MySQL二进制方式连接 使用MySQL二进制方式进入到MySQL命令提示符下来连接MySQL数据库。 实例 以下是从命令行中连接MySQL服务器的简单实例: [roothost]# mysql -u root -p Enter password:******在登录成功后会出现 mysql> 命令提示窗口,你可以在…

Java 文件拷贝

1.小文件拷贝 实例代码: 上面程序运行的图示: 弊端:一次读一个字节,效率太慢。所以需要一次读取多个字节。 2.大文件拷贝 结果:

UE5运行时动态加载场景角色动画任意搭配-全流程代码(四)

UE5运行时动态加载场景、角色、角色动画、相机动画任意搭配,Android、iOS也可以跑,横竖屏兼容,手机竖屏: 1、场景切换UWorld处理 在通过OpenLevel进行场景切换的时候,UWorld会发生变化,需要我们获取正确的UWorld。 1、在GameInstance监听Level加载 void UMyGameInsta…

数据结构——复杂度

目录 数据结构前言 数据结构 算法 算法效率 时间复杂度 大O的渐进表示法 示例1 示例2 示例3 示例4 示例5 示例6 示例7 空间复杂度 示例1 示例2 示例3 示例4 常见复杂度对比 旋转数组 优化1 优化2 这一篇文章我们就开始数据结构知识的学习! 数据…

stm32单片机个人学习笔记10(TIM编码器接口)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

Jetpack-Room

Room是Android Jetpack中的一个组件,它提供了一个抽象层,帮助开发者在本地数据库(如SQLite)上进行持久化数据存储。Room通过简化数据库操作,使得数据管理变得更加容易和高效。 Room重要的概念 实体(Entit…

Python即时获取上证指数信息并发送邮件到指定邮箱

最近股市振荡,股民会时不时查看一下上证指数信息,但是繁忙的工作却时不是让人忘记了,错过了投资的最佳时机,这时就可以通过Python来爬取网站上的上证指数,并发送到指定的邮箱,这样就不用上指定网页也以获取…

网络断开导致SSH会话和服务端任务终止的原因及使用screen详解

在进行深度学习任务时,常常在本地通过ssh连接远程服务器进行炼丹任务。当我在pycharm上远程连接到服务器上进行训练时,由于网络不稳定使得SSH断开连接,我原以为服务器不会受影响。通过nvidia-smi命令发现GPU占用为0,这才发现任务终…

稀土阻燃协效剂 - 阻燃

金士镧稀土阻燃协效剂的技术衬垫: 金士镧KingCela 稀土阻燃协效剂KCL-FR-06xx系列产品,凭借独特的稀土4f电子层结构, 可协效磷氮阻燃剂,卤系阻燃剂阻燃剂在高分子材料(橡胶,塑料,涂层,胶黏剂&a…

『网络游戏』服务器启动逻辑【16】

新建Visual Studio工程命名为NetGameServer 重命名为ServerStart.cs 创建脚本: 编写脚本:ServerRoot.cs 编写脚本:ServerStart.cs 新建文件夹 调整脚本位置 新建文件夹 新建文件夹网络服务 创建脚本:NetSvc.cs 编写脚本&#xff1…

使用 KVM 在 Xubuntu 上创建 Windows 10 虚拟机

目录 前言说明注意准备 iso官网思博主(嘻嘻)拖动到虚拟机里面启动 virt-manager创建虚拟机选择本地安装介质选择 iso配置 内存 和 CPU选择 创建的虚拟机 保存的位置启动虚拟机看到熟悉的 Win10界面前言 XUbuntu安装OpenSSH远程连接服务器 远程连接之MobaXterm安装使用 虚拟化技…

DS线性表之队列的讲解和实现(5)

文章目录 前言一、队列的概念及结构二、队列的实现队列节点和队列初始化销毁判断是否为空入队列出队列获取队头队尾数据获取队列元素个数 三、实际使用效果总结 前言 队列实现源代码   队列是我们遇到的第二个实用数据结构,栈和队列地位等同 一、队列的概念及结构…

一篇python常见的Pandas的数据功能的使用

当我们学习了如何使用 Pandas 进行数据的导入与导出,这为我们后续的数据处理打下了基础.此次我们将重点讨论数据选择与过滤.通过掌握这一部分的知识,你将能够轻松地从复杂的数据集中提取出所需的信息.接下来,我们将通过一些实例来逐步了解这些操作. 这里插播一条粉丝福利&#…

三、AOP

文章目录 1. AOP(概念)2. AOP(底层原理)2.1 AOP 底层使用动态代理2.2 AOP(JDK动态代理) 3. AOP(术语)3.1 连接点3.2 切入点3.3 通知(增强)3.4 切面 4. AOP操作…